和MODBUS从站交换数据

用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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日
下一篇 2021年7月5日

相关推荐

发表回复

登录后才能评论