Modbus-TCP

Modbus-TCP hat sich neben Profinet IO, EtherNet/IP, EtherCAT und Powerlink als De-facto-Standard für die industrielle Kommunikation über Ethernet etabliert. Basis hierfür bildet eine stabile Spezifikation, verfügbare Basistechnologie und eine Vielzahl industrieller Seriengeräte.

Modbus-TCP gehört zu den Feldbus-on-Ethernet-Lösungen. Diese sind dadurch gekennzeichnet, dass das jeweilige Feldbusprotokoll weitgehend unverändert beibehalten wurde und Ethernet-TCP/IP als neue Übertragungstechnik zugelassen wurde. „Weniger ist mehr“ lautet das Motto dieser Lösungen, die nicht für verteilte Automatisierung, sondern für eine schnelle, zuverlässige Übertragung von Daten zwischen Automatisierungsgeräten und Feldgeräten gedacht sind.

Die Modbus-Lösung
Von Kritikern belächelt und von Praktikern geschätzt, ist Modbus-TCP eigentlich nichts Neues. Vielmehr wurde einfach Ethernet-TCP/IP als eine weitere Übertragungstechnik für das bereits seit 1979 bekannte Modbus-Protokoll zugelassen. Modbus-TCP ist heute ein offener Internet-Draft-Standard, der von Schneider Automation in die für die Internetstandardisierung zuständige Organisation IETF (Internet Engineering Task Force) eingebracht wurde. Die seit der Ursprungsvariante bewährten Modbus-Dienste und das Objektmodell wurden unverändert beibehalten und auf TCP/IP als Übertragungsmedium abgebildet. Die Modbus-Familie wurde damit um eine weitere Variante erweitert und besteht nun aus dem klassischen Modbus-RTU (asynchrone Übertragung über RS-232 oder RS-485), Modbus-Plus (High-Speed-Kommunikation über ein Token-Passing-Netzwerk) und dem Modbus-TCP (Ethernet-TCP/IP-basierte Client-Server-Kommunikation). Allen Varianten gemeinsam ist ein einheitliches Anwendungsprotokoll, das ein universelles Objektmodell für automatsierungstechnische Daten und Kommunikationsdienste für den Zugriff festlegt.

Modbus-Varianten

Das Anwendungsprotokoll ist unabhängig vom jeweils verwendeten Übertragunsgmedium und nach dem Client-Server-Prinzip organisiert. Mit dem Aussenden des Request-Telegramms initiiert der Client einen Dienstaufruf, der vom Server mit einem Response-Telegramm beantwortet wird. Request- und Response-Telegramm enthalten Parameter und/oder Daten.

Während bei einer Modbus-Standardkommunikation zusätzlich zu Befehlscode und Daten noch die Slave-Adresse und eine CRC-Prüfsumme übertragen wird, übernimmt diese Funktionen bei Modbus-TCP das unterlagerte TCP-Protokoll.

Für Modbus gibt es viele in der Spezifikation festgelegte Standardbefehle. Darüber hinaus können die Funktionscodes 65-72 und 100-110 für benutzerdefinierte Dienste individuell benutzt werden. Eine Übersicht einiger einheitlich (Public) festgelegten Modbus-Dienste zeigt die folgende Tabelle.

Methode Datentyp Dienst Code Zugriff
Bitweise Eingänge Read Discrete Input 02 Read
Bitweise Ausgänge/Coils Read Coils 01 Read
Bitweise Ausgänge/Coils Write Single Coil 05 Write
Wortweise Eingänge Read Input Register 04 Read
Wortweise Ausgänge/Coils Write Single Register 06 Write

Modbus-Datenmodell
Das Datenmodell ist einfach strukturiert und unterscheidet 4 Grundtypen: Discrete Inputs (Eingänge), Coils (Ausgänge), Input Register (Eingangsdaten) und Holding Register (Ausgangsdaten). Die Definition und Namensgebung lässt auf die Ursprünge des Modbus-Protokolls schließen. In heutigen Modbus-Implementierungen werden diese Grunddefinitionen sehr großzügig auf die vielfältigen Datentypen moderner Automatisierungsgeräte übertragen. Die Bedeutung und Adresse der Daten müssen die Hersteller im jeweiligen Einzelfall im Gerätehandbuch individuell angeben. Elektronische Gerätedatenblätter und herstellerübergreifende Engineeringtools wie bei den modernen Feldbussystemen sind in der Modbus-Welt bisher (noch) nicht anzutreffen.

Mapping auf TCP/IP
Modbus-TCP verwendet für die Datenübertragung in Ethernet-TCP/IP-Netzwerken das "Transport Control Protocol" (TCP) für die Übertragung des Modbus-Anwendungsprotokolls. Die Parameter und Daten werden dabei nach dem Encapsulation-Prinzip in den Nutzdatencontainer eines TCP-Telegramms eingebettet. Beim Vorgang der Encapsulation (Einbettung) erzeugt der Client einen "Modbus Application Header" (MBAP), der dem Server die eindeutige Interpretation der empfangenen Modbus-Parameter und Befehle ermöglicht. Grundsätzlich darf in einem TCP/IP-Telegramm nur ein Modbus-Anwendungstelegramm eingebettet werden.

Modbus-TCP arbeitet verbindungsorientiert
Bevor Nutzdaten über Modbus-TCP übertragen werden können, muss zunächst eine TCP/IP-Verbindung zwischen Client und Server aufgebaut werden.Serverseitig ist für Modbus-TCP die Portnummer 502 festgelegt. Der Verbindungsaufbau geschieht typischerweise automatisch über das TCP/IP-Socketinterface durch die Protokollsoftware und ist dadurch völlig transparent für den Anwendungsprozess. Ist die TCP/IP-Verbindung zwischen Client und Server erst einmal hergestellt, dann können Client und Server beliebig oft und viele Nutzdaten über diese Verbindung übertragen. Client und Server können gleichzeitig mehrere TCP/IP-Verbindungen aufbauen. Die maximale Anzahl hängt von der jeweiligen Leistungsfähigkeit der TCP/IP-Anschaltung ab. Bei der zyklischen Übertragung von Eingangs- und Ausgangsdaten bleibt die Verbindung zwischen Client und Server permanent bestehen. Im Falle einer Bedarfsdatenübertragung für Parameter oder Diagnosemeldungen kann die Verbindung nach Abschluss der Datenübertragung abgebaut und bei erneutem Kommunikationsbedarf wieder aufgebaut werden.

Systemaspekte
Die serielle Kommunikation über RS-232/485-Modbus-Schnittstellen ist seit vielen Jahren ein weit verbreiteter Industriestandard. Dank des einheitlichen Anwendungsprotokolls können auch serielle Geräte über Protokollumsetzer, z.B. mit dem Anybus Communicator, einfach in Modbus-TCP-Netzwerke integriert werden. In fast allen neueren Geräten, die über einen integrierten Ethernet-TCP/IP-Anschluss verfügen, ist Modbus-TCP als Standardvariante für das Industrial-Ethernet-Anwendungsprotokoll vorhanden. Als Clients stehen eine breite Palette von Standard-SPSen mit zusätzlichem Kommunikationsprozessor, u.a. von Schneider, Modicon, Rockwell und Siemens sowie PC-Karten und OPC-Server zur Verfügung.

Performance
Die Leistungsfähigkeit eines Modbus-TCP-Netzwerkes hängt ganz wesentlich von der Art und Ausführung des jeweiligen Ethernet-Netzwerkes und von der Leistungsfähigkeit der Prozessoren im Kommunikationsinterface der beteiligten Geräte ab. Die Protokolleffizienz des Modbus-TCP-Protokolls ist mit etwa 60% relativ hoch. Dies wird dadurch erreicht, dass das Anwendungsprotokoll die Übertragung mehrerer Registerwerte in einem TCP/IP-Frame erlaubt und dem regulärem TCP/IP-Overhead nur wenige Byte zusätzlichen Protokoll-Overhead hinzufügt. In einem 100 Mbit/s switched Ethernet-Netzwerk können im theoretischen Idealfall etwa 3,6 Millionen 16-Bit-Registerwerte pro Sekunde übertragen werden. In der Praxis wird dieser Wert jedoch bei weitem nicht erreicht, da die tatsächlichen Übertragungszeiten im Netzwerk und vor allem die Protokollbearbeitungszeiten in der Kommunikationsschnittstelle der Feldgeräte nicht vernachlässigt werden können und performance-bestimmende Faktoren darstellen. Praxistests mit einer Momentum-SPS haben ergeben, dass pro Sekunde etwa 4.000 dezentrale I/O-Geräte mit je 32 digitalen E/A- und 16 analogen Messwerten bedient werden konnten. Dies entspricht in etwa auch der Datentransportleistung eines Profibus-DP-Systems mit 1,5 Mbit/s.

Zertifizierung
Für die Zertifizierung von Modbus-TCP-Geräten wurde an der Universität von Michigan ein spezialisiertes Prüflabor eingerichtet. Die Prüfung umfasst einen Protokoll- und einen Interoperabilitätstest. Zertifizierte Geräte werden im Modbus-Produktkatalog gekennzeichnet und bieten Anwendern den Vorteil, dass eventuelle Kommunikationsprobleme im Verbund mit anderen Geräten bereits im Vorfeld eines industriellen Einsatzes erkannt und im Verlauf der Prüfprozedur behoben wurden.