Raspberry pi 添加-t 4:float选项时MBPOLL错误

Raspberry pi 添加-t 4:float选项时MBPOLL错误,raspberry-pi,modbus,Raspberry Pi,Modbus,我可以使用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(即摄氏度)。在我的电脑上使用Mod

我可以使用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
(即摄氏度)。在我的电脑上使用Modbus Poll,我可以通过选择单元格并选择将其显示为
浮点AB CD
来实现这一点,因此我假设(可能是错误的)这是我在MBPOLL中应该做的


谢谢

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

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


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

“我得到一个错误”-什么错误?(发布问题时,请包括所有相关信息)。请注意,
-t4:FLOAT
需要两个16位寄存器来输出32位浮点(这可能意味着问题是由
-c16
引起的;减少请求的值的数量)。我相信你也需要
-B
(Big-Endian),但这不会导致错误(只是一个意外的结果)。对不起,我已经很久没有使用这个论坛了,我仍然在学习礼仪。谢谢你的评论-这解决了我的问题。