避免来自仪表设备的modbus消息

时间:2012-05-19 06:59:30

标签: java modbus

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

来自Modicon Modbus Protocol Reference Guide PI–MBUS–300 Rev. J

的第10页
  

如何处理地址字段

     

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

     

地址0用于广播地址,所有从设备都能识别。   当Modbus协议用于更高级别的网络时,广播可能不是   允许或可能被其他方法取代。例如,Modbus Plus使用了   共享全局数据库,可以使用每个令牌轮换进行更新。

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