本程序皆经过本人上机测试正常后发出;本意是能让PLC初学者迅速掌握西门子S7-200PLC高速计数器的基本使用方法,所以程序尽量加以简化,以便大家学习;同时也希望能起到抛砖引玉的效果,多得到PLC高人的指点,使自己有更多的领悟,结识更多的朋友、导师。
程序通过先设定计数器的值,本例中设定值为13;按设备启动按钮I0.1启动设备,运行后通过信号输入点I0.0进行计数,当计数当前值等于设定值13时,输出点断开,设备运行停止。I0.2为设备停止按钮。
程序如下:
LD SM0.1
MOVB 16#C8, SMB37
HDEF 0, 0
MOVD +0, SMD38
HSC0
上述程序注解:(1)对高数记数器HSC0初始化,写入控制字节(16#C8含义为:要求进行初始值设定;不装入预设值;运 行中不要求更改计数方向;计数器类型为增。)
(2)执行HDEF指令,进行高速计数器工作模式的选定设置(计数器为HSC0;模式为0)
(3)初始值设定:装载高数记数器初始值为0
(4)执行HSC指令,写入HSC0设置。
LDNM14.0
EU
MOVB 16#C8, SMB37
MOVD +0, SMD38
HSC0
上述程序注解:当记速值达到要求值时,M14.0复位,高速计数器计数将复位为初始值,以备下次计数使用。
LDD< HC0, +13
= M14.0
上述程序注解:当计数器值小于13 时,M14.0始终处于置位状态。
LD I0.1
O Q0.0
AN I0.2
A M14.0
= Q0.0
上述程序注解:I0.1为设备启动信号;I0.1为设备停止信号。高速计数器累计值达到13 时,设备运行停止。
西门子S7-200PLC高速计数器的使用方法(二)
本例程序设计的背景:(中断单点控制)
程序是通过一个板材自动定长剪切设备工作程序简单设计进行高数计数器和中断指令的使用。
工作要求为:启动设备,料滚电机工作带动板材进行送料,同时由计数器记录长度脉冲信号,当达到脉 冲预设值时,即板材设定长度时,中断指令发信号,停止料滚电机工作,执行压料、裁 剪,裁剪完成后,压料阀和料剪同时复位,料滚电机工作,进行下一次裁剪,周而复始。
程序拓展:可根据实际需要设计成钢板的定长裁剪;或流量的控制。
通过本程序学习,可加深高数计数器指令和中断指令的使用了解。I0.0为计数脉冲输入点。
主程序:
Network 1 // 开机调用子程序,进行高数记速器的参数设定
LD SM0.0
CALL SBR0
Network 2 // 送料电机启动控制
LD I1.1
O T39
S Q0.0, 1
Network 3 // 送料电机停止控制
LD I1.0
R Q0.0, 3
Network 4 // 压紧时间设置
LD Q0.1
TONT37, 15
Network 5
LD T37
S Q0.2, 1
Network 6 // 剪裁时间设置
LD Q0.2
TONT38, 10
Network 7 // 压板、裁刀复位时间设定
LD T38
LD M0.0
AN T39
OLD
R Q0.1, 1
TONT39, 20
= M0.0
R Q0.2, 1
Network 8 // 程序调试计数器运行检测;实际中可删除。
LD SM0.0
MOVD HC0, VD30
子例行程序及注解:
第一条为设定高数计数器参数:16#E8=11101000。含义是:启用计数器;可更新当前值即SMD38;允许更新设定值即SMD42;不更改计数方向。
LD SM0.1
MOVB 16#E8, SMB37 设定高数计数器参数;
MOVD +0, SMD38设定当前值SMD38=0
MOVD +20, SMD42 设定预装值SMD42=20
HDEF 0, 0 选用0#记速器连接12号中断事件
ATCH INT0, 12
ENI 开中断;
HSC0 开启0#计速器
中断例行程序注解:
LD SM0.0
R Q0.0, 1 中断执行,Q0.0失电料滚停转
MOVB 16#E8, SMB37 重新设置高数计数器控制参数SMB37
MOVD 0, SMD38 清空高数计数器当前值SMD38。
HSC0 执行高数计数器指令HSC0。
S Q0.1, 1 中断执行,压板控制得电工作开始。
A.电脑CPU奔腾4以上,内存:在1GB-3GB之间,建议选择Windows7-32位
B.电脑配置符合双核以上的CPU(只要满足双核心即可)和至少4GB或者4GB以上的内存的要求,强烈建议楼主选装Win7-64位旗舰版的系统!}
用电脑硬盘安装系统,可以安装WIN7的系统,具体 *** 作如下:1.可以到WIN7旗舰版基地去 www.win7qijianban.com/win7下载WIN7的 *** 作系统:
2.将下载的WIN7的 *** 作系统,解压到D盘,千万不要解压到C盘。
3.打开解压后的文件夹,双击“AUTORUN”,在打开的窗口中,点击“安装”.即可
4.在出现的窗口中,ghost映像文件路径会自动加入,选择需要还原到的分区,默认是C盘,点击“确定”按钮即可自动安装。
CRLF MACRO定义宏MOV DL,0DH调用DOS中断字符输出,输出字符ASCLL是0DH,即换行符
MOV AH,02H中断功能号02H
INT 21HDOS中断,21H
MOV DL,0AH调用DOS中断字符输出,输出字符ASCLL是0AH,即回车
MOV,AH,02H中断功能号02H
INT 21HDOS中断,21H
ENDM 宏定义结束
DATA SEGMENT 数据段
DATA1 DB 33H,39H,31H,37H,34H
DATA2 DB 36H,35H,30H,38H,32H
DATA ENDS数据段结束
STACK SEGMENT堆栈段
STA DB 20 DUP(?)
TOP EQU LENGTH STA 预定义TOP为STA的长度
STACK ENDS堆栈段结束
CODE SEGMENT代码段
ASSUME CS:CODE,DS:STACK,ES:DATA 指定相关段
START: MOV AX,DATA把DATA段的段地址赋予AX
MOV DS,AX通过AX把DATA段地址赋予DS
MOV AX,STACK把STACK段的段地址赋予AX
MOV SS,AX通过AX把STACK段地址赋予SS
MOV AX,TOP把TOP赋予AX
MOV SP,AX把AX的值赋予栈指针,即让SP指向堆栈段段尾
MOV SI,OFFSET DATA2把变量DATA2的偏移地址赋予SI
MOV BX,05把BX赋值为05
CALL DISPL调用子程序DISPL
CRLF宏CRLF,即输出换行符
MOV SI,OFFSET DATA1把变量DATA1的偏移地址赋予SI
MOV BX,05把BX赋值为05
CALL DISPL调用子程序DISPL
CRLF宏CRLF,即输出换行符
MOV DI,OFFSET DATA2把变量DATA2的偏移地址赋予DI
CALL ADDA调用子程序ADDA
MOV SI,OFFSET DATA1把变量DATA1的偏移地址赋予DI
MOV BX,05把BX赋值为05
CALL DISPL调用子程序DISPL
CRLF宏CRLF,即输出换行符
MOV AX,4C00H 准备调用DOS终端结束程序,功能号4CH,返回值0
INT 21H调用DOS中断
DISPL PROC NEAR 子程序DISPL
DS1:MOV AH,02 准备调用DOS中断,功能好02,即字符输出
MOV DL,[SI+BX-1]字符的ASCLL代码在[SI+BX-1]中
INT 21H调用中断
DEC BXBX值减1
JNZ DS1条件跳转到DS1,即重复5次
RET子程序返回
DISPL ENDP子程序结束
ADDA PROC NEAR子程序NEAR
MOV DX,SISI值赋予DI
MOV BP,DIDI值赋予BP
MOV BX,05把BX赋值为05
AD1:SUB BYTE PTR[SI+BX-1],30H[SI+BX-1]中的数值减30H
SUB BYTE PTR[DI+BX-1],30H[DI+BX-1]中的数值减30H
DEC BX BX值减1
JNZ AD1条件跳转,即循环5次
MOV SI,DX把DX的值赋予SI
MOV DI,BP把BP的值赋予DI
MOV CX,05把CX赋值为05
CLCCF标识符清零
AD2: MOV AL,[SI]把[SI]中的值赋予AL
MOV BL,[DI]把[DI]中的值赋予BL
ADC AL,BLAL=AL+BL
AAA非压缩BCD码调整
MOV [SI],ALAL的值赋予[SI]
INC SISI=SI+1
INC DIDI=DI+1
LOOP AD2循环跳转AD2
MOV SI,DXSI赋值为DX的值
MOV DI,BPDI赋值为BP的值
MOV BX,05BX赋值为05
AD3:ADD BYTE PTR[SI+BX-1],30H[SI+BX-1]中的数值加30H
ADD BYTE PTR[DI+BX-1],30H[DI+BX-1]中的数值加30H
DEC BXBX=BX-1
JNZ AD3条件跳转到AD3
RET子程序返回
ADDA ENDP子程序结束
CODE ENDS代码段结束
END START程序结束
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)