Ein Zähler an einer RS-485-Leitung und derselbe Zähler mit Ethernet-Anschluss beantworten dieselben Modbus-Anfragen anhand derselben Registertabelle. Nur der Transport unterscheidet sich: Modbus RTU nutzt die serielle Leitung, Modbus TCP das IP-Netz. An einem bestehenden Standort richtet sich die Wahl meist nach der Schnittstelle der vorhandenen Geräte.
Dieser Leitfaden gehört zur Reihe über Modbus und RS-485.
Im Vergleich
| Modbus RTU | Modbus TCP | |
|---|---|---|
| Transport | Serielle Leitung: RS-485 oder RS-232 für ein einzelnes Gerät | TCP/IP über Ethernet oder WLAN |
| Geräteadresse | 1 bis 247 auf dem Bus, 0 für Broadcast | IP-Adresse, dazu eine Unit-ID für Geräte hinter einem Gateway |
| Frame | Adresse, Funktionscode, Daten, 16-Bit-CRC | MBAP-Header (7 Bytes), Funktionscode, Daten |
| Fehlerprüfung | CRC in jedem Frame | TCP-Prüfsummen; keine Modbus-CRC |
| Frame-Abgrenzung | Pause von mindestens 3,5 Zeichenzeiten | Längenfeld im Header |
| Gleichzeitige Anfragen | Jeweils eine auf dem Bus | Mehrere Verbindungen; Transaktionskennung ordnet jede Antwort zu |
| Typische Einstellungen | Baudrate, Parität, Stoppbits, Adresse | IP-Adresse, Port 502, Unit-ID |
| Verkabelung | Verdrilltes Leiterpaar als Linienstruktur, Abschluss an beiden Enden | Standortnetzwerk |
Der Leitfaden zu RS-485 und Modbus erklärt die serielle Schicht unter Modbus RTU und die Unterschiede zu RS-232. Die Funktionscodes sind bei beiden Varianten gleich: 03 liest Halteregister, 04 liest Eingangsregister, 06 und 16 schreiben. Datentypen, Wortreihenfolge und Skalierung sind ebenfalls gleich. Der Leitfaden zu Registertabellen erläutert sie.
Frames im Vergleich
Eine Anfrage zum Lesen von drei Halteregistern ab Adresse 0x006B auf Gerät 17 sieht in beiden Varianten so aus:
| Variante | Bytes (hexadezimal) |
|---|---|
| Modbus RTU | 11 03 00 6B 00 03, gefolgt von der 2-Byte-CRC |
| Modbus TCP | 00 01 00 00 00 06 11 03 00 6B 00 03 |
Im TCP-Frame bilden die ersten sieben Bytes den MBAP-Header: Transaktionskennung (0x0001), Protokollkennung (bei Modbus immer 0), Länge des folgenden Teils (6 Bytes) und Unit-ID (0x11). Die Protokolldateneinheit nach dem Header ist identisch. Der Rechner für Modbus CRC und LRC berechnet die RTU-Prüfbytes:
Zeitbedarf und Durchsatz
Auf einem RTU-Bus läuft jeweils nur eine Anfrage. Ihre Dauer umfasst die Übertragungszeit von Anfrage und Antwort, die Antwortzeit des Geräts und die Pause zwischen Frames. Bei 9.600 Baud und gerader Parität braucht jedes Zeichen 11 Bit, also ein Byte etwa 1,15 ms. Der Modbus-Leitfaden für serielle Leitungen legt oberhalb von 19.200 Baud eine Frame-Pause von 1,75 ms fest. Der Rechner für Modbus-RTU-Zeitbedarf summiert die Zeiten für einen ganzen Bus:
Der Leitfaden zu Abfragen und Wiederholungen zeigt, wie ein ausgefallenes Gerät den Zyklus verlängert. Bei Modbus TCP ist das Netzwerk selten der Engpass. Häufig begrenzen die Verarbeitungszeit des Geräts und die Zahl gleichzeitiger Verbindungen. Viele Zähler lassen nur wenige TCP-Verbindungen zu, manche nur eine. Prüfen Sie diese Grenze, bevor mehrere Systeme denselben Zähler abfragen.
Unit-IDs und Gateways
Ein Gateway zwischen serieller Leitung und Ethernet ermöglicht Modbus-TCP-Clients den Zugriff auf RTU-Geräte. Der Client sendet seine TCP-Anfrage an die IP-Adresse des Gateways und trägt die Adresse des seriellen Geräts als Unit-ID ein. Das Gateway sendet die Anfrage auf den Bus, wartet auf die Antwort und gibt sie über TCP zurück.
Drei Punkte erfordern besondere Aufmerksamkeit:
- Unit-ID bei direkten TCP-Geräten. Der Modbus-TCP-Leitfaden sagt, dass die Unit-ID bei Adressierung des Servers über seine IP-Adresse nicht verwendet wird, und empfiehlt 0xFF. Viele Geräte ignorieren sie; manche verlangen 1 oder ihre eigene serielle Adresse. Verwenden Sie den Wert aus dem Gerätehandbuch.
- Timeouts. Der TCP-Timeout des Clients muss länger sein als der serielle Timeout des Gateways plus dessen Wartezeit für andere Anfragen auf dem Bus. Sonst gibt der Client auf, während das Gateway noch wartet.
- RTU über TCP. Manche Umsetzer leiten RTU-Frames mit CRC, aber ohne MBAP-Header unverändert über eine TCP-Verbindung. Das ist nicht Modbus TCP; der Client muss für diesen Modus eingestellt sein. Der Leitfaden zu Protokoll-Gateways erklärt den Unterschied zwischen Brücke und übersetzendem Gateway.
Dokumentieren Sie für jeden Punkt IP-Adresse, Port, Unit-ID und das physische Gerät, das antwortet. Nach einem Gateway-Tausch sollten Sie zuerst diese Zuordnung prüfen.
Auswahl für einen Standort
Wählen Sie den Transport passend zur vorhandenen Geräteschnittstelle:
| Situation | Übliche Wahl |
|---|---|
| Zähler nur mit RS-485-Klemmen in ein oder zwei Verteilungen | Modbus RTU auf einem kurzen Bus oder eine lokale Schnittstelle |
| Geräte mit Ethernet-Anschluss in einem verwalteten Netz | Modbus TCP mit einem mit der Standort-IT abgestimmten Adressplan |
| Bestehender RTU-Bus, den bereits ein BMS abfragt | Über BMS oder Gateway lesen; keinen zweiten Master hinzufügen |
| Viele serielle Geräte, deren Daten mehrere Systeme benötigen | Modbus-TCP-Gateway vor dem Bus |
| Serielle Zähler weit vom Gateway entfernt, ohne möglichen Kabelweg | Drahtlose Modbus-Schnittstelle neben den Zählern |
Beschaffen Sie für beide Varianten vor der Hardwareauswahl die Registertabelle des genauen Modells und Firmwarestands. „Modbus unterstützt“ sagt nichts darüber, welche Werte das Gerät bereitstellt.
Sicherheit
Modbus TCP und Modbus RTU bieten weder Authentifizierung noch Verschlüsselung. Jeder Client mit Zugang zu Port 502 kann lesen und, sofern das Gerät es erlaubt, schreiben. Schützen Sie die Geräte über die Netzarchitektur: ein separates Netz oder VLAN für Steuerungstechnik, Firewallregeln nur für benötigte Systeme und keine Freigabe zum Internet.
Die Modbus Organization veröffentlicht ein eigenes Modbus Security-Protokoll, das Modbus mit TLS und X.509-Zertifikaten auf Port 802 versieht. Beide Enden müssen es unterstützen. Ein Gateway vor einem ungesicherten Modbus-Gerät macht das Gerät nicht sicher; es verschiebt lediglich die Schutzgrenze.
Prüfen Sie Lesezugriffe vor jedem Schreibversuch. Behandeln Sie Schreibzugriffe als eigenen, mit dem Anlagenverantwortlichen abgestimmten Schritt.
Modbus TCP und RTU mit Edge
Edge auf dem ZGW-20 Gateway ist für beide Varianten ein Modbus-Client. Es fragt Modbus-TCP-Geräte im Standortnetz ab, einschließlich RTU-über-TCP-Umsetzern, und Modbus-RTU-Geräte an einem seriellen Anschluss des Gateways. Jede Verbindung hat eine eigene Warteschlange, eigene Timeouts und ein eigenes Abfrageintervall. Für einen Zähler ohne mögliche Datenleitung zum Gateway liest ein ZMB Modbus Interface die Register über RS-485 und sendet sie über das Zigbee-Mesh. Edge stellt auch einen Modbus-Server bereit. Dadurch kann ein BMS- oder SCADA-System die Standortdaten vom Gateway als Modbus-TCP-Register lesen. Der Leitfaden zur Modbus-RS-485-Inbetriebnahme beschreibt die serielle Seite im Detail.
Häufige Fragen
Was ist der Unterschied zwischen Modbus TCP und Modbus RTU?
Modbus RTU läuft über eine serielle Leitung wie RS-485: binäre Frames mit CRC-Fehlerprüfung und ein Master, der Geräte nach Adresse abfragt. Modbus TCP nutzt ein IP-Netz: dieselben Anfragen mit einem 7-Byte-MBAP-Header über TCP an Port 502. TCP übernimmt die Fehlerprüfung. Funktionscodes und Registertabellen bleiben gleich.
Welchen Port verwendet Modbus TCP?
TCP-Port 502. Das separate Protokoll Modbus Security kapselt Modbus in TLS und verwendet Port 802.
Was ist die Unit-ID bei Modbus TCP?
Ein Ein-Byte-Feld im MBAP-Header. Ein Gateway leitet damit eine Anfrage an ein serielles Gerät dahinter weiter; die Unit-ID enthält dann dessen Adresse. Für ein direktes Modbus-TCP-Gerät empfiehlt der Leitfaden 0xFF. Viele Geräte erwarten aber 1 oder akzeptieren jeden Wert.
Was ist Modbus RTU über TCP?
Ein RTU-Frame mit Adresse und CRC, der ohne MBAP-Header unverändert über eine TCP-Verbindung gesendet wird. Manche Seriell-Ethernet-Umsetzer arbeiten so. Es ist nicht Modbus TCP; der Client muss für jedes Gerät auf den richtigen Modus eingestellt sein.