1

我们正在使用 Jamod RTU 捕获串联连接的各种电表的 raedings。我们设置了 modbus timeoutexception = 1200ms。现在发生了什么,当我们 ping 一米并且我们没有得到结果(或读数)时,我们移动到同一系列中连接的下一个。但有时,前一个仪表将读数发送回应用程序,该仪表的读数会保存到新仪表或下一个仪表。

为了解决这个问题,我们将 nport 管理员(用于管理 com 端口)中的网络超时从 5000 减少到 500 毫秒。但我不认为这是永久的解决方案。有没有办法避免迟来的消息或用相应的仪表标记每条消息?

4

2 回答 2

2

每个 MODBUS 回复都在消息中嵌入了设备源地址。阅读它可以解决您的问题。

于 2012-06-01T07:53:27.093 回答
0

来自Modicon Modbus 协议参考指南 PI–MBUS–300 Rev. J第 10 页

如何处理地址字段

消息帧的地址字段包含两个字符 (ASCII) 或八位 (RTU)。有效的从设备地址在十进制 0 到 247 的范围内。为各个从设备分配的地址范围为 1 – 247。主设备通过将从设备地址放在消息的地址字段中来寻址从设备。当从机发送它的响应时,它将自己的地址放在响应的这个地址字段中,以让主机知道哪个从机在响应。

地址 0 用于广播地址,所有从设备都可以识别。在更高级别的网络上使用 Modbus 协议时,可能不允许广播或可能被其他方法代替。例如,Modbus Plus 使用一个共享的全局数据库,该数据库可以随着每次令牌轮换而更新。

因此,您可以跟踪从地址并在指定的从地址接收时分配值。这应该可以从getUnitID()所有响应对象上访问。

于 2012-05-31T19:03:20.037 回答