在与 MODBUS 设备通信时,设备在被视为超时之前可以响应多长时间是否有上限?我正在尝试确定将读取超时设置为什么。MODBUS RTU 和 TCP 的答案都很好。
2 回答
在MODBUS over serial line specification and implementation guide V1.0 section 2.5.2.1 MODBUS Message ASCII Framing建议在慢速 WAN 配置中最多 5 秒的字符间延迟是合理的。
2.6 错误检查方法表示超时配置未指定任何值。
当前的Modicon Modbus 协议参考指南 PI–MBUS–300 Rev. J也没有为这些设置提供定量建议。
您的应用程序时间敏感性以及网络强制执行的约束将在很大程度上决定您的选择。
如果您确定了您可以容忍的最坏情况延迟,请花一半的时间让单次重传失败,减去最大长度消息的合理传输时间,那么您应该有一个很好的超时候选者。这将允许您从单个错误中恢复,而不会不必要地经常报告错误。
当然,真正的问题是,发生错误时该怎么办。它可能是暂时的问题,还是需要注意的永久性故障的结果?
Alexandre Vinçon 对致谢的评论也是相关的。可能是您的设备没有实现这一点,并且可能会延长延迟。
规范没有提到超时的特定值,因为不可能为大范围的 MODBUS 从站标准化超时值。
但是,您应该在几百毫秒内收到回复,这是一个很好的假设。
我通常使用 RTU 将超时定义为 1 秒,使用 TCP 将超时定义为 500 毫秒。
此外,如果设备需要很长时间来回复,它应该返回一个 ACKNOWLEDGE 消息以防止超时到期。