哪位仁兄做过 S7-200轮询多个从站的项目,官方给的modbus轮询案例是单从站轮询读写。
突发个想法,假如轮询多个从站时,其中一个从站掉电或不运行,网络故障都会造成主站 3 号错误;或者是别的通信错误
其完成标志位(Done)“M2.1”和错误代码“MB3”会是什么状态,我认为是以下2种可能不知道哪个正确
1:M2.1=0 MB3><0:错误代码不为0 但读写没有完成
通信应该会立即终止
2:M2.1=1 MB3><0 :错误代码不为0错误代码此时生效,但读写已完成
重点来了 那程序是不是会忽略错误代码,而直接读写下一条MSG指令呢?如果是这样那岂不是官方给的那个轮询读取的程序样例 完美的解决了多从站modbus通信 其中一个从站掉电而引起的通信全部中断的问题,手头只有2个PLC没法做验证,我还是有点不相信。
还有即使忽略的故障而继续轮询,但当下个周期再次轮询到上次错误的从站时,完成位M2.1还会完成标志位还会为1吗,如果不置位为1那通信岂不是又要中断
好矛盾的想法,头都大了 谁帮我分析指点下,谢谢了
我理解的完成标志位就是Done,就是其读写指令完成时,该完成位会置位=1