上百个南向modbus节点可以做到按照串行顺序,挨个进行轮询读取吗?
目前南向节点不论是modbus还是其他协议,好像都是独立的,相互之间无法控制通信的顺序
什么场景需要这种
背景:多个modbus rtu设备挂在同一个RS485总线下面,且要感知每一个rtu设备的通信状态
因为485总线是半双工的,同时只能有一个设备发送数据。若与同一485总线下的多个设备进行通信,无非有以下几种方式。
- 为每个modbus rtu设备都创建一个单独的南向节点。这种配置需要保证每个节点之间是串行互斥的,才能保证485总线不冲突。且直接通过state就可以从core获取每个rtu设备的通信状态
- 为所有modbus rtu设备创建唯一一个南向节点,且每个modbus rtu设备分别创建一个group。这种配置保证每个group之间是串行互斥的,不能同时读写设备,才能保证485总线不冲突。这种配置无法直接从core获取每个rtu设备的通信状态
问题:
- 方式2如何感知rtu设备的通信状态?只能从数据有效性上做文章吗?
- 查看代码,每个group都有一个read定时器,但定时器之间的event事件是没有关联的,并不是互斥的,是可以并行处理,求确认?