Hallo, ich lese mehere Register über Modbus TCP an einen Energiezähler aus. von Adresse 0 bis 84. Dafür Verwende ich pyModbusTCP mit der Funktion read_holding_registers(0, 84). Ich erhalte folgende Antwort:
1 | [3, 30433, 0, 0, 0, 0, 3, 31120, 0, 0, 3, 30803, 2, 20641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49990, 0, 2] |
Im Datenblatt steht:
1 | Dezimale | Adresse Hexadezimale | Adresse Anzahl Register | Beschreibung | Einheit | Teiler | Datentyp |
2 | 0 | 0x0000 | 2 | Spannung Leiter gegen N U1 | V | 1000 | UInt32 |
3 | 2 | 0x0002 | 2 | Spannung Leiter gegen N U2 | V | 1000 | UInt32 |
4 | 4 | 0x0004 | 2 | Spannung Leiter gegen N U3 | V | 1000 | UInt32 |
5 | 6 | 0x0006 | 2 | Spannung Leiter gegen Leiter U12 | V | 1000 | UInt32 |
6 | ... |
Es ist kein Verbraucher angeschlossen, daher die Nullen. Aber ich verstehe die Werte nicht. Die ersten Werte lauten als Hex 03 76 E1 00 00 00... E1 wären 225 das könnte, die Netzspannung 230V sein. Aber laut Datenblatt soll diese 2 Byte groß sein, E1 00 oder 76 E1 passt nicht. Und auch das Tauschen der Bytes E1 76 bringt auch nichts. Ich hatte in einer Beschreibung zu lib gelesen das der rückgabe Wert sich zusammen setzt aus Anzahl und Daten... kann mir jemand bei der Interpretation helfen. Die 49990 sind die 50Hz...