添加 -t 4:float 选项时出现 MBPOLL 错误

MBPOLL error when adding -t 4:float option

我可以使用 mbpoll 轮询我的 modbus 温度和深度传感器

mbpoll -m RTU  -t 4 -a 1 -b 19200 -r 45 -c 16 /dev/ttyUSB1 

然而,当我尝试将数据显示为浮点数以使其清晰易读时,出现错误。我尝试使用代码

mbpoll -m RTU  -t 4:FLOAT -a 1 -b 19200 -r 45 -c 16 /dev/ttyUSB1

现在数据显示为 16824 之类的数字,但它应该显示为 22.4(摄氏度)。在我的 PC 上使用 Modbus Poll,我可以通过选择单元格并选择显示它是 FLOAT AB CD 来做到这一点,所以我假设(可能是错误的)这是我应该在 MBPOLL 中做的。

谢谢!

在评论中扩展答案以防将来有人发现:

modpoll与浮点数(例如-t 4:FLOAT)一起使用时,两个16位寄存器将组合输出每个32位浮点值。这可能意味着 modpoll 正在请求比预期更多的寄存器 (32)。如果请求范围末尾不存在的寄存器,则结果可能是错误的(我希望异常 2 - ILLEGAL DATA ADDRESS)。这可以通过减少请求值的数量来解决。

我相信您还需要 -B(Big Endian),但这不会导致错误(只是意外结果)。