我们如何使用Spark Streaming使用MODBUS协议从所有65536个寄存器中读取数据?

时间:2017-01-16 12:51:58

标签: apache-spark spark-streaming modbus modbus-tcp custom-receiver

我有一个特定的条件,我想从MODBUS协议读取数据。

但它只允许我一次读取120个寄存器。如果我增加这个数,它会给我 ERROR CODE = 3 我正在使用JAMOD。

有没有办法可以从所有寄存器中读取数据?

我已经浏览过这些链接,但它们没有帮助:

  1. How to resolve ModbusSlaveException: Error Code = 3?

  2. http://control.com/thread/1026161502#1026161502

  3. 我已经制作了一个自定义Spark接收器来读取数据,我需要在Kafka中推送这些数据。

    请为我提供解决方案或解决方法,我可以阅读所有 65536个寄存器。

1 个答案:

答案 0 :(得分:0)

Modicon Modbus Protocol Reference Guide PI–MBUS–300 Rev. J中的Modbus消息中的字段内容中,响应消息中的字节计数字段确定返回的8位字节内容的数量。由于寄存器是16位长,并且字段长度为8位,因此可能返回不超过128位。通过在字节计数长度中包含消息中的一些其他字段来进一步限制。

不要期望在每个请求中收到超过125个寄存器。检索整个地址空间需要多个请求。

请注意,当向其发送读取未定义寄存器的请求时,某些设备可能会返回错误。除非有完整的存储器映射,否则只能读取具体记录的寄存器。