Modbus协议轮询问题

有一组数据存储在VB0起始的寄存器中,数据规律是,
01(VB0) 01(VB1) 
01(VB2)02(VB3)
02(VB4)03(VB5)
.......
前一位是设备类型用 01 02 03.。。表示
后一位是设备的地址码

我需要做一个轮询,
先读取VB0的数据判断设备类型,然后再读VB1的数据,根据地址码 执行相应的读取指令,读出来数据存到vb1000。
然后指向VB0的指针后移2位,读取第二个设备类型,指向VB1的指针也后移2位,读取第二个设备地址码,指向VB1000的指针也后移2位,以便存储下一个数据。

就这样指针不断后移,一直读下去,直到,设备类型为00,终止读数据。

我写了一个Dome,但是MBUS_MSG一直报错,错误代码是6.Modbus正在忙于其它请求。
我查了下,说是轮询需要用上一条的完成作为下一条的开始,这块我不知道该怎么写。
我贴一下我的代码。

问题补充:
后续 我尝试把M1.1作为读的条件,但还是错误代码6

图片说明:

Modbus协议轮询问题    Modbus协议轮询问题    Modbus协议轮询问题    Modbus协议轮询问题   

最佳答案

你这个指针 自加2处理是不是有问题啊,应该使用上升沿吧,只需要加一次就行,你这个不是一直加了吗?地址自加前面用*VD500是不对,用M1.1应该没问题,但是需要加一个P置零!你下一个MSG触发应该用的也是M1.1的P置零触发才对!

提问者对于答案的评价:
通讯时间问题 加200MS延时

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月30日 下午6:18
下一篇 2020年10月30日 下午6:18

相关推荐

发表回复

登录后才能评论