5 程序及注释
由于文章篇幅的限制,在此仅给出与通信有关部分的源程序。
SBR 7 //初始化XTM及XTM定时器
XMT VB99,0 //发送
ATCH 0,9 //捕捉XTM发送中断,并
//调用中断程序0
MOVB 255,SMB34 //设置XTM定时器255MS
ATCH 1,10 //捕捉XTM定时器中断,
//并调用中断1
RET
INT 0 //中断程序0,XMT发送中断处理,
//关XMT定时器
DTCH 10 //退出XMT定时器
DTCH 9 //中止XMT事件
MOVW 3,VW204 //刷新XMT重试次数
MOVW 14,VW208 //响应信息中接收的字符数
MOVW 0,VW215 //清BCC累加器
MOVD &VB114,VD211 //设置接收缓冲区指针
ATCH 2,8 //捕捉RCV(接收)中断,并
//调用中断程序2
ATCH 3,10 //捕捉接收定时器中断,并调
//用中断程序3
RETI
INT 1 //定时器中断0处理--发送
DTCH 9 //停止XMT(发送)
DTCH 10 //退出定时器
DECW VW204 //重试次数减1,若为0,且
LD SM1.0 //SM1.0=1,则
MOVB 3,VB210
MOVB 3,QB0 //用QB0指示发送超时
MOVW 3,VW204 //刷新发送重试计数
S M0.0,1 //使RUN、RAMP有效
CRETI //条件返回
XMT VB99,0 //重试发送
ATCH 0,9 //捕捉XMT中断,并调用
//中断程序0
MOVB 255,SMB34 //设置XMT定时器为避
//免55mS
ATCH 1,10 //捕捉定时中断,并调用
//中断程序
RETI
INT 2 //接受字符处理
MOVB SMB2,AC0 //得到接收字符
XORW AC0,VW215 //累积BCC
MOVB AC0,*VD211 //把接收到的字符送
//入缓冲区
INCD VD211 //缓冲区指针加1
DECW VW208 // 有待接收的字符总数减1
LDN SM1.0 //检验是否结束
CRETI
NOT
DTCH 10 //退出接收定时器
DTCH 8 //关接收
AB= 0,VB216 //检验已算好的BCC是否为0
NOT
MOVB 2,VB210 //坏的BCC操作码
MOVB 2,QB0
JMP 0
LDB= VB114,16#02 // STX第一个字符吗
AB= VB115,16#0C //长度=12吗?
AB= VB116,VB102 //将信息发往同一从
//设备吗?
MOVB 0,VB210 //操作正确
MOVB 0,QB0
JMP 0
LD SM0.0
MOVB 1,VB210 //信息中有不对的地方
MOVB 1,QB0
LBL 0
MOVW 3,VW206 //刷新接收可重试次数
RETI
INT 3 //定时器中断0处理—接收
DTCH 8 //关接收中断
DTCH 10 //退出接收定时器
DECW VW206 //重试次数减1,若为0,且
LD SM1.0 //SM1.0=1,则
MOVB 4,VB210
MOVB 4,QB0 //指示接收超时
MOVW 3,VW206 //刷新接收重试次数
S M0。0,1 //使RUN/RAMP有效
CRET
NOT
MOVD &VB114,VD211 //设置接收缓冲区指针
MOVW 0,VW215 //清BCC累加器
XMT VB99,0 //重发送
ATCH VB0,9 //捕捉XMT中断,并
//调用中断程序0
MOVB 255,SMB34 //设置XMT定时器中断
ATCH 1,10 //捕捉定时器中断,并调
//用中断程序1
RETI
6 结束语
虽然此程序只与一台微型主电机驱动器通信,但可将它扩展用于另外的输入点,选择多站通信线路上的某一台微型主电机驱动器的地址,向它发送命令。另外,这个程序的基本通信结构还可用来发送别的信息给微型主电机驱动器,如监视电流、转矩等。
参考文献
[1] 陈立定等. 电气控制及可编程控制器[M]. 广州:华南理工大学出版社,2001.
[2] SIMATIC.S7-200 Programmable Controller System Manual.Germany: Simems AG,1998.
[3] SIMATIC.STEP7-Micro Programming Reference Manual.Germany:Simens AG,1999.
作者简介
吴玉香(1968-) 女 硕士/讲师 现在华南理工大学自动控制工程系任教,主要从事智能控制及可编程控制器的教学及应用研究。