恭喜,你发布的帖子
发布于 2016-04-07 11:42:28
7楼
如果3个从站中有1个故障或掉电,整个通讯就变得很慢,计时的就可以不管从站是否正常,通讯速度是一样的,m0.1,m0.2不写程序就不能编译,
1个故障会多慢?拿数据比较一下。当一个站故障的时候相信你整个系统都应该不在状态了。必须处理了。多慢都无所谓啦。
那你是宁可每次通讯都要白等400毫秒,是每次,都不愿意放弃那个故障的站?正常通讯的话是永久的,而故障是偶然的。
我超时设置是50毫秒,据说modbus库程序通讯失败重试是3次(我不知道),那么一个站断电就是仅仅延迟了3个50再加上正常通讯的时间,估计只有200毫秒。而你现在却要每次都等待400毫秒,而且你还不敢把500毫秒调到100毫秒,因为偶然某次通讯稍微慢一点,没事的,就只是慢一点,那么你的程序modbus又报6错误了。你程序只要检测到这个站是故障的,那么你就以后都不需要在询问这个站了,直到人工介入,恢复通讯才开始轮训。整体上你就仅仅耽误过一次这么多。
只要从站出通讯问题,基本不可能自己恢复的,所以你不要想着再轮训再检查一次希望他自己恢复好了。你没有做任何外界介入有什么可能会恢复好呢?是不是。
使用计时器轮换状态,是一个很错的手法。你根本不会知道通讯一次需要多少时间。定得少了吧,老是错误6,都不知道什么回事。定得多的吧,像你这样,白等400毫秒。这400毫秒都可以通讯20次了。
官方已经在程序里面提供了一个最好的Done位让你安排工作,一完成了,马上done。没有更好的了。
你考虑吧。
请填写推广理由:
分享
只看
楼主