恭喜,你发布的帖子
发布于 2022-11-11 13:37:29
22楼
多个Modbus设备同时出现多个优先执行的处理
多个Modbus设备轮询中,有可能每个设备都在同一时间,产生多个优先任务的执行申请。
如果这些任务的优先级不同,还容易处理,按照优先级高低决定即可。
但如果它们都是同一个优先级的,如何处理呢?或者说,在众多任务中,很难不遇到优先级相同的申请,毕竟优先级总是少量的,没几个。例如:A、B、C三个设备,分别产生了1和2两个优先任务申请,都是同等优先级。
可以有两种处理方式。
1、均衡方式:比如:A1-->B1-->C1-->A2-->B2-->C2。每个设备只执行一个优先任务,之后让给其它设备执行,然后轮转回来再执行自己的第二个优先任务。如下图:
注意:上图中,在每个任务执行完毕后,没有空出一个扫描周期,而是在本周期之内,直接抢断,启动其它设备的优先任务。虽然减少了一个间隔周期,但会偶尔出错。
2、独占方式:比如:A1-->A2-->B1-->B2-->C1-->C2。每个设备先把自己的全部优先任务都执行完毕后,再让给其它设备执行。如下图:
注意:上图中的每个任务执行完毕后,就空出了一个扫描周期,可以稳妥不出错了。
可以把两种方式都集成进一个设备FB里面,通过管脚切换。
独占方式,在一定意义上,其实是在改变优先级策略。所以我还是倾向均衡方式。不同的调度方式,可以把玩,品味其中的各自特点优劣。
稍改一下,可以分清每个任务。
请填写推广理由:
分享
只看
楼主