我用smart200和正泰电表MODBUS RTU通讯,通讯OK。正在执行通讯时Done位为1,Error字节数据为6. 通讯后Done位为0,Error字节数据为0. 有个问题是我拔掉通讯线后Done位和Error字节数据与没拔通讯线显示的一模一样,为什么。该怎么判断通讯失败? 另一个问题是smart200的同一个485口在波特率相同从站地址不同的情况下,可不可以即和电表通讯又和变频器通讯?
图片说明:
最佳答案
不建议你采用定时器来触发MSG指令,虽然你通讯成功了。
因为串口RS-485通讯是异步通讯,通讯是否完成不取决于定时器的时间到达,而是取决于done为是否由0变1的那个周期。
报警6#就说明了问题,同一个周期只能是一个MSG指令有效,2个以上就报警6#。
也正是你不合适的触发模式,造成你拔掉通讯电缆,报警显示没有区别的原因所在,因为你的触发不取决于指令完成与否,而是定时器的时间到达,定时器时间到达无论是否完成MSG指令均下移到下一个MSG指令。
另外,定时器刷新机制是异步的,同样一个定时器被cpu刷新的几率是不同的,也是造成报警的另一个原因。参考官方的轮询例子程序试试。
提问者对于答案的评价:
谢谢
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc348523.html