几台smart200之间进行mbus从站通讯,通信正常能读能写,现在我想让通信失败(通信线断)的时候让从站的输出复位,所以将MBUS_SLAVE的错误位当作触发重置的条件,然后我把通讯线拔掉 但是错误位还是0 请问各位大佬是如何解决通讯失败复位从站输出这个问题的,我目前想到了做检测心跳位的办法但是一个个做比较麻烦,所以请教各位大佬有更好的方法吗!
图片说明:
最佳答案
1、MBUS_SLAVE 的 DONE 位,当 Modbus从站执行,通信中时置1,无 Modbus 通信活动时为 0。
可以利用这一位,在超过一定时间不为1时,至少比轮循周期时间大3倍,超过这个时间从站就认为通讯中断。
http://www.ad.siemens.com.cn/productportal/prods/s7-200-smart-portal/200smarttop/communication/serial_port/modbus/Slave/Slave.htm
2、就如你所说,用心跳法,主站对于各个从站,不断改变一个数值,并在每次轮到从站时将这个值发向从站,从站检测这个值在多长时间无变化,从站就认为通讯中断。
提问者对于答案的评价:
谢谢大佬指教
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc279268.html