如何使用RCV指令啊。我遇到问题了。程序中定义了RCV然后,我怎么才能通过软件或计算机发送一组数据,让plc接收呢。并且如何查看接收到的数据呢。
使用初始化RCV时是不是要求都是16进制的数?
问题补充:
我按书上写的程序,可是使用一个串口调试软件时,出现了“接收超时"错误,应如何处理。咋弄的呢。请各位帮忙
主程序:
LD SM0.1
MOVB 16#09, SMB30
MOVB 16#B0, SMB87
MOVW +5, SMW90
MOVB 100, SMB94
ATCH INT_0:INT0, 23
ATCH INT_2:INT2, 9
ENI
RCV VB100, 0
INT0:
LDB= SMB86, 16#20
MOVB 10, SMB34
ATCH INT_1:INT1, 10
CRETI
NOT
RCV VB100, 0
INT 1 :
LD SM0.0
DTCH 10
XMT VB100, 0
INT 2 :
LD SM0.0
RCV VB100, 0 楼下说在VB101,VB102中可以看到数据可是。我停下plc后,能通讯,但是看不到数据块啊。里边啥也没有?
最佳答案
1 使用初始化RCV时是不是要求都是16进制的数?
不是的,用十六进制还是二进制还是十进制都是为了阅读的方便。
比如: MOVB 16#B0, SMB87 = MOVB 176, SMB87
2 出现了“接收超时"错误,应如何处理
因为在串口软件里有接收超时时间的设定,串口将数据发送后,在设定的时间内收不到数据就会显示“接收超时"错误,
这说明PLC没有给电脑发数据。
3 PLC执行RCV前你要做两件事
第一件事是初始化通讯口,
MOVB 9, SMB30
第二件事是定义接收数据开始和结束的条件。
MOVB 16#B0, SMB87
允许接收
开始条件是空闲线时间 这个时间是SMW90
结束条件是收到结束字符 这个字符在SMW89里赋值
而你程序里没有对SMW89赋值,所以要加一句MOVB X, SMB89
4
LD SM0.1
MOVB 9, SMB30
MOVB 16#B0, SMB87
MOVW 5, SMW90 开始条件
MOVB 100, SMB94
ATCH INT_0:INT0, 23 端口0:接收信息完成
ATCH INT_2:INT2, 9 端口0:传输完成
ENI
RCV VB100, 0
INT0:
LDB= SMB86, 16#20
MOVB 10, SMB34
ATCH INT_1:INT1, 10
CRETI
NOT
RCV VB100, 0
若收到结束字符则延时10MS发送,没收到结束字符,继续执行接收。
5 在MOVW 5, SMW90 后 加一句MOVB X, SMB89
然后用串口软件发送数据,比如34 38 12 34 X(X是在SMB89里定义的)
然后在接收信息窗口就能看到你发的信息。
把CPU STOP后,在VB101 VB102 VB103能就能看到你发的数据。
在状态图里看,先输入地址,然后点工具栏上的状态表监控.
看PLC里运行的数据不是在数据块里看的,是在状态图里看的。
提问者对于答案的评价:
好
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc354504.html