簡體   English   中英

讀取保存帶有 float32 數據的 Modbus 寄存器時遇到問題

[英]Trouble reading holding Modbus registers with float32 data

#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 結果相同的值......

希望有人會注意到並幫助我.. :(我很抱歉成為新手..

您可能對字節順序有問題。 float(MSRF)格式為 Little Endian (MSRF 代表最重要的寄存器優先),但在您的代碼中設置wordorder=Endian.Big

嘗試將wordorder更改為Endian.Little

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM