自由口通信2

截取了一段自由口通讯程序
 LD     SM0.0
 AB>=   VB1200, 1
 LPS
 AB<>   SMB2, 16#0D
 INCB   VB1200
 MOVB   SMB2, *VD600
 INCD   VD600
 CRETI
 LPP
 AB=    SMB2, 16#0D
 LPS
 MOVB   SMB2, *VD600
 ATH    VB308, VB160, 4
 AB=    VB302, 16#31
 MOVW   VW160, VW180
 LPP
 AB=    VB302, 16#32
 MOVW   VW160, VW182

 其中vw180、vw182为温控表温度,

 
 1.想知道SMB2具体应用方法,能否结合此程序讲解一下,16#0D?
 2.VB302、VB308在程序中未找到出处,是否为温控表地址?
 谢谢

问题补充:
.16#0D的含义是什么
 

最佳答案

1 200PLC自由口通讯接收数据有两种方法:字符中断方式和RCV
 字符中断方式:通过定义中断8连接一个中断程序,比如:
 LD     SM0.1
 ATCH   INT_0:INT0, 8
 当有字符到通讯口的时候,就会执行中断0程序,有多少个字符就中断多少次,比如一帧数据为20个字节,那么INTO就会被执行20次。
 在通讯口有字符来的时候,字符暂存在SMB2里面,所以在中断程序里要及时的把SMB2的值取出,要不就丢失了,不取出会被下一个字符挤走,
 因为SMB2只能存放一个字节数据。
 另外中断程序越短越好,如果中断程序执行时间太长,也会造成字符丢失。

 2 中断方法接收数据最典型的例子
 主程序:
 LD     SM0.1
 MOVD   &VB5, VD0
 MOVB   0, MB0
 MOVB   9, SMB30
 ATCH   INT_0:INT0, 8
 ENI

 INT_0:
 网络1:
 LD     SM0.0
 INCB   MB0
 MOVB   SMB2, *VD0
 INCD   VD0
 网络2:
 LDB=   MB0, 8
 MOVB   0, MB0
 -D     8, VD0
 接收一帧为8个字节的数据,数据存放在VB5开始的8个字节里。
 把这个简单的看懂了,你的程序就容易明白了,你发的程序VD600相当于上面的VD0,VB1200相当于MB0。

 3 VB302、VB308在程序中未找到出处,是否为温控表地址?
 如果在程序里找不到,那可能在触摸屏或上位机上用的地址,别人只能是猜测。

提问者对于答案的评价:
谢谢

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc351844.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日
下一篇 2021年7月5日

相关推荐

发表回复

登录后才能评论