Zum Inhalt
Tastatur
  • Hilfe anzeigen?
  • Untermenü öffnen↓ / Space
  • Untermenü schließenEsc
  • Studio finden→ Studio
Tiefe
Fortgeschritten

Modbus TCP

Was ist Modbus TCP — und was fällt gegenüber der seriellen Fassung weg, wenn ein Gerät über die Netzwerkdose angebunden wird?

Modbus TCP ist Modbus, das über eine Netzwerkverbindung läuft. Ein Client baut eine TCP-Verbindung zu einem Server auf, schickt eine Anfrage mit Funktionscode und Registernummer, bekommt eine Antwort — und diese Anfrage sieht Byte für Byte genauso aus wie auf einer seriellen Leitung. Ausgetauscht ist nur die Verpackung: Vor die Nachricht setzt sich ein sieben Byte langer Kopf, der Slave-Adresse und Prüfsumme der seriellen Fassung ersetzt. Im Wohnhaus ist das inzwischen der häufigere Weg, weil Wechselrichter, Wärmepumpen und Energiezähler eine Netzwerkbuchse mitbringen und keine Klemmleiste.

Deine Wärmepumpe kann Auskunft geben — bisher über ein Zweidrahtkabel, das jemand eigens verlegt hat, jetzt über dieselbe Netzwerkdose, an der auch ein Rechner hängen könnte. Für Dich ändert sich damit vor allem die Verkabelung: kein Sonderkabel, keine eingestellten Nummern an den Geräten, keine Widerstände am Leitungsende. Was gleich bleibt, ist die Fleißarbeit dahinter. Auch über das Netzwerk liefert das Gerät nur nummerierte Zahlen, und jemand muss einmalig eintragen, welche Zahl was bedeutet. Und weil das Gerät jetzt im Netz steht, gehört dazu eine zweite Frage: Wer darf es überhaupt ansprechen?

Ausführliche Erklärung

Die serielle Fassung kennt einen Master, der fragt, und Slaves, die antworten. Über TCP heißt dasselbe Verhältnis Client und Server, und der Unterschied ist mehr als ein Wortwechsel: Eine serielle Strecke duldet genau einen Master, ein Server im Netz kann mehrere Clients gleichzeitig bedienen. Die Haussteuerung, ein Auswertungsrechner und das Diagnosewerkzeug des Installateurs können also nebeneinander auf dieselbe Wärmepumpe zugreifen, ohne sich abzustimmen.

Grenzenlos ist das nicht. Die Festlegung führt eine Kenngröße ein, wie viele Anfragen ein Server gleichzeitig bearbeiten kann; sie hängt vom Gerät ab und liegt zwischen einer und sechzehn. Sie gehört zu den Merkmalen, die ein Hersteller angeben soll — und sie erklärt, warum eine Anlage, die mit einem Abfragedienst sauber lief, mit dem zweiten plötzlich Zeitüberschreitungen meldet.

Der Kopf, der die Klemmleiste ersetzt

Vier Felder stehen vor jeder Nachricht.

Der Transaction Identifier ist eine laufende Nummer, die der Server unverändert zurückgibt. Damit lassen sich Antwort und Anfrage einander zuordnen, auch wenn mehrere gleichzeitig unterwegs sind — auf der seriellen Leitung war das entbehrlich, weil dort ohnehin immer nur eine Frage offen war.

Der Protocol Identifier steht auf null und sagt damit: Dies ist Modbus.

Die Length nennt die Zahl der folgenden Bytes. Sie ist nötig, weil TCP einen Datenstrom liefert und keine Pakete: Wo die serielle Fassung den Anfang und das Ende einer Nachricht an den Sendepausen erkennt, sagt hier die Längenangabe, wo eine Nachricht aufhört. Die Zeitregeln von 3,5 und 1,5 Zeichenlängen gelten hier also nicht — und damit fällt eine der häufigsten Fehlerquellen der seriellen Anbindung weg.

Der Unit Identifier ist das Feld, das am meisten Verwirrung stiftet. Er ersetzt die Slave-Adresse, wird aber nur dann gebraucht, wenn hinter der IP-Adresse mehr als ein Gerät steckt: Ein Umsetzer zwischen Netz und serieller Strecke nimmt die Anfrage entgegen und benutzt dieses Byte, um zu entscheiden, welchen der angeschlossenen seriellen Teilnehmer er fragt. Hängt das Gerät selbst am Netz, ist das Feld ohne Bedeutung; die Festlegung empfiehlt dafür den Wert 255. In der Praxis akzeptieren viele Geräte beides, und in Anleitungen steht mal 1, mal 255 — beides ist richtig, solange die Gegenseite es genauso sieht.

Eine Prüfsumme fehlt. Sie ist nicht vergessen worden: Die Längeninformation im Kopf zusammen mit der Sicherung, die Ethernet ohnehin über jedes Datenpaket legt, macht eine unerkannte Verfälschung nach der Festlegung praktisch ausgeschlossen.

Erreichbarkeit ist die neue Verkabelung

Auf der seriellen Strecke war die Frage, ob zwei Geräte miteinander reden, eine Frage der Klemmen: Wer nicht angeschlossen ist, ist nicht dabei. Im Netz ist jedes Gerät zunächst für jedes andere erreichbar, und das ist die eigentliche Änderung.

Reserviert ist der TCP-Port 502, und ein Gerät muss dort standardmäßig lauschen. Abweichende Ports sind erlaubt und in manchen Anwendungen üblich, aber die Festlegung besteht darauf, dass Port 502 zusätzlich erreichbar bleibt.

Zur Absicherung sagt die Festlegung selbst nur, dass es sie braucht: In kritischen Umgebungen müsse der Zugriff auf die Daten eines Geräts für unerwünschte Gegenstellen unterbunden werden, und dafür sei ein Sicherheitsbetrieb nötig. Eine Anmeldung, eine Verschlüsselung oder eine Rechteprüfung gehört nicht zum Verfahren. Wer schreibend zugreifen darf, kann Sollwerte verstellen — bei einer Wärmepumpe oder einem Wechselrichter ist das mehr als eine Datenschutzfrage. Deshalb gehört Gebäudetechnik mit Modbus-Anschluss in ein eigenes Netzsegment, das Gäste, Medien und alles, was aus dem Internet kommt, nicht erreichen.

Dazu kommt eine kleine, aber lästige Betriebsfrage: die Adresse. Ein Gerät, das seine IP-Adresse vom Router bekommt und nach einem Stromausfall eine andere hat, ist für die Steuerung verschwunden. Entweder bekommt es eine feste Adresse, oder der Router bekommt einen Eintrag, der ihm immer dieselbe zuweist. Beides ist Arbeit von zehn Minuten und der Grund für erstaunlich viele Störungsmeldungen.

Was sich nicht ändert

Das Datenmodell. Modbus TCP transportiert dieselben Funktionscodes und dieselben nummerierten Register wie die serielle Fassung, und es sagt genauso wenig darüber, was an einer Registerstelle steht. Die Registertabelle des Herstellers wird gebraucht, bevor das Angebot geschrieben wird, und sie gilt je Gerät und je Firmwarestand. Ausführlich steht das beim Eintrag zu Modbus RTU; über TCP fällt davon nichts weg.

Häufiges Missverständnis

„TCP ist gesichert, also ist Modbus TCP sicher." Zwei verschiedene Bedeutungen von Sicherheit sind hier zusammengerutscht. TCP sorgt dafür, dass die Bytes vollständig und in der richtigen Reihenfolge ankommen — das ist Übertragungssicherheit und tatsächlich besser als bei der seriellen Fassung. Über die Frage, wer schreiben darf, sagt es nichts. Ein Gerät mit Modbus-Anschluss im Netz nimmt Befehle von jedem an, der es erreicht.

Der zweite Irrtum betrifft den Namen. „Modbus RTU over TCP" ist nicht dasselbe wie Modbus TCP: Dort wird der komplette serielle Rahmen einschließlich Slave-Adresse und Prüfsumme in eine Netzwerkverbindung gesteckt, statt ihn durch den Kopf zu ersetzen. Manche Umsetzer beherrschen nur diese Betriebsart. Zwei Geräte, die beide „Modbus über Ethernet" im Datenblatt stehen haben, finden deshalb nicht zwangsläufig zueinander — und der Fehler sieht aus wie ein Netzproblem, obwohl er eine Formatfrage ist.

Nicht zu verwechseln mit

  • Modbus RTU: dieselbe Logik über eine serielle Leitung. Dort gelten Adressvergabe, Abschluss, Ruhepegel und Zeitregeln, hier keines davon.
  • Modbus RTU over TCP: der serielle Rahmen samt Prüfsumme, eingepackt in eine Netzwerkverbindung. Gleiche Kabel, anderes Format, nicht kompatibel.
  • BACnet/IP: Gebäudeautomation über dasselbe Netz, aber mit benannten Objekten statt nummerierter Register. Zwei verschiedene Welten auf einer Leitung.
  • Netzwerk-Gateway: in der IP-Welt der Weg aus dem eigenen Subnetz heraus. Gleiches Wort, anderes Thema als der Umsetzer zwischen zwei Systemwelten.

In der Planung

Eine Wärmepumpe, ein Wechselrichter mit Batteriespeicher und ein Energiezähler sollen an die Haussteuerung. Alle drei bringen eine Netzwerkbuchse mit, und die naheliegende Antwort — alles in dieselbe Dose — ist die falsche Reihenfolge. Zuerst zu klären ist, welche Größen gebraucht werden, wie aktuell sie sein müssen und ob die Steuerung nur mitlesen oder auch schreiben soll.

Aus dieser Antwort folgt der Weg. Geht es um eine einzige Information, ist ein potenzialfreier Kontakt weiterhin der kürzeste Weg und braucht weder Netz noch Registertabelle. Sobald Messwerte, Sollwerte und Betriebsarten dazukommen, führt er über das Netz — und dann steht die Frage nach dem Segment an: ein eigenes Netz für die Gebäudetechnik, feste Adressen für die drei Geräte, und eine Festlegung, welches System schreiben darf und welches nur liest.

Was in dieser Reihenfolge gern zu spät kommt, ist die Abfragehäufigkeit. Jede Größe, die sekündlich abgefragt wird, ist eine Verbindung, die dauerhaft offen ist, und jedes Gerät hat dafür eine Obergrenze. Eine Anlage, die vier Werte im Minutentakt liest, läuft jahrelang unauffällig; dieselbe Anlage mit vierzig Werten im Sekundentakt bringt manchen Wechselrichter an seine Grenze. Diese Zahl gehört in die Übergabe, zusammen mit der Angabe, gegen welchen Firmwarestand eingerichtet wurde.

Verknüpfte Inhalte

Wie das Frage-Antwort-Verfahren, die Funktionscodes und die Register funktionieren und warum die Registertabelle die eigentliche Arbeit ist, steht bei Modbus RTU. Die einfache Meldung ohne Protokoll behandelt der potenzialfreie Kontakt, die Trennung von Netzsegmenten der Eintrag zu VLAN und Subnetz. Das Datenmodell der Gebäudeautomation, das demselben Netz begegnet, behandelt der Eintrag zu BACnet; die Übersetzung zwischen zwei Systemwelten der Eintrag zum Gateway.

Quellen

Client-Server-Modell, Aufbau und Bedeutung der vier Kopffelder, der Wegfall der Prüfsumme, Port 502 samt Lauschpflicht, die Feststellung zur nötigen Zugriffsbeschränkung und die Obergrenze gleichzeitiger Anfragen stammen aus der Modbus-Festlegung für TCP/IP in der Fassung V1.0b von 2006. Die Aussagen zum Datenmodell folgen der seriellen Festlegung, die beim Eintrag zu Modbus RTU belegt ist.

Tastaturkürzel