|
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
|