Modbus TCP
Modbus TCP bringt das einfache Modbus-Frage-Antwort-Prinzip ins Ethernet-Netzwerk, über Standard-Port 502.
Links stehen zwei Frager: die SCADA-Visualisierung und ein IoT-Gateway. In der Mitte ein Switch, rechts die Steuerung unter der Adresse 192.168.1.50 auf Port 502.
In 30 Sekunden
Modbus TCP ist die Netzwerk-Variante des uralten Modbus-Standards: Ein Gerät fragt, ein anderes antwortet, gelesen werden dieselben Register (nummerierte Speicherfächer für Zahlenwerte) wie bei der seriellen Version. Neu ist nur der Weg: statt einer einzelnen Kabelleitung läuft alles über normales Ethernet mit Switches. Das ist relevant, weil dadurch mehrere Programme gleichzeitig dieselbe Maschine abfragen können und weil sich alte serielle Geräte über ein Gateway einfach ins Firmennetz einbinden lassen. Man trifft es überall an, wo Steuerungen, Zähler oder Sensoren mit einer Leitwarte oder Cloud reden.
Stell dir eine Firma mit einem grossen Lager vor. Früher gab es nur ein einziges Telefon mit Direktleitung zum Lager: Wer etwas wissen wollte, musste warten, bis die Leitung frei war, und der Reihe nach fragen. Modbus TCP ist wie eine moderne Telefonanlage im ganzen Gebäude. Das Lager hat jetzt eine feste Durchwahl (die IP-Adresse), und mehrere Kollegen können gleichzeitig anrufen und Fragen stellen. Die Fragen selbst sind exakt dieselben wie früher: Wie viel Ware liegt in Regal 3? Wie viel Grad hat es? Nur die Vermittlung ist neu. Früher las man am Ende jeder Nachricht zur Sicherheit noch eine kurze Kontrollzahl mit, an der man merkte, ob sich beim Übertragen ein Zahlendreher eingeschlichen hatte. Genau diese Kontrollzahl, die Prüfsumme, fällt bei Modbus TCP weg: Die Telefonanlage prüft jedes übertragene Wort schon selbst auf Fehler, sodass am Ende nichts mehr verstümmelt ankommt und niemand mehr nachkontrollieren muss.
Wo trifft man Modbus TCP an?
Leitwarten und SCADA
In der Prozessleittechnik holt sich die Visualisierung, also der Überwachungs-Bildschirm im Kontrollraum, ihre Messwerte per Modbus TCP direkt von den Steuerungen im Feld.
Gebäude- und Energietechnik
Stromzähler, Wärmezähler und Wechselrichter in Photovoltaik-Anlagen liefern ihre Verbrauchs- und Ertragswerte oft über Modbus TCP an das Gebäudeleitsystem.
IoT-Gateways und Cloud-Anbindung
Ein kleiner Edge-Computer, also ein Rechner direkt an der Maschine, liest per Modbus TCP Werte aus und schickt sie weiter in eine Cloud-Plattform.
Anbindung alter Bestandsanlagen
Ein Gateway sammelt Daten von älteren seriellen Modbus-RTU-Geräten und stellt sie dem Netzwerk als Modbus TCP zur Verfügung, ohne dass man die alten Geräte tauschen muss.
Fertigungs- und Maschinenbau
SPS-Steuerungen, also die Industrie-Computer, die Maschinen steuern, tauschen über Modbus TCP einfache Zahlenwerte mit übergeordneten Systemen aus.
Prüfstände und Messtechnik
Messgeräte und Netzteile im Labor lassen sich per Modbus TCP fernsteuern und auslesen, weil das Protokoll leicht zu programmieren ist.
Gut geeignet für
- Einfache Zahlenwerte lesen und schreiben, weil Modbus bewusst schlicht ist und nur mit Registern (nummerierten Speicherfächern für Zahlenwerte) arbeitet.
- Herstellerübergreifende Verbindungen, weil fast jedes Industriegerät Modbus versteht und der Standard offen und kostenlos ist.
- Mehrere Frager gleichzeitig, weil über TCP mehrere Frager (Clients) parallel dieselbe Steuerung befragen können.
- Alte serielle Geräte ins Netzwerk holen, weil ein Gateway die Brücke von Modbus RTU zu Modbus TCP schlägt.
- Schnelle Eigenentwicklungen, weil das Protokoll so einfach ist, dass sich Anbindungen mit wenig Aufwand programmieren lassen.
Weniger geeignet für
- Sicherheitskritische oder öffentlich erreichbare Netze, weil Modbus TCP weder verschlüsselt noch Passwörter kennt: dann gehört es in ein abgeschottetes OT-Netz oder man nutzt OPC UA mit eingebauter Sicherheit.
- Komplexe Datenstrukturen mit Namen und Einheiten, weil Modbus nur nackte Zahlen ohne Beschreibung liefert: dafür ist OPC UA mit seinem selbsterklärenden Katalog die bessere Wahl.
- Ereignisse, die das Gerät von selbst melden soll, weil bei Modbus immer der Client fragen muss: für Push-Meldungen passt MQTT besser, ein Melde-Protokoll, bei dem Geräte von selbst senden.
- Harte Echtzeit im Millisekunden-Takt, etwa für Bewegungssteuerung, weil Modbus TCP dafür nicht ausgelegt ist: dort nutzt man PROFINET oder EtherCAT, spezielle Echtzeit-Industrienetze.
Fakten
- Modbus Application Protocol, gepflegt von der Modbus Organization
- Modbus 1979 von Modicon; TCP-Variante seit Ende der 1990er
- TCP/IP über Standard-Ethernet (Switches, normale Netzwerktechnik)
- TCP-Port 502; Gerät wird über seine IP-Adresse angesprochen
- Kleiner Adress-Kopf (MBAP) vor jeder Nachricht mit vier Angaben: laufende Nummer der Anfrage (Transaktions-ID), Protokoll-Kennung, Länge, Geräte-Nummer (Unit-ID)
- Keine Prüfsumme (CRC) nötig; TCP und Ethernet erkennen Übertragungsfehler selbst
- Der Frager (Client) fragt, der Antwortende (Server) antwortet; mehrere Frager gleichzeitig möglich
- Gleiche Funktionscodes und 16-Bit-Register wie Modbus RTU
Im Detail
Gleiches Prinzip, neuer Weg
Modbus TCP ist im Kern dasselbe wie das serielle Modbus RTU. Ein Gerät in der Rolle des Fragers, der Client, stellt eine Frage. Ein anderes Gerät, der Server, antwortet. Gefragt wird immer nach Registern, das sind kleine nummerierte Speicherfächer mit je einer 16-Bit-Zahl (einer ganzen Zahl von 0 bis 65535). Auch die Funktionscodes sind identisch: der Code 03 liest zum Beispiel mehrere Register auf einmal.
Der einzige grosse Unterschied ist der Transportweg. Statt einer seriellen Zweidraht-Leitung läuft die Kommunikation über normales Ethernet, also dieselbe Netzwerktechnik mit Kabeln und Switches, die auch Computer verbindet. Wer Modbus RTU kennt, muss also fast nichts Neues lernen. Nur die Verpackung des Telegramms ändert sich.
Der MBAP-Header statt Adresse und Prüfsumme
Bei der seriellen Version trägt jedes Telegramm vorne eine Geräteadresse und hinten eine Prüfsumme, den CRC. Bei Modbus TCP wird das reine Modbus-Kommando stattdessen in einen kleinen Kopf verpackt, den MBAP-Header. Er ist 7 Byte (also 7 Zeichen) lang und enthält vier Angaben: eine Transaktions-ID, mit der der Client Frage und Antwort zusammenbringt; eine Protokoll-ID, die bei Modbus immer 0 ist (das Feld ist für künftige Erweiterungen reserviert); eine Längenangabe; und die Unit-ID.
Die Prüfsumme (CRC) fällt komplett weg. Das ist keine Nachlässigkeit, sondern Absicht: TCP prüft jedes übertragene Datenpaket mit einer eigenen Prüfsumme, und Ethernet prüft jeden Frame zusätzlich mit seiner Frame Check Sequence. Diese laufende Kontrolle jedes übertragenen Inhalts erkennt Übertragungsfehler bereits zuverlässig. Eine zweite Prüfsumme im Telegramm wäre doppelte Arbeit. Auch die Geräteadresse aus der seriellen Welt wird nicht mehr gebraucht, denn im Netzwerk findet man ein Gerät über seine IP-Adresse.
Mehrere Clients gleichzeitig
Auf der seriellen Leitung gab es nur einen Fragesteller. Er musste die Geräte der Reihe nach abfragen, eines nach dem anderen. Über TCP ist das anders: Ein Server kann mehrere Verbindungen gleichzeitig offen halten. So können zum Beispiel die Leitwarte und ein IoT-Gateway parallel dieselbe Steuerung befragen, ohne sich in die Quere zu kommen.
Das ist einer der grössten praktischen Gewinne. Man kann neue Frager einfach ans Netz hängen, ohne die bestehende Anlage umzubauen. Voraussetzung ist nur, dass die Steuerung genug gleichzeitige Verbindungen erlaubt, was je nach Gerät begrenzt sein kann.
Die Unit-ID und die Brücke zur alten Welt
Wenn ein Gerät direkt im Netzwerk hängt, braucht es eigentlich keine Geräteadresse mehr, denn die IP-Adresse genügt. Trotzdem gibt es im MBAP-Header noch die Unit-ID. Ihre wichtigste Aufgabe ist die Brücke zur seriellen Welt.
Ein Gateway ist ein kleines Übersetzer-Gerät. Es hat eine IP-Adresse im Netzwerk und hängt auf der anderen Seite an einer seriellen Modbus-RTU-Leitung mit mehreren alten Geräten. Kommt eine Anfrage per Modbus TCP herein, schaut das Gateway auf die Unit-ID und weiss dadurch, an welches serielle Gerät dahinter es die Frage weiterreichen soll. So lassen sich Bestandsanlagen ins moderne Netz einbinden, ohne alte Technik zu ersetzen.
Sicherheit: gehört ins geschützte OT-Netz
Modbus TCP ist von Haus aus weder verschlüsselt noch durch Passwörter geschützt. Jeder, der das Gerät im Netzwerk erreicht, kann Register lesen und in vielen Fällen auch schreiben, also die Anlage beeinflussen.
Deshalb gehört Modbus TCP immer in ein abgetrenntes, geschütztes OT-Netz und niemals offen ans Internet. Wer echte Sicherheit mit Verschlüsselung und Anmeldung braucht, greift stattdessen zu OPC UA.
