Zählerschnittstellen

Modbus TCP und Modbus RTU im Vergleich

Modbus TCP und RTU im Vergleich: Transport, Frames, Adressen, Port 502, Zeitbedarf, Gateways, Sicherheit und Wahl für bestehende Standorte.

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 RTUModbus TCP
TransportSerielle Leitung: RS-485 oder RS-232 für ein einzelnes GerätTCP/IP über Ethernet oder WLAN
Geräteadresse1 bis 247 auf dem Bus, 0 für BroadcastIP-Adresse, dazu eine Unit-ID für Geräte hinter einem Gateway
FrameAdresse, Funktionscode, Daten, 16-Bit-CRCMBAP-Header (7 Bytes), Funktionscode, Daten
FehlerprüfungCRC in jedem FrameTCP-Prüfsummen; keine Modbus-CRC
Frame-AbgrenzungPause von mindestens 3,5 ZeichenzeitenLängenfeld im Header
Gleichzeitige AnfragenJeweils eine auf dem BusMehrere Verbindungen; Transaktionskennung ordnet jede Antwort zu
Typische EinstellungenBaudrate, Parität, Stoppbits, AdresseIP-Adresse, Port 502, Unit-ID
VerkabelungVerdrilltes Leiterpaar als Linienstruktur, Abschluss an beiden EndenStandortnetzwerk

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:

VarianteBytes (hexadezimal)
Modbus RTU11 03 00 6B 00 03, gefolgt von der 2-Byte-CRC
Modbus TCP00 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 VerteilungenModbus RTU auf einem kurzen Bus oder eine lokale Schnittstelle
Geräte mit Ethernet-Anschluss in einem verwalteten NetzModbus 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ötigenModbus-TCP-Gateway vor dem Bus
Serielle Zähler weit vom Gateway entfernt, ohne möglichen KabelwegDrahtlose 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.