Alle Lektionen anzeigen
Teil 1
Grundlagen
Teil 2
Modbus RTU
- Lektion 5RS485 erklärt: A, B, Common und Terminierung20 Min.
- Lektion 6Baudrate und Parität: warum 8E1 Standard ist16 Min.
- Lektion 7Das Modbus RTU Frame Byte für Byte, plus CRC18 Min.
- Lektion 8Mehrere Modbus Geräte an einem RS485-Bus16 Min.
- Lektion 9Ihr erstes Modbus Gerät mit mbpoll auslesen22 Min.
- Lektion 10Modbus RTU Fehlersuche: vom Symptom zur Ursache20 Min.
Teil 3
Modbus TCP
Teil 4
Fortgeschritten
- Lektion 16Sicher auf ein Modbus Gerät schreiben18 Min.
- Lektion 17Word Order und Float: gleiche Bytes, anderer Wert22 Min.
- Lektion 18Poll-Intervall und Buslast selbst berechnen18 Min.
- Lektion 19Modbus Sicherheit: das Protokoll hilft nicht16 Min.
- Lektion 20Modbus integrieren: SPS, Home Assistant, Cloud20 Min.
- Lektion 21Modbus Inbetriebnahme: Checkliste und Spickzettel18 Min.
Modbus TCP im Netzwerk: IP, VLAN und Firewall
Modbus TCP und Firewall Port 502: was Ihr Netzwerk zulassen muss, warum ein VLAN sinnvoll ist und wie viele Verbindungen ein Gerät gleichzeitig trägt.
Was diese Lektion behandelt
- Drei Tests, die zeigen, auf welcher Schicht die Verbindung stirbt
- Port 502, die Richtung, und warum ausgehend meist genügt
- Wie viele Verbindungen ein Gerät verträgt, und das eigene VLAN
Vorher lesen: Port 502, der MBAP-Header und die Unit-ID
Modbus TCP verlangt vom Netzwerk erstaunlich wenig: eine erreichbare IP-Adresse und einen offenen TCP-Port, in der Regel 502. Genau deshalb sitzen die meisten Störungen nicht im Protokoll, sondern eine Schicht tiefer, in einer Firewall-Regel, in einem falschen Subnetz oder in einem Gerät, das nur eine einzige Verbindung annimmt. Nach dieser Lektion schließen Sie diese Schichten der Reihe nach aus, bevor Sie überhaupt eine Modbus-Einstellung anfassen.
Erreicht Ihr Client das Gerät überhaupt?
Ein konkreter Fall aus der Gebäudeautomation: Eine NIBE S1255 hängt auf 192.168.30.50, der Automationsserver auf 192.168.30.10, und es kommen keine Werte an. Drei Kommandos in dieser Reihenfolge, jedes davon schließt genau eine Schicht aus.
ping 192.168.30.50
nc -vz 192.168.30.50 502
mbpoll -m tcp -a 1 -t 4 -r 1 -c 2 -1 192.168.30.50
| Schritt | Antwort im Beispiel | Was damit geklärt ist |
|---|---|---|
| 1, Ping | kommt zurück | IP-Adresse, Subnetz, VLAN und Verkabelung stimmen |
| 2, Porttest | keine Verbindung | auf Port 502 hört nichts, oder etwas blockt davor |
| 3, Modbus-Abfrage | noch nicht an der Reihe | Unit-ID und Registeradresse sind noch gar nicht im Spiel |
Im Beispiel bleibt es bei Schritt 2 stehen. Damit ist die Suche auf zwei Ursachen eingegrenzt: eine Firewall dazwischen, oder ein Modbus-Server, der im Gerät noch abgeschaltet ist. Unter Windows prüfen Sie dieselbe Schicht mit Test-NetConnection 192.168.30.50 -Port 502.
Daraus folgt die Regel: Jeder Schritt setzt voraus, dass der vorherige geklappt hat, und Sie gehen erst weiter, wenn er das getan hat. Verschiebt sich der Befund um eine Stufe nach vorn, wenn also schon der Ping ins Leere läuft, dann ist die Firewall kein Thema mehr; dann geht es um Adresse, Subnetz, VLAN oder Kabel. Wie Sie ein Gateway selbst in Betrieb nehmen, steht Schritt für Schritt in der Anleitung Modbus TCP Gateway einrichten. Diese Lektion beschreibt, was das Netzwerk drumherum zulassen muss, unabhängig davon, welches Gerät dort hängt.
Welcher Port, und in welche Richtung
Offen sein muss TCP 502 vom Client zum Gerät, also ausgehend. Die Rückrichtung braucht keine eigene Regel, solange Ihre Firewall zustandsbehaftet arbeitet.
Die Spezifikation ist an dieser Stelle streng: Port 502 ist für Modbus reserviert und muss standardmäßig bedient werden. Ein abweichender Port ist erlaubt, aber 502 muss daneben erreichbar bleiben. Der Client wählt seinen lokalen Quellport selbst, und der liegt immer über 1024. Eine Firewall-Regel lautet deshalb: Quelle Client, beliebiger hoher Port, Ziel Gerät, TCP 502.
Hersteller halten sich nicht immer daran, und das kostet regelmäßig einen Serviceeinsatz.
Die Richtung entscheidet über den Aufwand. Ein Gateway, das lokal abfragt und selbst zur Cloud sendet, baut die Verbindung nach außen auf; die Antwort gehört dann zu einer bestehenden Sitzung und kommt ohne eingehende Regel durch. Ein Client, der von außen an ein Feldgerät will, öffnet dagegen eine neue eingehende Sitzung, und die müssen Sie ausdrücklich erlauben. Wie der Rahmen aussieht, der über diesen Port läuft, steht in der Lektion zu Port 502, dem MBAP-Header und der Unit-ID.
Feste IP oder DHCP?
Ein Modbus-Client spricht ein Gerät ausschließlich über die IP-Adresse an, also braucht er eine Adresse, die morgen noch stimmt. Eine DHCP-Reservierung auf die MAC-Adresse ist der praktische Mittelweg: Das Gerät bekommt seine Adresse weiterhin vom Server, aber immer dieselbe.
Läuft das Gerät auf einer freien Lease, kommt nach einem Stromausfall irgendwann eine andere Adresse heraus, und Ihr Monitoring meldet ein defektes Gerät, obwohl nur die Adresse gewandert ist. Die Alternative ist eine feste Adresse außerhalb des DHCP-Bereichs, sauber dokumentiert.
Bei manchen Geräten geht das Adressthema noch weiter. Eine NIBE S-Serie nimmt ausschließlich Verbindungen aus den privaten Bereichen 10/8, 172.16/12 und 192.168/16 an und verlangt mindestens Softwareversion 2.2.1. Sitzt Ihr Client hinter einem VPN mit öffentlicher Quelladresse, bekommen Sie eine Ablehnung, die wie ein Firewall-Problem aussieht und keines ist.
Wie viele Verbindungen verkraftet das Gerät?
Zwischen 1 und 32, je nach Modell. Die Spezifikation legt die Zahl bewusst nicht fest, also gehört sie ins Datenblatt und nicht in eine Faustregel.
| Gerät | Gleichzeitige Modbus TCP-Verbindungen |
|---|---|
| SolarEdge Wechselrichter | 1 |
| Schneider ION 8600, ION 8800 | 4 |
| Schneider ION 8650, ION9000 | 8 |
| Schneider ION 7550, ION 7650, PM8000 | 32 |
Was bei einer Verbindung zu viel passiert, schreibt die Spezifikation dagegen sehr wohl vor: Der Server schließt die älteste ungenutzte Verbindung. Zählen Sie einmal mit, wer bei Ihnen abfragt. Gebäudeleittechnik, Energiemonitoring, Home Assistant und der Laptop des Servicetechnikers sind zusammen bereits vier Clients.
Was passiert, wenn Sie zu oft fragen
Sie bekommen eines von zwei Bildern: eine Exception 06, oder wechselhafte Antworten ganz ohne Fehlermeldung.
Exception 06 heißt Server Busy und steht so in der Spezifikation: Sind keine Transaktionen mehr frei, baut der Server genau diese Antwort. Wie viele gleichzeitig offene Anfragen ein Gerät verträgt, liegt je nach Bauart zwischen 1 und 16. Transaktionen sind dabei etwas anderes als Verbindungen: Über eine einzige offene Verbindung können mehrere Anfragen gleichzeitig unterwegs sein.
Das zweite Bild kommt von den Herstellergrenzen, und die stehen selten in der Netzwerkdokumentation. SMA schreibt mindestens zehn Sekunden zwischen zwei Datenübertragungen vor und höchstens fünf Parameter gleichzeitig pro Wechselrichter, bei einer Reaktionszeit der Modbus-Schnittstelle von 5 bis 10 Sekunden. Die NIBE S-Serie erlaubt maximal 100 Register pro Sekunde und 20 Register pro Abfrage. 60 Register sind damit drei Abfragen, und alle zwei Sekunden liegen Sie bei 30 Registern pro Sekunde, also bei 30 Prozent des erlaubten Budgets. Wie Sie das für einen ganzen Bus durchrechnen, steht in der Lektion zu Poll-Intervall und Buslast.
Warum Feldgeräte ein eigenes VLAN brauchen
Weil das Protokoll selbst niemanden aussperrt. Kaum ein Feldgerät kennt Authentifizierung oder Verschlüsselung: Wer Port 502 erreicht, darf lesen und in vielen Fällen auch schreiben. Die Zugangskontrolle liegt damit vollständig im Netzwerk drumherum.
Ein eigenes VLAN für die Feldgeräte kostet in einem kleinen Gebäude eine Konfigurationszeile am Switch und bringt zwei Dinge. Erstens entscheiden Sie an genau einer Stelle, wer überhaupt eine Sitzung aufbauen darf. Zweitens bleibt der Broadcast-Verkehr aus dem Büronetz von Geräten fern, deren Netzwerkstack für eine einzige Aufgabe gebaut wurde. NIBE formuliert es im eigenen Handbuch unmissverständlich: Modbus/TCP über das offene Internet sei sehr riskant und werde nicht empfohlen. Wie weit Sie darüber hinaus gehen sollten, behandelt die Lektion Modbus absichern.
Verbindung offen halten oder neu aufbauen?
Offen halten. Die Spezifikation ist eindeutig: Die Verbindung bleibt während der gesamten Kommunikation bestehen, und wenn Schluss ist, schließt der Client sie, nicht der Server. Für jede Abfrage eine neue Verbindung aufzubauen und wieder abzureißen, ist ausdrücklich nicht gewollt.
In der Praxis begrenzen zwei Dinge das Offenhalten. Erstens der Idle-Timeout im Gerät: Bei SolarEdge liegt er bei zwei Minuten, wer also alle fünf Minuten abfragt, findet jedes Mal eine geschlossene Verbindung vor. Fragen Sie häufiger ab als dieser Timeout, oder behandeln Sie den Neuaufbau als normales Verhalten. Zweitens die halboffene Verbindung nach einem Neustart des Clients: Wird derselbe Quellport wiederverwendet, kann es auf den meisten Berkeley-Stacks bis zu 75 Sekunden dauern, bis die Verbindung zurückkommt. Ein anderer Quellport löst das. Die Grundlagen dazu stehen im Überblick Modbus TCP erklärt, die SolarEdge-Besonderheiten in SolarEdge über Modbus auslesen.
Häufige Fehler
Bei den Modbus-Einstellungen anfangen, obwohl schon der Ping scheitert. Dann verstellen Sie Unit-ID und Registeradresse, bis nichts mehr stimmt. Schließen Sie zuerst die Netzwerkschicht aus, das kostet zwei Kommandos.
Vergessen, dass der Modbus-Server im Gerät eingeschaltet sein muss. Bei SolarEdge ist Modbus TCP ab Werk deaktiviert, bei der NIBE S-Serie schalten Sie ihn im Menü 7.5.9 frei. Der Porttest schlägt dann fehl, obwohl Firewall und Adresse stimmen. Erst freigeben, dann suchen.
Mehrere Systeme gleichzeitig dasselbe Gerät abfragen lassen. Bei einem SolarEdge mit genau 1 erlaubten Verbindung verdrängen Monitoring und Laptop einander abwechselnd. Lassen Sie einen Client abfragen und verteilen Sie die Werte von dort weiter.
Schneller abfragen, als der Hersteller es zulässt. SMA nennt mindestens zehn Sekunden zwischen zwei Datenübertragungen, die NIBE S-Serie höchstens 100 Register pro Sekunde. Wer darüber geht, bekommt wechselhafte Antworten und sucht danach im Netzwerk statt im Poll-Intervall.
Selbst ausprobieren
- 1
Das Gerät anpingen
ping 192.168.30.50. Keine Antwort bedeutet: IP-Adresse, Subnetz, VLAN oder Kabel. Modbus ist an dieser Stelle noch gar nicht im Spiel. - 2
Den Port testen
Unter Linux und macOS
nc -vz 192.168.30.50 502, unter WindowsTest-NetConnection 192.168.30.50 -Port 502. Bei einem SolarEdge mit SetApp testen Sie zusätzlich Port 1502. - 3
Den Befund einordnen
Ping erfolgreich, Porttest nicht: Es liegt an der Firewall, oder der Modbus-Server im Gerät ist aus. Viele Geräte haben dafür einen Menüpunkt oder einen DIP-Schalter.
- 4
Erst jetzt ein Register lesen
mbpoll -m tcp -a 1 -t 4 -r 1 -c 2 -1 192.168.30.50. Kommen zwei Zahlen zurück, arbeiten alle drei Schichten. mbpoll ist kostenlos nutzbar, auch gewerblich. - 5
Eine zweite Sitzung öffnen
Starten Sie denselben Aufruf ein zweites Mal von einem anderen Rechner, während der erste läuft. So messen Sie selbst, wie viele Verbindungen das Gerät annimmt.
- 6
Das Ergebnis notieren
IP-Adresse, Port, Unit-ID und die Zahl der erlaubten Verbindungen gehören in die Projektakte. Der nächste Techniker spart sich damit die Schritte 1 bis 5.
Ohne Hardware. Starten Sie den Simulator von pymodbus, ebenfalls kostenlos nutzbar, auch gewerblich, und führen Sie die Schritte 1, 2, 4 und 5 gegen 127.0.0.1 auf Port 5020 aus: nc -vz 127.0.0.1 5020, danach mbpoll -m tcp -p 5020 -a 1 -t 4 -r 1 -c 2 -1 127.0.0.1. Der Simulator nimmt mehrere Verbindungen an, Schritt 5 zeigt dort also nur, wie der Test funktioniert. Echte Geräte haben an dieser Stelle eine Grenze.
Zusammenfassung
- Ping, Porttest und erst danach eine Modbus-Abfrage schließen jeweils genau eine Schicht aus, und jeder Schritt setzt den erfolgreichen vorherigen voraus.
- Port 502 muss laut Spezifikation immer erreichbar bleiben, auch wenn ein zusätzlicher Port konfiguriert ist; SolarEdge nutzt mit SetApp trotzdem standardmäßig 1502.
- Ein Gateway, das selbst nach außen sendet, kommt mit einer ausgehenden Firewall-Regel aus, weil die Antwort zu einer bestehenden Sitzung gehört.
- Wie viele gleichzeitige Verbindungen ein Gerät annimmt, steht im Datenblatt und reicht von 1 bei SolarEdge bis 32 bei einem Schneider PM8000; ist die Grenze erreicht, schließt der Server die älteste ungenutzte Verbindung ohne Fehlermeldung.
- Feldgeräte gehören in ein eigenes VLAN, weil das Protokoll selbst weder Authentifizierung noch Verschlüsselung kennt.
Überprüfen Sie sich selbst
Vier Fragen zu dieser Lektion. Zu jeder Antwort gibt es eine Erläuterung.
Frage 1 von 4
Selbst sehen, wie es funktioniert?
Das ModbusCloud Gateway liest die Geräte aus diesem Kurs aus, ohne dass Sie ein einziges Register programmieren.