Wie man jede Modbus-Registerkarte richtig liest
Jedes Modbus-Gerät kommt mit einer eigenen Registerkarte – und jede hat ihre Tücken. Lernen Sie die vier Datentypen, die Lese-/Schreib-Funktionscodes und die zwei Fehler, die selbst erfahrenen Integratoren passieren.
Eine Registerkarte in vier Schritten lesen
Datentyp bestimmen
Prüfen Sie, ob der Wert in einer Coil, einem diskreten Eingang, einem Input- oder einem Holding-Register liegt – das bestimmt Funktionscode und Zugriffsrechte.
Passenden Funktionscode wählen
FC03/FC04 lesen Holding- bzw. Input-Register, FC06/FC16 schreiben einzelne oder mehrere Register. Der falsche Code liefert eine Exception statt Daten.
Adressierungs-Offset auflösen
Klären Sie, ob die Dokumentation Modicon-Nummern (z. B. 40001) oder die tatsächlich übertragene, 0-basierte Protokolladresse angibt – die Verwechslung ist der häufigste Integrationsfehler.
Byte- und Wortreihenfolge prüfen
Bei 32-Bit-Werten über zwei Register hinweg die Wortreihenfolge des Herstellers mit einem bekannten Testwert verifizieren, bevor Sie dem skalierten Ergebnis vertrauen.
Woran es in der Praxis wirklich scheitert
Die Adressierungsfalle
Die Modicon-Nummerierung beginnt bei 40001, die tatsächliche Adresse auf der Leitung ist 0-basiert – Register 40001 entspricht Protokolladresse 0. Ein Fehler hier verschiebt jeden Lesevorgang um eins.
Vier Datentypen, zwei Zugriffsrechte
Coils und diskrete Eingänge sind 1-Bit-Werte, Input- und Holding-Register sind 16-Bit-Worte. Nur Coils und Holding-Register lassen sich schreiben – Input-Daten und diskrete Eingänge sind konstruktionsbedingt nur lesbar.
Funktionscodes bestimmen die Möglichkeiten
FC01/02 lesen Coils und diskrete Eingänge, FC03/04 lesen Holding- und Input-Register, FC05/06 schreiben eine einzelne Coil bzw. ein Register, FC15/16 schreiben mehrere. Das Gerät weist jeden nicht unterstützten Code für diesen Datentyp zurück.
Die 40001/30001-Falle
Die historische Modicon-Nummerierung (40001, 30001 …) entspricht nicht der 0-basierten Adresse auf der Leitung. Prüfen Sie vor jeder Abfrage, welche Konvention das jeweilige Datenblatt verwendet.
Wortreihenfolge ist nicht genormt
Wenn zwei 16-Bit-Register einen 32-Bit-Wert bilden, unterscheiden sich Hersteller darin, welches Register das höherwertige Wort enthält. Eine falsche Annahme liefert plausibel aussehende, aber falsche Werte.
Keine eingebaute Authentifizierung
Modbus RTU und klassisches Modbus TCP wurden nie mit Sicherheit im Blick entworfen – jedes Gerät im Bus oder Netzwerk kann einen gültigen Befehl senden. Segmentierung und protokollbewusste Gateways übernehmen, was das Protokoll nicht leistet.
Engineering-Unterstützung für Modbus-Integrationen
Wenn sich eine Registerkarte nicht wie dokumentiert verhält, prüfen unsere Ingenieure das vor der Inbetriebnahme – nicht erst bei der Verzögerung auf der Baustelle.
- Registerkarten-Durchsicht anhand der Herstellerdokumentation
- Prüfung von Funktionscodes und Adressierungskonvention vor der Inbetriebnahme
- Bewertung von RS-485-Netztopologie und Terminierung
- Kontrolle von Wortreihenfolge/Byte-Reihenfolge bei Mehrregister-Werten
- Schaltschrankbau und Integrationsunterstützung nach IEC 61439
Häufige Fragen
Was unterscheidet ein Holding-Register von einem Input-Register?
Beide sind 16-Bit-Worte, aber Holding-Register sind les- und schreibbar (Funktionscode 03 zum Lesen, 06/16 zum Schreiben), während Input-Register nur lesbar sind (Funktionscode 04). Diese Festlegung trifft die Geräte-Firmware – prüfen Sie im Datenblatt, welches Register den benötigten Wert enthält.
Warum zeigt mein Modbus-Wert genau das Doppelte, die Hälfte oder etwas völlig Falsches an?
Das ist fast immer eine falsche Wortreihenfolge (Endianness), wenn ein 32-Bit-Wert auf zwei 16-Bit-Register verteilt ist. Hersteller sind sich uneinig, ob das höher- oder niederwertige Wort zuerst kommt – tauschen Sie die Reihenfolge und prüfen Sie gegen einen bekannten Referenzwert.
Warum entspricht Register 40001 im Datenblatt der Adresse 0 auf der Leitung?
Das liegt an der Modbus-Historie: Die klassische Modicon-Nummerierung beginnt Holding-Register bei 40001, die tatsächlich übertragene Protokolladresse ist jedoch 0-basiert. Register 40001 = Protokolladresse 0, Register 40002 = Adresse 1 und so weiter.
Mit welchem Funktionscode schreibe ich einen Wert auf ein Modbus-Gerät?
FC06 schreibt ein einzelnes Holding-Register, FC05 eine einzelne Coil. FC16 schreibt mehrere Holding-Register in einer Transaktion, FC15 mehrere Coils. Input-Register und diskrete Eingänge lassen sich grundsätzlich nicht beschreiben – sie sind konstruktionsbedingt nur lesbar.
Hat Modbus eine eingebaute Sicherheitsfunktion?
Nein. Weder Modbus RTU noch klassisches Modbus TCP sehen in der Spezifikation Authentifizierung oder Verschlüsselung vor – jeder Knoten im Bus oder Netzwerk kann einen gültigen Befehl senden. Sicherheit muss von außen kommen: Netzsegmentierung, ein protokollbewusstes Gateway und eine strikte Zugriffsbeschränkung auf das Automatisierungsnetz.
Brauchen Sie einen zweiten Blick auf Ihre Modbus-Integration?
Unsere Ingenieure prüfen Registerkarten, Verkabelung und Inbetriebnahmepläne, bevor sie zur Verzögerung vor Ort werden. Sprechen Sie uns an.