Modbus Geschichte
Das erste Modbus-Protokoll – Modbus RTU (Remote Terminal Unit) – wurde ursprünglich 1979 von Modicon (heute Schneider Electric) Systems als Programmierprotokoll zur Verwendung mit ihren SPSen veröffentlicht.
Modbus ist ein offenes Protokoll, aber das Wort „Modbus“ ist eine eingetragene Marke von Schneider Electric.
Modbus RTU ist ein grundlegendes serielles Kommunikationsprotokoll. Mit dem technologischen Fortschritt entstand die Nachfrage nach einem Standard, der kompliziertere Konfigurationen ermöglicht, die gängige Transportprotokolle wie Transmission Control Protocol/Internet Protocol (TCP/IP) und User Datagram Protocol (UDP) nutzen. Als Antwort darauf wurde 1999 die Modbus-Variante eingeführt, um diese Anforderung zu erfüllen.
Der Gerätetyp, den Modbus unterstützt
Modbus-Geräte umfassen eine Reihe von Hardware wie HMI, E/A-Schnittstellen, Sensoren, Modems, Gerätesteuerungen, SPSen, Netzwerk-Gateways, Host-Adapter, AC/DC-Wechselrichter, RTUs, SCADA-Hardware, Software-Gerätetreiber, Router und mehr.
Bei den meisten Modbus-Implementierungen in der Praxis handelt es sich um Geräte, die bescheidene Datenübertragungen durchführen, typischerweise in Szenarien, in denen eine hohe Geschwindigkeit nicht entscheidend ist, wie z.B. bei der Temperaturüberwachung.
Über Modbus
Modbus arbeitet als Datenkommunikationsprotokoll, das auf einem Anfrage-Antwort-Rahmen funktioniert. Zuvor als Master-Slave-Protokoll bezeichnet, hat die Modbus-Organisation die Terminologie im Jahr 2020 auf Server und Client aktualisiert.
Sie ermöglicht die Übertragung von Daten zwischen Geräten, die über Busse oder Netzwerke miteinander verbunden sind, hauptsächlich über serielle Leitungen oder Ethernet und zunehmend auch über drahtlose Verbindungen.
Das in der industriellen Fertigung weit verbreitete Modbus-Protokoll ist das vorherrschende Netzwerkprotokoll. Seine Hauptanwendung besteht darin, die Kommunikation zwischen einer Mensch-Maschine-Schnittstelle (HMI) oder einem übergeordneten Steuerungs- und Datenerfassungssystem (SCADA) und Geräten wie Sensoren, speicherprogrammierbaren Steuerungen (PLCs) oder programmierbaren Automatisierungssteuerungen (PACs) zu erleichtern. Dadurch wird die Interoperabilität zwischen verschiedenen Automatisierungsgeräten kostengünstig und unabhängig von der Hardware gefördert.
Modbus erfreut sich aufgrund seines Open-Source-Charakters, seiner benutzerfreundlichen Bedienung und seiner allgegenwärtigen Verwendung großer Beliebtheit. Dies macht es zu einer zuverlässigen Lösung für die Übertragung von diskreten oder analogen E/A- und Registerdaten zwischen Steuergeräten.
Modbus ist ein Messaging-Protokoll der Anwendungsschicht auf Ebene 7 des OSI-Modells und arbeitet auf Servergeräten standardmäßig an Port 502.
Modbus-Varianten
Es gibt mehrere Varianten von Modbus; Varianten und nicht Versionen, da sie im selben Netzwerksegment nicht interoperabel sind und unterschiedliche Verwendungszwecke haben.
- Modbus RTU
- Modbus TCP
- Sicherer Modbus
Modbus RTU
Modbus RTU ist die vorherrschende Variante, die speziell auf serielle Verbindungen zugeschnitten ist.
Es gibt zwei Arten von seriellen Modbus-Verbindungen: Modbus RTU und Modbus ASCII. Praktischerweise werden sie oft unter dem Begriff Modbus RTU zusammengefasst und bezeichnen Varianten, die serielle Kabel verwenden.
Bei Modbus RTU erfolgt die Datenübertragung im Binärformat, während bei Modbus ASCII die Daten in lesbaren ASCII-Zeichen dargestellt werden. Da binäre Nachrichten kürzer sind, können sie theoretisch schneller übertragen und empfangen werden. Umgekehrt ermöglichen ASCII-Nachrichten eine einfachere Überwachung durch Administratoren.
Ein bemerkenswerter Unterschied für Entwickler ist, dass Modbus RTU-Nachrichten keine Start-of-Text-Tokens enthalten. Stattdessen erkennt das Empfangsgerät den Beginn einer neuen Nachricht während einer „stillen“ Periode. Umgekehrt enthalten ASCII-Nachrichten Textanfangs-Token.
Serielle Verbindungen wie Modbus RTU und Modbus ASCII arbeiten auf einer Punkt-zu-Punkt-Basis (P2P). P2P stellt einen Kommunikationskanal zwischen zwei Ports her, wobei Transaktionen ausschließlich vom Client-Gerät initiiert werden. Dies unterscheidet sich von der Peer-to-Peer-Kommunikation, bei der beide Geräte die Kommunikation initiieren können. Ein Beispiel für eine gängige P2P-Verbindung ist die Verwendung eines USB-Laufwerks.
Im Gegensatz zu Modbus TCP kann Modbus RTU nur ein Client-Gerät und bis zu 247 Server-Geräte aufnehmen, je nach dem verwendeten physikalischen Signalstandard, wobei für jedes Gerät ein eigener Port erforderlich ist. Die Einrichtung serieller Verbindungen mit seriellen Kabeln ist einfacher als bei Ethernet-Verbindungen, die die Installation einer Netzwerkkarte und Software sowie die Konfiguration von IP-Adressen erfordern.
Modbus TCP
Modbus TCP, auch bekannt als Modbus Ethernet, ist ein industrielles Ethernet-Protokoll, das TCP/IP auf der Transportschicht verwendet. Es erleichtert die Einrichtung eines Multipoint-Netzwerks, das es einem einzelnen Client-Gerät ermöglicht, mit mehreren Server-Geräten über eine physikalische Ethernet-Ebene zu kommunizieren.
Bei Modbus TCP wird eine Nachricht in ein TCP-Paket eingekapselt, das dann in ein IP-Paket eingekapselt wird, wobei die elektrische Ethernet-Signalisierung für die Übertragung verwendet wird. Die Hauptaufgabe von TCP besteht darin, den korrekten Empfang von Datenpaketen sicherzustellen, während IP für die korrekte Adressierung und Weiterleitung von Nachrichten sorgt.
Es gibt zwei Modbus-Ethernet-Verbindungstypen. Modbus TCP und Modbus-over-TCP-Varianten werden im Allgemeinen unter dem Begriff Modbus TCP zusammengefasst. Bei Modbus TCP wird ein Modbus TCP-Paket in TCP verpackt, während bei Modbus over TCP ein Modbus RTU-Paket in TCP verpackt wird. Technisch gesehen könnte man letzteres als Modbus RTU over TCP bezeichnen, aber aufgrund der Verwendung von Ethernet wird es mit Modbus TCP zusammengefasst.
Ethernet-Verbindungen bieten im Vergleich zu seriellen Verbindungen eine höhere Geschwindigkeit, obwohl die Geschwindigkeit für viele Modbus-Geräte, wie z. B. für die Temperaturüberwachung, in der Regel keine kritische Anforderung darstellt. Außerdem sind Ethernet-Verbindungen zuverlässiger und ermöglichen die Datenübertragung über größere Entfernungen.
Sicherer Modbus
Das 2018 eingeführte Modbus Security Protokoll zielt darauf ab, die Sicherheitsfunktionen zu verbessern und gleichzeitig die Kompatibilität mit der ursprünglichen Spezifikation zu erhalten.
Secure Modbus verwendet die Transport Layer Security (TLS) für eine sichere Kommunikation. Es verwendet eine zertifikatsbasierte Autorisierung, die über Zertifikatserweiterungen übermittelte Rolleninformationen einbezieht. Die Autorisierung ist spezifisch für jedes Produkt und wird durch den Modbus-Funktionscode-Handler aktiviert. Außerdem bietet es eine zertifikatsbasierte Authentifizierung.
Arten von seriellen Verbindungen in Modbus RTU
In Modbus RTU-Netzwerken werden Nachrichten gemäß den von der EIA genehmigten physikalischen Signalstandards RS-485, RS-422 oder RS-232 übertragen, die die elektrischen Eigenschaften der in der seriellen Kommunikation verwendeten Treiber und Empfänger definieren. EIA steht für die Electronic Industries Alliance und RS steht für Recommended Standard.
Es können auch andere Standards verwendet werden, aber dies sind die gängigsten Standards. Bei den EIA-Standards handelt es sich um Schnittstellen der physikalischen Schicht, die Kommunikationskonverter-Chips verwenden, um die Art und Weise der Signalübertragung zu und von verschiedenen Gerätetypen umzuwandeln. Die Datenrate, die Treiberlast, die maximale Treiberausgangsspannung, die Baudrate usw. sind bei den drei Standards unterschiedlich. Manchmal werden Modbus-Implementierungen nach der Art der Schnittstelle bezeichnet, die sie verwenden, z. B. Modbus RS-232 oder Modbus RS-485.
RS-232, das mit der ersten Version von Modbus verwendet wurde, ist mit einer maximalen Datenrate von 20 Kilobytes pro Sekunde langsam, erlaubt nur Kabel mit einer Länge von bis zu 50 Fuß und ist auf den Anschluss eines Client- und eines Servergeräts beschränkt. RS-232 wird jedoch immer noch verwendet, z. B. bei älteren Druckern oder als kostengünstige Möglichkeit, SPSen mit anderen Geräten zu verbinden, die RS-232 verwenden.
Es gibt zwei Arten von RS-232-fähigen Geräten: DTE-Geräte (Data Terminal Equipment), z.B. PCs, und DCE-Geräte (Data Communications Equipment), z.B. Modems. Damit zwei Geräte desselben Typs miteinander kommunizieren können, werden sie über eine umgekehrte RS-232-Kabelverbindung verbunden.
Modbus Plus
Modbus Plus, ein proprietäres, von Schneider Electric entwickeltes Hochgeschwindigkeits-Token-Passing-Netzwerkprotokoll, unterscheidet sich von den Modbus-Varianten. Es erfordert eine proprietäre Verkabelung und Abschlusswiderstände. Während Modbus Plus in erster Linie eine Peer-to-Peer-Nachrichtenstruktur verwendet, kann es auch in Punkt-zu-Punkt- (P2P) und Multidrop-Netzwerken arbeiten. Dieses Protokoll erfordert einen speziellen Coprozessor und verwendet Twisted-Pair-Kabel mit einer Geschwindigkeit von 1 Mbps. Im Gegensatz zu den Modbus-Varianten löst Modbus Plus die Übergänge aus, anstatt sich auf Spannungsauslöser zu verlassen.
Wie funktioniert Modbus?
Jedem Servergerät wird eine eindeutige ID zugewiesen. Wenn ein Client Daten von einem Servergerät anfordert, verwendet er das erste Byte der Nachricht, um zu erkennen, welches Servergerät antworten soll.
- Serielle Verbindungen
- Ethernet-Verbindungen
- Drahtloser Modbus
Serielle Verbindungen
Die Modbus-Nachrichtenstruktur verwendet einen ADU/PDU-Rahmen. Die Protocol Data Unit (PDU) bleibt unabhängig von den darunter liegenden Kommunikationsschichten. In der ADU sind die Adresse des Servergeräts, die PDU und ein Prüfsummenfeld enthalten.
Die PDU enthält einen Funktionscode, der einen Lese- oder Schreibbefehl angibt, sowie ggf. die entsprechenden Daten. Die ADU kennzeichnet den Beginn und das Ende eines Anforderungsrahmens und stellt sicher, dass das empfangende Gerät genau erkennen kann, wann eine Nachricht beginnt und endet. Rahmenformate sind nicht zwischen verschiedenen Varianten austauschbar.
Die von einem Client-Gerät angeforderten Daten werden auf den Server-Geräten in bis zu vier Tabellen gespeichert. Zwei Tabellen verwalten diskrete Ein/Aus-Werte (Spulen), während die beiden anderen numerische Werte (Register) verwalten. Sowohl Spulen als auch Register haben eine Nur-Lese-Tabelle für Eingänge und eine Lese-Schreib-Tabelle für Ausgänge. Die Navigation in diesen Tabellen auf einem Servergerät wird durch eine Modbus-Map erleichtert, die den Speicherort, das Format und die Speicherung der Daten definiert.
Offsets werden auch in der Modbus-Map angegeben. Jeder Datenadresse auf einem Modbus-Server-Gerät wird eine Nummer zwischen 1 und 10000 zugewiesen. Die Datenadressen in Nachrichten verwenden jedoch Zahlen zwischen 0 und 9999. Daher muss von der Adresse des Geräts ein Offset abgezogen werden, bevor Sie es in einer Nachricht verwenden. Die Hersteller können die von ihren Produkten verwendeten Offsets angeben. Die Datenmodelle können von Gerät zu Gerät variieren, je nach den spezifischen Anforderungen. So können bestimmte Geräte beispielsweise ausschließlich diskrete Eingaben speichern.
Ethernet-Verbindungen
Sowohl Modbus TCP als auch Modbus TCP über UDP sind im Wesentlichen Anpassungen der seriellen Variante von Modbus RTU, die für den Betrieb mit einer TCP/IP-Schnittstelle über Ethernet- und Glasfasernetze entwickelt wurden und schnelle und zuverlässige Verbindungen gewährleisten.
Modbus TCP-Transaktionen funktionieren ähnlich wie Modbus RTU-Transaktionen, wenn auch mit einigen Unterschieden. Modbus TCP ermöglicht im Vergleich zu Modbus RTU eine größere Anzahl von Adressen, unterstützt mehrere Client-Geräte, ermöglicht schnellere Übertragungsgeschwindigkeiten und kann so viele Server-Geräte aufnehmen, wie die physikalische Schicht erlaubt. Außerdem können mehrere Client-Geräte gleichzeitig Anfragen an ein einzelnes Server-Gerät senden und Client-Geräte können gleichzeitig Nachrichten an mehrere Client-Geräte senden.
Modbus TCP enthält einen MBAP-Header, einen 7-Byte-Header, der am Anfang der Nachrichten angehängt wird. Dieser Header enthält einen Transaktionsidentifikator zur eindeutigen Identifizierung der Anfrage, einen Protokollidentifikator, der auf 0 gesetzt ist, um das Modbus-Protokoll anzugeben (das für systeminternes Multiplexing verwendet werden kann), die Länge der darauf folgenden Nachrichtendaten und einen vom Client-Gerät angegebenen Einheitenidentifikator zur Identifizierung des Server-Geräts.
Bei Modbus TCP enthält die Application Data Unit (ADU) die Modbus-Nachricht und Informationen über das verwendete Transportprotokoll. Modbus bietet ADU-Varianten, die auf die Unterstützung verschiedener Netzwerkprotokolle und Busse zugeschnitten sind.
Im Gegensatz zu herkömmlichen Modbus-Konfigurationen benötigt das Servergerät in Modbus TCP keine ID, sondern verwendet eine IP-Adresse, wobei die Nachrichten über das Netzwerk weitergeleitet werden. Außerdem wird das Prüfsummenfeld überflüssig, da die Prüfsummenberechnungen auf der Ethernet-Ebene durchgeführt werden. Routing-Informationen, die sich auf die Transportmethode beziehen, wie z. B. TCP oder UDP, werden in der ADU gespeichert.
Drahtloser Modbus
Der drahtlose Modbus wird immer beliebter, da er die Kosten für die Verkabelung reduziert, insbesondere an abgelegenen Standorten mit Sensoren. Um ein Modbus-Netzwerk über eine drahtlose Verbindung einzurichten, müssen Sie die typischen Twisted-Pair-Kabel, die bei RS-485 verwendet werden, durch Standardtransmitter an jedem Netzwerkende ersetzen. Diese drahtlose Einrichtung bleibt sowohl für Client- als auch für Servergeräte transparent.
Datenpakete, die in verschlüsselter Form gesendet und empfangen werden, werden nahtlos in ihr ursprüngliches Format zurückgewandelt, bevor sie das Empfangsgerät erreichen.