Modbus ist ein seit langem verbreitetes Kommunikationsprotokoll für den Datenaustausch zwischen industriellen Geräten. Modbus TCP ist die über Ethernet und TCP/IP übertragene Variante dieses Protokolls. Aufgrund seines einfachen Aufbaus, seiner Offenheit und der Unterstützung durch nahezu jedes Gerät jeder Marke wird es häufig in Projekten eingesetzt, in denen Geräte verschiedener Hersteller zusammengeführt werden müssen.
Grundlogik: Client und Server
Modbus beruht auf dem Prinzip Anfrage-Antwort (request/response). Eine Seite stellt eine Frage, die andere Seite antwortet. Ein selbsttätiges Senden von Daten gibt es nicht.
- Client (früher Master genannt): Die Seite, die die Anfrage einleitet.
- Server (früher Slave genannt): Die Seite, die die Anfrage beantwortet. Antrieb,
In der Regel PLC, SCADA oder HMI.
Energieanalysator, Temperaturregler, Remote I/O.
Bei Modbus TCP kann ein Client sich gleichzeitig mit mehreren Servern verbinden; ein Server kann auch mehrere Clients akzeptieren. Dies ist eine wichtige Flexibilität gegenüber dem seriell arbeitenden RTU.
Datenmodell: vier Tabellen
Modbus hält die Daten in vier getrennten Bereichen:
| Feld | Typ | Zugriff | Größe | |—|—|—|—| | Coil | Bit | Lesen / Schreiben | 1 Bit | | Discrete Input | Bit | Nur Lesen | 1 Bit | | Input Register | Word | Nur Lesen | 16 Bit | | Holding Register | Word | Lesen / Schreiben | 16 Bit |
In der Praxis werden am häufigsten Holding Register verwendet. Antriebsparameter, Drehzahlreferenz und Messwerte werden in der Regel in diesem Bereich gehalten.
Gängige Funktionscodes
| Code | Funktion | |—|—| | 01 | Coil lesen | | 02 | Discrete Input lesen | | 03 | Holding Register lesen | | 04 | Input Register lesen | | 05 | Einzelnes Coil schreiben | | 06 | Einzelnes Holding Register schreiben | | 15 | Mehrere Coils schreiben | | 16 | Mehrere Holding Register schreiben |
Welche Funktionscodes ein Gerät unterstützt, ist in dessen eigener Dokumentation angegeben; nicht alle Geräte unterstützen alle Codes.
Unterschied zwischen Modbus TCP und Modbus RTU
| Thema | Modbus RTU | Modbus TCP | |—|—|—| | Physikalische Schicht | RS-485 / RS-232 serielle Leitung | Ethernet | | Topologie | Linie (Bus), mit Abschlusswiderstand | Ethernet-Netzwerk, mit Switch | | Adressierung | 1 Byte Slave-Adresse | IP-Adresse + Unit-ID | | Fehlerprüfung | CRC | eigene Prüfung des TCP | | Nebenläufigkeit | Ein Master | Mehrere Clients | | Nachrichtenkopf | Keiner | MBAP-Header (Transaction, Protocol, Length, Unit) |
Bei Modbus TCP gibt es kein CRC-Feld; die Datenintegrität stellt die TCP-Schicht sicher. Zur Nachricht kommt zusätzlich der MBAP-Header. Das Feld *Unit Identifier* in diesem Header wird besonders in Systemen mit Gateway verwendet, um das dahinterliegende serielle Gerät auszuwählen.
Der Standard-Port für Modbus TCP ist 502.
Adressierungsverwirrung — der häufigste Fehler
Bei Modbus sind zwei verschiedene Adressdarstellungen im Umlauf, und das ist bei der Inbetriebnahme das Thema, das am meisten Zeit kostet.
Protokolladresse: Beginnt bei 0. Der tatsächlich über die Leitung gehende Wert.
Herkömmliche (5-stellige) Darstellung: Beginnt bei 1 und trägt den Feldtyp als Präfix. Holding Register werden im Block 4xxxx dargestellt.
Das heißt, das in der Dokumentation als „40001“ angegebene Register ist über die Leitung die Protokolladresse 0. Wenn die Dokumentation eines Geräts die herkömmliche Darstellung, die Bibliothek auf der PLC-Seite hingegen die Protokolladresse verwendet, entsteht ein Adressversatz. Werden bei der Inbetriebnahme unerwartete Werte gelesen, ist dies die erste zu prüfende Stelle.
32-Bit-Daten und Byte-Reihenfolge
Ein Modbus-Register hat 16 Bit. Ein 32-Bit-Wert (Long Integer oder Gleitkommazahl) wird auf zwei Register aufgeteilt übertragen. Hier stellen sich zwei Fragen:
- Welches Register kommt zuerst — das High Word oder das Low Word?
- Wie ist die Byte-Reihenfolge innerhalb des Registers?
Da der Standard hierzu keine strikte Vorgabe macht, verwenden die Hersteller unterschiedliche Umsetzungen. Ergebnis: Der Wert wird gelesen, ergibt aber keinen Sinn. Die Lösung besteht darin, die Word-/Byte-Reihenfolge in der Gerätedokumentation zu prüfen und bei Bedarf auf der PLC-Seite einen Word-Tausch (Word Swap) durchzuführen.
Ebenso werden Messwerte häufig als skalierte Ganzzahl übertragen (z. B. das Zehnfache des tatsächlichen Werts). Der Skalierungsfaktor steht wiederum in der Gerätedokumentation.
Leistung und Abfragegestaltung
Bei Modbus TCP bedeutet jede Abfrage einen Hin- und Rückweg. Statt viele Einzelregisterabfragen durchzuführen, verbessert das Sammellesen aufeinanderfolgender Register in einer Abfrage die Leistung erheblich. Daher ist es vorzuziehen, dass die auszulesenden Daten auf dem Gerät adressmäßig beieinanderliegen.
Bei der Gestaltung des Abfragezyklus müssen Zeitüberschreitung (Timeout) und Wiederholungsanzahl (Retry) realistisch gewählt werden. Ein zu kurzer Timeout erzeugt unnötige Fehleralarme; ein zu langer Timeout verlangsamt hingegen bei einem Gerätedefekt den gesamten Abfragezyklus.
Grenzen
Modbus TCP ist kein echtzeitfähiges Protokoll. Die Antwortzeit hängt vom Netzwerkverkehr, der Verarbeitungslast des Geräts und dem TCP-Stack ab; sie ist nicht garantiert. Daher ist es für synchrone Motion, schnelle Sicherheitsfunktionen und Regelkreise mit kurzem Zyklus nicht geeignet. Für solche Anforderungen werden echtzeitfähige Protokolle wie EtherCAT oder Profinet IRT verwendet.
Zudem gibt es im Protokoll keine Authentifizierung und Verschlüsselung. Modbus-TCP-Geräte dürfen nicht direkt mit dem Unternehmensnetzwerk oder dem Internet verbunden werden; das Automatisierungsnetzwerk muss getrennt werden.
Wo wird es bevorzugt
- Systeme, in denen Geräte verschiedener Marken zusammengeführt werden müssen
- Auslesen von Messgeräten wie Energieanalysator, Zähler,
- Überwachung von Drehzahlreferenz und Statusinformationen der Antriebe
- Datenübertragung an die SCADA- und Berichtsebene
- Überführung bestehender Modbus-RTU-Geräte über ein Gateway ins Ethernet-Netzwerk
Temperaturregler
Verwandte Produktfamilien: PLC, HMI, AC-Antrieb, Gateway, Ethernet-Switch, Kommunikationsmodule
Leave a Reply