RSS

S7-200自由口通讯教程及编程实例(二)

来源: 作者: 时间:2007-11-01 Tag: 点击:
  
5.       判断发送状态
在发送完成中断中,我们要重新置端口0为接收状态,同时复位M0.1,并将RCV指令判断的起始字符由原来的”>”改为”+”,因为TC35接收到PDU数举包后会返回”+CMGS: x”表示发送成功,或者” +CMS ERROR: 500”表示发送失败,将下面的指令添加到INT_1中
Network 3
LD     M0.1
S      SM87.7, 1
MOVB   '+', SMB88
RCV    VB100, 0
R      M0.1, 1
 
在接收完成中断中(INT_0)我们可以通过判断VB104的状态来判断发送是否成功,如果发送成功,VB104=”G”,如果不成功VB104=”S”。将下面的指令添加到INT_0中
 
 
 
 
Network 2
LDB=   VB104, 'G'
MOVB   '>', SMB88
Network 3
LDB=   VB104, 'S'
MOVB   '>', SMB88
S      M0.0, 1
如果成功则将RCV指令的起始字符恢复为”>”,如果不成功则将RCV指令的起始字符恢复为”>”同时置位M0.0重新发送短消息。
将整个程序下载到PLC中,每次置位M0.0即可以向13801234567发送一条短消息,短消息内容为“天气”。只要更改数据块中的内容,即可向不同的手机号码发送不同内容的短消息。整个程序如下:
MAIN
Network 1
LD     SM0.1
MOVB   9, SMB30
MOVB   2#11000100, SMB87
MOVB   '>', SMB88
MOVW   +5, SMW92
MOVB   255, SMB94
ATCH   INT_0, 23
ATCH   INT_1, 9
ENI
Network 2
LD     SM0.0
RCV    VB100, 0
Network 3
LD     M0.0
EU
R      SM87.7, 1
RCV    VB100, 0
XMT    VB0, 0
Network 4
LD     M0.1
EU
R      SM87.7, 1
RCV    VB100, 0
XMT    VB20, 0
 
 
 
INT_0
Network 1
LDB=   VB101, '>'
S      M0.1, 1
Network 2
LDB=   VB104, 'G'
MOVB   '>', SMB88
Network 3
LDB=   VB104, 'S'
MOVB   '>', SMB88
S      M0.0, 1
 
 
INT_1
Network 1
LD     M0.0
S      SM87.7, 1
RCV    VB100, 0
R      M0.0, 1
Network 2
LD     SM0.0
FILL   +0, VW100, 10
Network 3
LD     M0.1
S      SM87.7, 1
MOVB   '+', SMB88
RCV    VB100, 0
R      M0.1, 1
 
 
四、         总结
这里我们总结以下自由口编程的一般原则:
1.         SM0.1触发端口初始化,连接发送完成和接收完成中断(中断事件9和23)
2.         SM0.0触发RCV指令
3.         XMT指令用上升沿触发,并在指令运行前先停止端口0的接收(复位SM87.7,执行RCV指令)
4.         在发送完成中断中,重新置端口0为接收状态(置位SM87.7,执行RCV指令),清空RCV指令的接收缓冲
 

上一页 1 2下一页
Google
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
栏目列表
热点关注
相关文章