Modbus-Registerdecoder

Dekodieren Sie Modbus-Register als Gleitkomma- oder Ganzzahl und vergleichen Sie die Werte für jede Byte- und Wortreihenfolge nebeneinander.

Sie haben Registerwerte? Dekodieren Sie sie hier. Um aus einer Zahl Registerwerte zu erzeugen, verwenden Sie den IEEE-754-Gleitkommazahl-Konverter.

Modbus und serielle Verbindungen Aktualisiert Kostenlos, ohne Anmeldung

Beispielwerte
Register

Beispiele

Vier Hexziffern je Register in der ausgelesenen Reihenfolge

Interpretation
Bytereihenfolge

Wert in ABCD-Reihenfolge

234

CDAB, Wörter vertauscht
2,4184e−41
BADC, Bytes vertauscht
5,8935134e+25
DCBA, niederwertiges Byte zuerst
3,812e−41
Dekodierte Bytes in ihrer Reihenfolge
43 6A 00 00

NaN oder Unendlich weisen oft auf einen falschen Typ oder eine falsche Reihenfolge hin, können laut Registertabelle aber auch einen dokumentierten Zustand ohne Messwert bedeuten.

So wird es berechnet

The registers are laid out as bytes in the chosen order (ABCD is the first register high byte first) and read as an IEEE 754 float or a two’s-complement integer

In ABCD-Reihenfolge lauten die Bytes 43 6A 00 00; als 32-Bit-Gleitkommazahl nach IEEE 754 ergeben sie 234.

Tipp: Vergleichen Sie mit einem bekannten Wert, etwa einer Spannung nahe 230 oder 400 V. Bestätigen Sie Typ und Reihenfolge für jeden dokumentierten Registerblock, bevor Sie anderen Messwerten vertrauen.

Modbus-Gleitkommazahlen dekodieren (IEEE 754)

Ein Modbus-Register enthält 16 Bit. Eine 32-Bit-Gleitkomma- oder Ganzzahl belegt daher zwei Register, ein 64-Bit-Wert vier. Die Modbus-Spezifikation legt die Bytefolge innerhalb jedes Registers fest (höherwertiges Byte zuerst), nicht aber die Reihenfolge mehrerer Register. Geräte unterscheiden sich deshalb. Geben Sie die Register in der ausgelesenen Reihenfolge ein: Der Decoder zeigt die Werte für alle vier Anordnungen nebeneinander. Welche davon zu einem bekannten Messwert passt, ist oft erkennbar.

Bytes anordnen

ABCD: A B im ersten Register, C D im zweiten

ABCD mit dem höherwertigen Byte zuerst ist häufig. CDAB vertauscht die beiden Register (Worttausch), BADC vertauscht die Bytes in jedem Register und DCBA kehrt alle vier Bytes um.

Die 32 Bit zerlegen

1 Vorzeichenbit | 8 Exponentenbits | 23 Mantissenbits

Das ist das IEEE-754-Format mit einfacher Genauigkeit. Das erste Bit bestimmt das Vorzeichen, die nächsten acht den Exponenten mit einem Bias von 127 und die letzten 23 den Bruchteil nach der impliziten führenden 1 für normale Werte.

Wert berechnen

Wert = (−1)s × 1.f × 2(e − 127)

Bei 43 6A 00 00 ist das Vorzeichen 0 und der Exponent 0x86 = 134. Der Faktor beträgt damit 27 = 128; der Bruchteil 0x6A0000 ergibt 1,828125. Also gilt 1,828125 × 128 = 234.

Ganzzahlen

Wert = höherwertiges Wort × 65536 + niederwertiges Wort

Eine 32-Bit-Ganzzahl ohne Vorzeichen setzt sich aus beiden Registern zusammen. Für Ganzzahlen mit Vorzeichen gilt das Zweierkomplement: Wenn das höchstwertige Bit 1 ist, ziehen Sie 232 ab (bei einem einzelnen Register 216). FF38 als 16-Bit-Ganzzahl mit Vorzeichen ist −200.

Beispiele: Dekodierung von Modbus-Gleitkommazahlen

234 V Spannung aus zwei Registern

Ein Zähler liefert 436A und 0000 für eine Phasenspannung. In ABCD-Reihenfolge ergeben die Bytes 43 6A 00 00 den Wert 234. Mit vertauschten Registern liefern dieselben Daten 2,4184e‑41: ein deutlicher Hinweis auf die falsche Reihenfolge.

Wert in ABCD-Reihenfolge 234 Im Rechner öffnen

Gleitkommazahl mit vertauschten Wörtern

Ein anderes Gerät liefert zuerst 4000, dann 43C8. In ABCD-Reihenfolge ergibt das 2,004137, einen plausibel wirkenden, aber falschen Wert. Mit vertauschten Registern (CDAB) werden die Bytes zu 43 C8 40 00 und ergeben 400,5. Prüfen Sie einen bekannten Messwert, etwa eine Spannung zwischen zwei Phasen, bevor Sie weiteren Werten dieses dokumentierten Registerblocks vertrauen.

Wert in CDAB-Reihenfolge 400,5 Im Rechner öffnen

Energiezählerstand als 32-Bit-Ganzzahl ohne Vorzeichen

Energieregister enthalten häufig 32-Bit-Ganzzahlen ohne Vorzeichen. 0001 E240 ergibt 1 × 65 536 + 57 920 = 123456. Die Registertabelle nennt den Skalierungsfaktor, zum Beispiel 0,1 kWh je Zähleinheit: hier also 12 345,6 kWh.

Wert in ABCD-Reihenfolge 123456 Im Rechner öffnen

Häufige Werte in 32-Bit-Gleitkommaregistern

Register üblicher Messwerte in ABCD-Reihenfolge und die Werte bei vertauschten Wörtern aus denselben Registern. Ein winziger Wert wie 2,4e‑41 weist oft auf eine falsche Reihenfolge hin.

Register (Hex)Dekodiert als ABCDDekodiert als CDAB
0000 000000
3DCC CCCD0.1−107605600
3F73 33330.954.1734392e−8
3F80 000012.278e−41
BF80 0000−16.8697e−41
4248 0000502.3777e−41
4366 00002302.4178e−41
43C8 00004002.4315e−41
447A 000010002.4565e−41

Diese Tabelle als CSV herunterladen

Fragen zu Dekodierung von Modbus-Gleitkommazahlen

Warum ist mein Modbus-Wert riesig oder winzig?

Meist ist die Registerreihenfolge oder der Datentyp falsch. Eine Gleitkommazahl in falscher Reihenfolge kann 2,4e‑41 oder 5,9e+25 ergeben. Probieren Sie jede Reihenfolge und vergleichen Sie mit einem nachprüfbaren Wert auf der Anzeige des Geräts.

Überträgt Modbus das höherwertige Byte zuerst?

Innerhalb eines Registers ja: Laut Spezifikation kommt das höherwertige Byte zuerst. Für Werte über zwei oder mehr Register legt sie die Registerreihenfolge nicht fest; diese wählt der Hersteller. Die Registertabelle des Geräts muss sie angeben.

Was unterscheidet ABCD von CDAB?

Die Reihenfolge der beiden Register. Bei ABCD enthält das erste Register die höherwertige Hälfte, bei CDAB die niederwertige. Die Bytefolge innerhalb jedes Registers bleibt gleich.

Wie lese ich einen 32-Bit-Wert?

Lesen Sie zwei aufeinanderfolgende Register in einer einzigen Anfrage, zum Beispiel mit Funktion 03 und der Anzahl 2, ab der in der Registertabelle angegebenen Adresse. Der Modbus-Registeradressrechner wandelt eine Handbuchreferenz wie 40001 in die zu übertragende Adresse um.

Was bedeutet NaN in einem Register?

NaN bedeutet „keine Zahl“. Manche Geräte verwenden NaN oder 0xFFFFFFFF für einen nicht verfügbaren Messwert. Es kann aber auch ein falscher Typ oder eine falsche Reihenfolge sein: Prüfen Sie die Registertabelle, bevor Sie einen Defekt annehmen.

Grenzen dieses Ergebnisses

  • Der Rechner leitet die richtige Reihenfolge nicht allein aus einem plausibel wirkenden Wert ab.
  • NaN und Unendlich können laut Dokumentation ungültige, nicht verfügbare oder übersteuerte Zustände anzeigen, aber auch einen falschen Typ oder eine falsche Reihenfolge. Prüfen Sie die Registertabelle des Geräts.

Kontinuierlich messen

Sobald Typ und Reihenfolge bekannt sind, liest ein ZMB die Register eines RS-485-Geräts und überträgt die Daten über das drahtlose Mesh-Netz an das Gateway, ohne ein Datenkabel bis zur Verteilung zu verlegen.

Verwandte Leitfäden

Quellen

  1. MODBUS Application Protocol Specification V1.1b3 (öffnet in einem neuen Tab) (PDF) Modbus Organization, 2012-04-26
  2. TeSys Tera Modbus RTU communication guide: UINT32 frame example (öffnet in einem neuen Tab) Schneider Electric, DOCA0355EN-01