Modbus-Register erklärt: jede Register-Map richtig lesen
Modbus-Register erklärt für Installateure. Die vier Registertypen, Modicon gegen Busadresse, 32-Bit-Wortreihenfolge und ein Beispiel am Eastron SDM630 Zähler.

Modbus-Register sind die Speicherplätze, in denen ein Gerät seine Werte ablegt, und die Register-Map ist die Tabelle, die der Hersteller dazu liefert, um festzulegen, welcher Wert an welcher Adresse steht. Jeder Energiezähler, jede Wärmepumpe und jeder Wechselrichter bringt eine mit, und jede Tabelle sieht etwas anders aus. Verstehen Sie einmal das Modell dahinter, lesen Sie jede Register-Map jeder Marke ohne zu raten. Dieser Leitfaden erklärt dieses Modell.
Sie lernen, welche vier Registertypen Modbus kennt, wie sich eine Datenblatt-Adresse wie 40001 in die Adresse auf dem Bus übersetzt, wie ein 32-Bit-Wert über zwei Register verteilt liegt und wie Sie eine echte Eastron SDM630 Map in funktionierende Abfragen umsetzen. Geschrieben für Installateure und Integratoren, nicht für Softwareentwickler.
Key Takeaways
- Modbus kennt genau vier Registertypen: Coils und Discrete Inputs (je 1 Bit) sowie Input- und Holding-Register (je 16 Bit).
- Die 1-basierte Modicon-Notation (40001) und die 0-basierte Busadresse (0x0000) sind dasselbe Register: erste Ziffer weglassen und 1 abziehen.
- Ein 32-Bit-Wert belegt zwei Register, und die Wortreihenfolge (Big-Endian oder Little-Endian) ist in der Norm nicht festgelegt, daher liefert die falsche Reihenfolge eine plausible, aber falsche Zahl.
Kostenlos: RS485 und Modbus RTU Installations-Checkliste (PDF)
Die Checkliste für jeden RS485 Bus, bevor Sie die Anlage übergeben. Ausdrucken und mitnehmen.
- Verdrahtungsreihenfolge: A/B Polarität, GND und Schirmung
- Terminierung und Biasing, inklusive Multimeter-Prüfungen
- Spickzettel Kommunikationseinstellungen (Baudrate, Parität, Stoppbits)
- Die 10 häufigsten Fehler und wie Sie sie erkennen
Sie erhalten die Checkliste und gelegentlich einen praktischen Modbus Tipp. Kein Spam, jederzeit abbestellbar.
Was ist eine Modbus Register-Map?
Eine Modbus Register-Map ist eine Herstellertabelle mit jedem les- und schreibbaren Datenpunkt eines Geräts, samt Adresse, Datentyp, Einheit und Zugriffsrechten. Sie ist der Übersetzungsschlüssel zwischen den nackten 16-Bit-Werten auf der RS485- oder TCP-Verbindung und den Temperaturen, Spannungen und Sollwerten, die sie darstellen.
Die Modbus-Norm selbst, festgelegt in der Modbus Application Protocol Specification V1.1b3 der Modbus Organization, definiert nur den Transport und die vier Datenblöcke. Zur Bedeutung einer Adresse sagt die Norm nichts. Deshalb hat jedes Gerät eine eigene Map, und deshalb fordern Sie diese Map als erstes Dokument an, bevor Sie ein neues Gerät in Betrieb nehmen. Zum weiteren Kontext, wie Modbus funktioniert, siehe unseren kompletten Modbus-Leitfaden.
Die vier Modbus-Registertypen
Modbus ordnet alle Daten in genau vier Tabellen, und jede Adresse, die Sie je auslesen, gehört zu einer davon. Sie unterscheiden sich auf nur zwei Achsen: Größe (ein einzelnes Bit oder ein ganzes 16-Bit-Wort) und Zugriff (nur lesen oder lesen und schreiben).
Dieselben vier Blöcke stehen im Datenmodell der Spezifikation, Abschnitt 4.3. Jeder Block hat einen eigenen Adressraum von 0 bis 65535, Adresse 0 existiert also viermal, einmal pro Block. Der Funktionscode, den Sie senden, legt fest, welche der vier Tabellen Sie meinen.
Coils und Discrete Inputs: die Bit-Blöcke
Coils sind einzelne Lese-Schreib-Bits, meist ein Relais, eine Pumpenfreigabe oder ein Ein-Aus-Befehl. Sie lesen sie mit Funktionscode 01 und schreiben mit 05 (einzeln) oder 15 (mehrere). Discrete Inputs sind einzelne Nur-Lese-Bits, meist ein Alarmkontakt oder ein Run-Stop-Status, gelesen mit Funktionscode 02. In HLK und Kältetechnik begegnen Ihnen diese seltener als Register, aber Alarm- und Statusüberwachung liegt hier.
Input- und Holding-Register: die 16-Bit-Blöcke
Input-Register sind 16-Bit-Nur-Lese-Werte, gelesen mit Funktionscode 04. Sie tragen Messdaten: eine Spannung, eine Temperatur, eine momentane Leistung. Holding-Register sind 16-Bit-Lese-Schreib-Werte, gelesen mit Funktionscode 03 und geschrieben mit 06 (einzeln) oder 16 (mehrere). Sie tragen Sollwerte, Konfiguration und auf vielen Geräten auch Messwerte. Rund 80 Prozent dessen, was ein Installateur ausliest, liegt in diesen beiden Blöcken.
Wie finden Sie die Registeradresse?
Hier sitzt die größte Quelle für Off-by-one-Fehler in der Praxis. Datenblätter notieren Adressen in zwei verschiedenen Notationen, und diese zu verwechseln setzt Sie bei jeder Auslesung ein Register zu hoch oder zu niedrig.
Die Busadresse, auch PDU-Adresse genannt, ist das, was tatsächlich im Modbus-Frame steht. Sie ist 0-basiert, das erste Holding-Register ist also Adresse 0x0000. Die Modicon-Notation, der klassische fünfstellige "4xxxx"-Stil, ist 1-basiert und versteckt den Registertyp in der ersten Ziffer: 40001 ist das erste Holding-Register, 30001 das erste Input-Register, 10001 der erste Discrete Input, 00001 der erste Coil.
Erste Ziffer weglassen und 1 abziehen: 40001 wird 0x0000.
Zum Umrechnen lassen Sie die erste Ziffer weg und ziehen 1 ab. Datenblatt 40001 ist also Busadresse 0x0000, und 40100 wird 0x0063. Manche moderne Datenblätter überspringen Modicon ganz und notieren die 0-basierte Hex-Adresse direkt. Keine der beiden ist falsch; Sie müssen nur wissen, welche Notation das Blatt vor Ihnen verwendet, bevor Sie eine einzige Adresse in Ihr Tool eintippen.
Werte, die über mehr als ein Register laufen
Ein einzelnes Register enthält 16 Bit und reicht damit bis 65535. Jeder größere Wert, und jede Fließkommazahl, verteilt sich über zwei oder mehr aufeinanderfolgende Register. Ein 32-Bit-Float oder int32 belegt zwei Register; ein 64-Bit-Wert vier.
Der Haken ist, dass die Modbus-Spezifikation die Reihenfolge dieser Wörter nicht festlegt. Ein Hersteller darf das höhere Wort zuerst senden (Big-Endian) oder das niedrigere Wort zuerst (Little-Endian, auch Word Swap). Lesen Sie sie in der falschen Reihenfolge, erhalten Sie eine plausible, aber falsche Zahl, oft um einen großen Faktor daneben oder negativ.
Eastron, Carlo Gavazzi und die meisten europäischen Energiezähler nutzen Big-Endian-Wortreihenfolge. Manche asiatische Marken und viele SPS stehen standardmäßig auf Little-Endian. Das Datenblatt nennt es fast immer, meist als "MSW first" oder "float, ABCD/CDAB". Nennt es das nicht, und der Wert stimmt klar um einen Faktor nicht, probieren Sie die getauschte Reihenfolge, bevor Sie die Verkabelung verdächtigen.
Beispiel: die Eastron SDM630 Map lesen
Der Eastron SDM630 ist ein dreiphasiger Hutschienen-Energiezähler, der seine Messungen als 32-Bit-Floats in Input-Registern anbietet, gelesen mit Funktionscode 04. Hier der obere Teil seiner Map in Bus- (PDU) Notation.
| Busadresse | Wert | Typ | Einheit |
|---|---|---|---|
| 0x0000 | Spannung L1 gegen Neutral | Float32 | V |
| 0x0006 | Strom L1 | Float32 | A |
| 0x000C | Wirkleistung L1 | Float32 | W |
| 0x0034 | Gesamte Wirkleistung System | Float32 | W |
| 0x0048 | Gesamte Wirkenergie Bezug | Float32 | kWh |
Um Spannung L1 zu lesen, senden Sie Funktionscode 04 mit Startadresse 0x0000 und Anzahl 2 (zwei Register, weil der Wert ein 32-Bit-Float ist). Der Zähler gibt vier Datenbytes zurück, die Sie als Big-Endian-Float dekodieren. Laut dem Eastron SDM630 Modbus-Protokoll-Datenblatt folgt jedes Messregister demselben Muster, wenn Sie also eines dekodiert haben, haben Sie alle dekodiert.
Beachten Sie, dass der SDM630 Messungen in Input-Register legt (Funktionscode 04), während ein Gerät wie eine Wärmepumpe dieselbe Art Daten oft in Holding-Register legt (Funktionscode 03). Prüfen Sie immer die Registertyp-Spalte der Map, nicht nur die Adresse. Wollen Sie die Arbeit auf Byte-Ebene ganz überspringen, ist der SDM630 ein fertiges Template, das jedes Register für Sie abbildet.
Warum dieselbe Adresse je Marke etwas anderes bedeutet
Weil die Norm pro Adresse keine Bedeutung festlegt, ist Register 0x0000 auf dem einen Zähler eine Spannung, auf dem nächsten eine Firmware-Version und auf einem dritten ein Sollwert. Es gibt keine universelle Map, und kein Gateway erkennt automatisch, was ein Register bedeutet. Das ist die Tatsache, die Installateure überrascht, die von BACnet mit seinen selbstbeschreibenden Objektnamen auf nacktes Modbus wechseln.
Ein konkreter Fall. Register 0x0000 liefert auf einem Eastron SDM630 die Spannung L1 gegen Neutral, auf einer typischen Wärmepumpe den Sollwert der Vorlauftemperatur und auf einem Wechselrichter die Firmware-Version des Geräts. Dieselbe Adresse, drei Bedeutungen, und nur die geräteeigene Register-Map sagt, welche Sie gerade lesen.
Die einzige echte Ausnahme ist SunSpec, ein standardisiertes Modbus-Registermodell, das über 100 Wechselrichter- und Zählerhersteller umsetzen, sodass eine Map auf viele Marken passt. Außerhalb von SunSpec behandeln Sie jedes Gerät als einzigartig und fordern die Map an, bevor Sie beginnen. Um herauszufinden, welche Geräte und Adressen überhaupt auf einem Bus liegen, führen Sie zuerst einen Modbus-Netzwerk-Scan durch.
Register-Map-Probleme beheben
Kommt ein Wert falsch zurück statt gar nicht, gehen Sie diese vier der Reihe nach durch, bevor Sie die Verkabelung anfassen.
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Wert steht ein Register daneben | Modicon und Busadresse verwechselt | 1 abziehen und erste Ziffer weglassen, oder zurückrechnen |
| Wert um großen Faktor daneben oder negativ | Falsche Wortreihenfolge bei 32-Bit-Wert | Höheres und niedrigeres Wort tauschen (Big- gegen Little-Endian) |
| Auslesung scheitert mit Exception 02 | Adresse außerhalb der Map des Geräts | Nur Adressen lesen, die die Map nennt; manche Bereiche sind Lücken |
| Auslesung scheitert mit Exception 03 | Zu viele Register auf einmal angefragt | Funktionscode 03 und 04 lesen höchstens 125 Register pro Anfrage |
Antwortet ein Bus gar nichts, liegt das Problem in der Adressierung oder der physikalischen Schicht, nicht in der Map. Beginnen Sie mit unserer RS485-Verkabelungsanleitung und der Modbus-RTU-Erklärung.
Hier passt das ModbusCloud Gateway. Das Gateway liest jedes Modbus-RTU- oder TCP-Gerät in ein Cloud-Dashboard über fertige Register-Templates, Sie wählen also das Gerät, statt seine Map von Hand zu entschlüsseln. Es übernimmt die Adressumrechnung und die Wortreihenfolge für Sie.
Was sind die vier Typen von Modbus-Registern?
Modbus kennt Coils und Discrete Inputs, das sind einzelne Bits, sowie Input- und Holding-Register, das sind 16-Bit-Wörter. Coils und Holding-Register sind les- und schreibbar; Discrete Inputs und Input-Register nur lesbar. Jeder Typ hat eigene Funktionscodes und einen eigenen Adressraum.
Was ist eine Modbus Register-Map?
Eine Modbus Register-Map ist eine Herstellertabelle mit jedem Datenpunkt eines Geräts, samt Adresse, Datentyp, Einheit und Zugriffsrechten. Weil die Norm pro Adresse keine Bedeutung festlegt, braucht jedes Gerät eine eigene Map, um nackte Werte in echte Messungen zu übersetzen.
Wie finde ich eine Modbus-Registeradresse?
Prüfen Sie, ob das Datenblatt Modicon-Notation nutzt (1-basiert, fünf Ziffern wie 40001) oder die Busadresse (0-basiert hex wie 0x0000). Zum Umrechnen von Modicon in die Busadresse lassen Sie die erste Ziffer weg und ziehen 1 ab, 40001 wird also 0x0000.
Was ist der Unterschied zwischen Input- und Holding-Registern?
Beide sind 16-Bit-Register. Input-Register sind nur lesbare Messwerte, gelesen mit Funktionscode 04. Holding-Register sind les- und schreibbar und enthalten Sollwerte, Konfiguration und oft auch Messwerte, gelesen mit Funktionscode 03 und geschrieben mit 06 oder 16.
Wie viele Bits hat ein Modbus-Register?
Ein Modbus-Register hat 16 Bit, also zwei Byte, mit einem Wert von 0 bis 65535. Coils und Discrete Inputs sind einzelne Bits. Werte größer als 65535, und alle Fließkommazahlen, belegen zwei oder mehr aufeinanderfolgende Register.
Warum liest mein Modbus-Wert als Unsinn?
Ein 32-Bit-Wert belegt zwei Register, und die Modbus-Norm legt ihre Reihenfolge nicht fest. Ist das Gerät Big-Endian und Ihr Tool Little-Endian, oder umgekehrt, kombinieren die Wörter falsch und der Wert steht um einen großen Faktor daneben. Tauschen Sie die Wortreihenfolge, um es zu beheben.
Kann man in ein Modbus-Holding-Register schreiben?
Ja. Holding-Register sind les- und schreibbar. Schreiben Sie ein einzelnes Holding-Register mit Funktionscode 06 und mehrere mit Funktionscode 16. Input-Register und Discrete Inputs sind nur lesbar. Prüfen Sie immer zuerst die Zugriffsspalte in der Register-Map.
Bereit, Register-Maps nicht mehr von Hand zu entschlüsseln? Das ModbusCloud Gateway liest jedes Modbus-Gerät in ein Cloud-Dashboard über fertige Templates und übernimmt Adressumrechnung und Wortreihenfolge automatisch. Sehen Sie, wie eine komplette Überwachungskette für Ihre Anlagen aussieht.
Frage zu Ihrer Anlage?
Stellen Sie sie hier. Wir denken in Ihrem Projekt mit, und eine kostenlose Integration gehört dazu.