Modbus Grundlagen

Gould Modicon entwickelte die erste speicherprogrammierbare Steuerung. Mit dem Ziel die Steuerungen untereinander effizient über ein serielles Bus-System kommunizieren zu lassen entwickelten sie 1979 den Modbus. Es handelt sich dabei mittlerweile um einen der ältesten und weit verbreitesten Standards. Der Modbus  ist einfach und kostengünstig in Geräte aller Art zu integrieren. Daher ist dieser in einer großen Anzahl an Geräten, wie Sensoren, Zähler, E/A-Module, Aktoren, Bediengeräte, Anzeigen, IPC’s und in fast jeder Steuerung zu finden.

Der auf Ethernet basierte Modbus TCP wurde 2007 als Teil der Norm IEC 61158 aufgenommen.

Physik

Der Modbus kann über verschiedenen Übertragungsmedien eingesetzt werden:

Modbus Remote Terminal Unit (Modbus RTU) nennt sich die Übertragung über die seriellen Standards RS232, RS422 oder RS485.
Die möglichen Baudraten bewegen sich im Bereich von 1.200 kBit/s bis hin zu 115.200 kBit/s. Gebräuchlich sind 9600 kBit/s oder 57.600 kBit/s, da hier das Verhältnis Übertragungsrate zu der davon abhängigen, zulässigen Leitungslänge am ausgewogensten ausfällt. Entsprechend der Vorgaben der RS485 Übertragungstechnik müssen Bus-Abschlusswiderstände gesetzt werden. 

Als Verbindungstechnik werden 9-polige Sub-D Stecker/Buchsen bei RS232 oder auch RS422/RS485 verwendet aber auch Schraubklemmen bei RS422/RS485. 
Bei RS232 ist die Pin-Belegung genormt mit Pin 2 (Empfangsleitung), Pin 3 (Sendeleitung) und Pin 5 (Masse). Bei der Verdrahtung zweier RS232-Geräte wird jeweils die Empfangsleitung auf die Sendeleitung des anderen Gerätes verbunden. Dazu gibt es bereits vorgefertigte Null-Modem-Kabel.

Die serielle Modbus-Übertragung kann auch mittels Medienwandler oder Modem von RS232/RS422/RS485 über andere Medien (z.B. Funk) und über das Internet übertragen werden. Dabei ist zu beachten, dass das von Modbus vorgegebene Zeitverhalten (Zeit zwischen den Telegrammen und Zeit zwischen einzelnen Zeichen einer Übertragung) eingehalten wird.

Bei ModbusTCP wird das Modbus-Protokoll über Ethernet 10/100 BaseTx und den TCP-Layer übertragen. Die Datenübertragungsrate beträgt 10/100 Mbit/s. Eine Übertragung über z.B. WLAN ist ebenfalls problemlos möglich.

Topologie

Abhängig vom verwendeten Übertragungsmedium finden verschiedene Topologien Anwendung.

Bei Modbus RTU mit RS232 handelt es sich um eine Punk-zu-Punkt-Verbindung. Bei RS422 und RS485 folgt der Aufbau einer Linienstruktur die eine Mehrpunkt-Verbindung sein kann (Mehrere Teilnehmer). Ein Netzwerk besteht aus EINEM Master und mindestens einem Slave. Der Master liest und schreibt nacheinander nach Bedarf einzelne Slaves. Zur Identifizierung der Teilnehmer wird eine individuelle Geräteadresse verwendet (Gültiger Bereich ist 1 bis 247).

Bei Modbus TCP sind alle üblichen Ethernet-Topologien nutzbar. Bei Modbus TCP spricht man von Teilnehmern im Netzwerk die entweder über Client (Master) oder Server (Slave)-Funktionalität verfügen.
Der Client ist in der Lage Server zu lesen und zu schreiben. Der Server stellt Daten zur Verfügung bzw. kann beschrieben werden.

Modbus TCP              Modbus RTU

   Client             ->         Master
   Server            ->         Slave

Ein Gerät kann auch beide Rollen einnehmen. Im Gegensatz zu Modbus RTU kann es in einem Modbus TCP Netzwerk mehrere Clients (Master) geben und ein Server(Slave) kann auch mehrere Clients bedienen (Die Anzahl der Verbindungen ist individuell nach Gerät).

Die Adressierung erfolgt über die IP-Adresse. Dabei ist die Modbus-Geräte-Adresse innerhalb des Modbus-Telegramms die 255, aber die meisten Geräte ignorieren diese. Relevant wird diese wenn es sich bei dem Modbus TCP Server um ein Gateway von Modbus TCP auf Modbus RTU handelt (Bsp. HD67507-xx) das Transparent arbeitet. Dann kann die Modbus-Geräteadresse dazu genutzt werden einen bestimmten Modbus RTU Teilnehmer hinter dem Gateway anzusprechen.

Das Protokoll nutzt üblicherweise den TCP-Port 502 und kann über Router auch in andere Sub-Netze oder über das Internet übertragen werden.

Das Modbus-Protokoll allgemein

Das Datenmodell beinhaltet folgende Datentypen (aus Sicht eines Slaves):

Discrete Input      Eingangs-Bit    Nur lesbar
Coil    Ausgangs-Bit     Lese und schreibbar
Input Register  Eingangs Register (16 Bit Word)      Nur lesbar
Holding Register      Ausgangs Register (16 Bit Word)      Lese- und schreibbar


Ist es erforderlich größere Datenmengen oder -typen (z.B. 32- oder 64-Bit Werte) zu lesen oder zu schreiben, müssen einfach entsprechend viele Bit- oder Register-Werte, ab einer Startadresse, mit dem passenden Befehl (Funktionscode) mit der entsprechenden Anzahl der Register oder Bits angesprochen werden, um die Daten Konsistent zu übertragen.
Innerhalb eines Modbus-Telegrammes können maximal 252 Bytes übertragen werden.

Mit den sogenannten FunktionsCodes (Befehlen) wird die Datenrichtung (lesend oder schreibend) und der Datentyp definiert. Der Funktionsumfang der unterstützen Funktionscodes ist von Gerät zu Gerät unterschiedlich.

Zu den üblichen Funktionscodes zählen:

FC 01   Read Coils   Lesen ein oder mehrerer Bit-Ausgänge in Folge (Rücklesen eines Ausgangs)
FC 02   Read Discrete Inputs   Lesen von ein oder mehreren Bit-Eingängen
FC 03 Read Holding Register   Lesen von Ausgangs-Registern in Folge (Rücklesen eines Ausgangs)
FC 04 Read Input Register   Lesen von Eingangs-Registern in Folge
FC 05 Write Single Coil   Schreiben eines Bit-Ausgangs
FC 06 Write Single Register   Schreiben eines Register Ausgangs

Weitere Funktionscodes können sein:
FC 15   Write Multiple Coils  Schreiben von mehreren Bit-Werten in Folge
FC 16   Write Multiple Registers   Schreiben von mehreren Registern in Folge
FC 23 Read/Write Multiple Registers   Schreiben und Lesen mehrerer Register in Folge

 

Hin- und wieder fehlt die Angabe des unterstützen Funktionscodes in der Dokumentation eines Gerätes. Die Angaben lehnen sich dann unter Umständen an die alte Speicherorganisation von Schneider Electric Steuerungen an:

00001  0X-Bit-Typen entsprechend den Coils mit der Datenadresse 1
10001  1X-Bit-Typen entsprechen den Input Discretes mit der Datenadresse 1
30001  3X-Register-Typen entsprechen den Holding Registern mit der Datenadresse 1
40001  4X-Register-Typen entsprechen den Input Registern mit der Datenadresse 1

 

Die Verwaltung des Speichers eines Modbus-Slaves kann unterschiedlich implementiert sein, was öfter zu Fehlern in der Adressierung der Daten führt.

Beim ersten Modell hat ein Slave klar getrennte Speicherbereiche für unterschiedliche Datentypen. Jeder einzelne Block wird über den entsprechenden Lese- oder Schreib-Befehl (Funktionscode) angesprochen. Die Daten werden über unterschiedliche Start-Adressen mit dem gewünschten Offset angesprochen. Der Zugriff auf einen unerlaubten Adressbereich in Kombination mit dem dafür vorgesehenen Funktionscode ist damit ausgeschlossen.

Beim zweiten Modell mit einem kombiniert organsierten Speicher werden die unterschiedlichen Daten immer über dieselbe Start-Adresse und entsprechenden Offset angesprochen. Es können somit dieselben Daten mit entsprechendem Funktionscode wahlweise bit- oder registerweise gelesen oder geschrieben werden. Dieses Modell ist zwar flexibler aber es kann einfacher passieren, dass durch einen falschen Adress-Offset oder falschen Funktionscode, nicht die Daten gelesen werden die eigentlich gewünscht wurden. Daten die gelesen oder geschrieben wurden erscheinen dann unsinnig. Bei Geräten mit diesem Modell des Speichers kann es auch sein, dass der Funktionscode (Read Registers) zum Lesen von Eingängen nicht implementiert wurde, dass sich mit dem Funktionscode (Write Single Register oder Write Multiple Registers) sowohl Eingänge lesen als auch schreiben lassen.  

Ein häufig auftretender Fehler der bei der Adressierung gemacht wird, liegt in unterschiedlicher Darstellung der Startadresse eines Speichers. Bei manchen Geräten wird in der Dokumentation die Start-Adresse in Dezimal beginnend mit 1 angegeben. Bei anderen wird die Angabe Hexadezimal beginnend mit 0x00 gemacht. Dies führt oft dazu dass bei der Datenadressierung ein Offset von 1 erforderlich ist um die gewünschten Daten zu lesen oder zu schreiben.

Wird von Modbus Master ein Slave mit einem vom Slave nicht unterstützen Funktionscode oder eine ungültige Datenadresse angesprochen dann antwortet der Slave mit einer Fehlermeldung (Exception Response).

ExceptioncodeNameBeschreibung
01Illegal functionModbus-Fuktionscode nicht unterstützt
02Illegal data adressModbus-Datenadresse ungültig
03Illegal valueUngültiger Datenwert in Befehl (meist ungültiger Schreibzugriff)

 

​​​​​​​Konfiguration

Bei Modbus RTU wird an jedem Slave üblicherweise die Geräteadresse über DIP-, Drehschalter oder per Software eingestellt. Für die Konfiguration des Masters werden die Geräteadressen der angeschlossenen Slaves, sowie die Information über die unterstützen Funktionscodes und die gewünschten Datenadressen benötigt (Ist der Dokumentation der Slaves zu entnehmen). Die Konfiguration des Masters wird üblicherweise über dessen Software vorgenommen.

Bei Modbus TCP wird zusätzlich noch die jeweilige IP-Adresse des Servers und der verwendete Port (üblich Port 502) benötigt. Server und Client müssen sich im selben Netzwerk befinden (Gleicher IP-Adressbereich). Die Konfiguration des Clients wird entweder über Software oder einen integrierten Webserver des Clients durchgeführt.

Varianten / Versionen

Modbus ASCII, ist eigentlich nur eine Abwandlung des Modbus RTU bei dem das Modbus Protokoll in Form lesbarer ASCII-Zeichen übertragen wird.

Sehr selten anzutreffen ist der ModbusPlus, der zwar auch auf RS485 basiert aber mit dem speziellen Standard ISO/IEC 3309:1991 HDLC auf dem Layer 2 arbeitet. Zu finden bei Feldgeräten und Steuerungen von Schneider Electric. Der Unterschied zu Modbus RTU stellt sich durch zwei unterschiedliche Datenkanäle dar. Zum einen die zyklischen Daten (Global Data) und die azyklischen Daten die vergleichbar bei Modbus RTU bei einem anderen Teilnehmer angefordert werden. Die Globalen Daten werden von jedem Teilnehmer auf dem Bus gesendet der nach dem verwendeten Token-Passing-Verfahren an der Reihe ist. Die Daten können dann von jedem Teilnehmer gelesen werden. Die Datenübertragungsrate beträgt 1 Mbit/s.

Weitere Informationen:

Die Modbus-Organisation ist eine Gruppe unabhängiger Anwender und Anbieter von Automatisierungsgeräten, die die Einführung der Modbus-Kommunikationsprotokollsuite und die Entwicklung von Architekturen für verteilte Automatisierungssysteme in verschiedenen Marktsegmenten vorantreiben will. 

https://modbus.org/

Anwendungsgebiete

Maschinenbau, Gebäudeautomatisierung, Hausautomatisierung, Messtechnik, etc.

Unser Modbus-TCP Portfolio

Fernwartung

Modular aufgebaute Fernwartungs- und M2M-Router Ewon Flexy für Fernwartung und Datendienste

 zu den Fernwartungs-Routern

Bedienen & Beobachten

Professionelle Mensch-Maschinen-Schnittstelle - Ästhetisches Design und ergonomische Bedienung.

 zu den Bediengeräten

Bedienen & Beobachten

Die Smarten HMIs der cMT-Serie - Server / Client HMI-Architektur - Hohe Flexibilität und starke Verbesserung der Arbeitseffizienz.

 zu den Smart HMI (IIoT)

IIoT-Plattform

Maschinendaten zentral sammeln & auswerten, in der hardwareunabhängigen IIoT-Plattform von VISUALYS. Spielend leichte Anbindung von nahezu jedem Modbus TCP-Gerät.

 zur IIoT-Plattform

Gateways

zur Anbindung an Modbus TCP-Schnittstellen
Server / Client.....
verschiedene Gehäusebauformen
unterschiedlichste Busprotokolle möglich

 zu den Modbus-Gateways

Industrial Ethernet Switches

Switches verbinden industrielle Kommunikationskomponenten wie z. B. Steuerungen, Panel-PC, IOs oder Frequenzumrichter an einem dedizierten Punkt und bilden die zentralen Komponenten einer Ethernet-basierten Kommunikation, wie z.B. BACnet.

 zu den Industrial Ethernet Switches

Industrial Wireless

Maschinen-Konnektivität per Bluetooth oder WLAN reduziert den Verkabelungsaufwand. Der Wireless Bolt kann dabei als Access Point oder als Client bei WLAN und Bluetooth Central oder Peripheral arbeiten. 

 zu den Industrial Wireless Produkten

Ethernet/IO-Systeme

Einfache Anbindung von analogen (Strom, Spannung oder Thermoelemente) und digitalen Sensoren oder Kontakten an ModbusTCP. Das Verhalten der Eingänge ist einfach per Software konfigurierbar. Digitale logische Funktionen sind programmierbar. 

 zum Ethernet/IO-System

Unser Modbus-RTU Portfolio

Fernwartung

Modular aufgebaute Fernwartungs- und M2M-Router Ewon Flexy für Fernwartung und Datendienste

 zu den Fernwartungs-Routern

Bedienen & Beobachten

Professionelle Mensch-Maschinen-Schnittstelle - Ästhetisches Design und ergonomische Bedienung.

 zu den Bediengeräten

Bedienen & Beobachten

Die Smarten HMIs der cMT-Serie - Server / Client HMI-Architektur - Hohe Flexibilität und starke Verbesserung der Arbeitseffizienz.

 zu den Smart HMI (IIoT)

Gateways

zur Anbindung an Modbus RTU-Schnittstellen
Slave / Master .....
verschiedene Gehäusebauformen
unterschiedlichste Busprotokolle möglich

 zu den Modbus-Gateways

Einbaumessgeräte der PAX-Serie 

Die Einbaumessgeräte der PAX-Serie (außer PAXC und PAXR) können mit der optional mit einer Modbus-Schnittstelle ausgestattet werden.

 zu den Einbaumessgeräten

Universalregler Wachendorff

Ausgestattet mit einer Modbus RTU Slave
Schnittstelle via RS485
senden und empfangen von Daten

 zu den Wachendorff Universalreglern

OLED-Modbus-Remote Display

Master und Slave Schnittstelle
senden, empfangen und Anzeigen von Variablen

 zu den Wachendorff OLED-Anzeigen

Großanzeigen der Serien LPAX und EPAX

Die Großanzeigen der LPAX-Serie (außer LPAXCXX und LPAXRXX ) und der EPAX-Serie (außer EPAXCXX und EPAXRXX ) können mit der optional mit einer Modbus-Schnittstelle ausgestattet werden.

 zu den Großanzeigen der LPAX-Serie

 zu den Großanzeigen der EPAX-Serie

Signalwandler WZSG

DMS Signalwandler WZSG mit Modbus Schnittstelle
wandelt des Eingangssignals in ein MODBUS RTU-Protokoll

 zu dem Signalwandler WZSG