截取了一段自由口通讯程序
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