Serielle Kommunikation in Modbus-Umgebungen
Integration serieller Teilnehmer mit dem W&T Com-Server
Modbus ist ein gegen Ende der 1970er Jahre von Modicon eingeführtes Kommunikationsprotokoll für den Austausch von Daten zwischen Steuerungen, SCADA-Systemen, Datenloggern usw. Bis heute ist es ein in der Industrie breit akzeptierter Standard und erfreut sich auch in der Vernetzung von PV- und Windkraft-Komponenten (Wechselrichter, Datenlogger, Speicher, Energiezähler etc.) großer Beliebtheit.
Detaillierte Beschreibungen und Artikel zu Modbus sowie die Spezifikation selbst sind in großer Anzahl frei im Internet verfügbar. An dieser Stelle gibt es hier daher nur eine kurze Übersicht der wichtigsten Eigenschaften, um die Einsatzmöglichkeiten der Com-Server in verschiedenen Umgebungen zu zeigen. Verschiedene Anwendungsmöglichkeiten der Com-Server in Modbus-Umgebungen finden Sie weiter unten auf der Seite.
Modbus im Allgemeinen
Modbus ist ein striktes Master/Slave-Verfahren. Das bedeutet: Modbus-Slaves dürfen ausschließlich auf an sie adressierte Anfragen, die sog. Requests, einen Modbus-Masters reagieren. Die Kommunikation basiert auf dem Lesen bzw. Schreiben von Registern durch den Master. Jeder Request enthält:
Länge | Name | Beschreibung |
---|---|---|
1 Byte | Address | Adresse des Slaves |
1 Byte | Function Code | Art bzw. Breite des Registers und Zugriff lesend oder schreibend |
2 Byte | Start Address | Startadresse des Zugriffs (High-Byte first) |
2 Byte | Register Count | Anzahl der zu lesenden/schreibenden Register |
Ein adressierter Slave darf mit einer sog. Response antworten. Eine erfolgreiche Response enthält:
Länge | Name | Beschreibung |
---|---|---|
1 Byte | Address | Adresse des Slaves |
1 Byte | Function Code | Identisch zum Request |
1 Byte | Length | Anzahl folgender Bytes mit dem Inhalt der angeforderten Register |
Dabei können zwei Fehlerfälle auftreten:
- Der Slave versteht syntaktisch den Request, kennt aber die angeforderten Register nicht und antwortet mit einer Exception (Function Code Response = Function Code Request + 0x80)
- Der Slave reagiert gar nicht.
Modbus/RTU
Modbus/RTU ist der gängige Standard für die Modbus-Kommunikation über serielle Schnittstellen (RS232/422/485). Dabei wird den Modbus-Requests und -Responses eine Checksumme über 2 Bytes angehängt. Das Datagramm-Ende wird von Master und Slave anhand einer Übertragungspause von mindestens 3,5 Zeichenlängen erkannt.
Modbus/TCP
Modbus/TCP wird für die Kommunikation in TCP/IP-Netzwerken genutzt. Dabei wird den Requests und Responses ein Modbus/TCP-Header vorangestellt. Durch die bereits in den Netzwerkprotokollen enthaltenen Checksummen kann auf die zusätzlichen Checksummen des Modbus-Datagramms verzichtet werden.
Länge | Name | Beschreibung |
---|---|---|
2 Byte | Transaction-ID | Fortlaufende Nummer |
1 Byte | Function Code | Identisch zum Request |
1 Byte | Length | Anzahl folgender Bytes mit dem Inhalt der angeforderten Register |
On the wire: Modbus/RTU vs. Modbus/TCP
Modbus/ASCII und Modbus/TCP Secure Protocol
Beide sind weitere Modbus-Protokoll-Varianten, die in der Praxis allerdings nur geringe Verbreitung genießen. Weder Modbus/ASCII noch Modbus/TCP Secure Protocol werden von W&T-Geräten unterstützt.