有一组数据存储在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
图片说明:
最佳答案
你这个指针 自加2处理是不是有问题啊,应该使用上升沿吧,只需要加一次就行,你这个不是一直加了吗?地址自加前面用*VD500是不对,用M1.1应该没问题,但是需要加一个P置零!你下一个MSG触发应该用的也是M1.1的P置零触发才对!
提问者对于答案的评价:
通讯时间问题 加200MS延时
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc279826.html