folgendes Aufgabe:
Auslesen zweier Modbusregister in Liste, Darstellung der Registerinhalte als Gleitkommazahl (Ergebnis wird im Bereich 11.547,000 +- 5% liegen).
Zwei Drittel der Aufgabe kann ich umsetzen. Nur habe ich ein Problem in der Mitte.
Auslesen:
Code: Alles auswählen
regs = c.read_holding_registers(19000,2)
Debug ergibt: Rx [D2 25 00 00 00 07 01] 03 04 46 39 68 A4 --> 0x 463968A4 --> 11866,1601562 (check mit https://www.h-schmidt.net/FloatConverter/IEEE754.html ) --> zu erwartender Wert, --> OK
Ich muss also die Int-Werte 17977 in hex 0x4639 und 26788 in hex 0x68A4 wandeln.
Das ist auch nicht das Problem mit:
Code: Alles auswählen
hex (regs[0]) # 0x4639
hex (regs[1]) # 0x68A4
Als Test habe ich mal die den String "regs_hex" definiert um die Aufgabe weiter zu verfolgen:
Code: Alles auswählen
regs_hex = '463968A4'
print(struct.unpack('!f', bytes.fromhex(regs_hex))[0])
Für eine Lösungsvorschlag des mittleren Teils der Aufgabe wäre ich dankbar.
Danke im Voraus.