读取带有float32数据的Modbus寄存器时出现故障


#my code goes like this for a holding register 3026 - 3027
client = ModbusClient(method ='rtu', port ='COM4', timeout=1, stopbits = 1, bytes = 8, parity = 'E', baudrate = 9600)
a = client.connect()
print(a)
while True:
read_value = client.read_holding_registers(address = 43026,count = 2,unit = 1)
real_decoder = BinaryPayloadDecoder.fromRegisters(read_value.registers,byteorder = Endian.Little, wordorder=Endian.Big)
value = real_decoder.decode_32bit_float()
print(value)
time.sleep(100)

我得到的结果是:1.1755122874426309e-38

但我的ModScan32在浮动(MSRF(模式下显示了156.9796。

这里有人能给我一个解决方案,告诉我如何将32位的浮点数据转换为与ModScan32结果相同的值。。。

希望有人能注意到并帮助我(我很抱歉成为新手。。

您可能有endianness问题。float(MSRF)格式是Little Endian(MSRF代表最高有效寄存器优先(,但在代码中设置wordorder=Endian.Big

尝试将wordorder更改为Endian.Little