用CPU226作modbus的主站,有两个问题向各位请教:
1 在交换数据的时候,需要把4个子站的数据交换发生的时刻特意分开吗?我想,如果CPU226自己对4个子站是轮流交换数据的,就不必为此操心了, 那么实际上是这样的吗?就是说,我怎样才能避免同时发生两个数据交换的动作呢?一发生这种情况,就会报错的。
2 在一个子站内,有二十多个数据交换的需要,有的可以反复写入,如设置参数,有的则是几十分钟才发生一次,如果非要把他们排成一列,可能后面的一个交换要求出现了,可是前面的一个交换还没发生,不许执行后面的动作,结果时间过去了,后面的动作也没法发生,就麻烦了。这种情况,怎么处理呢 ?
问题补充:
程序会对某个MODBUS从站所控制的几个设备发送控制命令,例如让A电源启动,或者让B设备停车等等。这些控制动作不会是顺序发生的,先后次序经常变动,而且控制命令存在的时间也很短,设想把这些发送动作都排成一队 ,让前一个发送的“Done”去发送后一个控制命令,可是偏偏排在后面的动作先发生了,前面的动作还没发生,不给后面“Done”,很快后面的控制命令也消失了,岂不麻烦?
最佳答案
这个问题N年前就讨论过了!
1.用标志位来决定是否进行轮询!
2.用循环方式来进行轮询!
用1的方法通讯较快,但编程较复杂,但效率高!
用2的方法编程简单,但效率较低!
建议你用2的方法!用时间来循环!
1-2S秒通讯1#从站;2-3S通讯2#从站!
希望对你有帮助!
提问者对于答案的评价:
谢谢,我想也只能如此了
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc352170.html