Verglichen mit anderen Feldbussen stellt der Modbus eine simple Alternative dar, um Daten auszutauschen. Das Modbus Protokoll ist offen. Es basiert auf Master / Slave Kommunikation. Prinzipiell darf jeder Teilnehmer im Netzwerk senden. In der Praxis wird die Kommunikation jedoch immer vom Master initiiert.
Übertragungsarten (Auswahl)
- Modbus RTU
- Serielle Kommunikation
- Daten werden binär übertragen
- RTU steht für Remote Terminal Unit
- Modbus TCP
- erweitert Modbus RTU für TCP/IP Netzwerke
Modbus Master
- fragt Daten von Modbus Slaves ab
- fungiert als Client, da er keine Daten zur Verfügung stellt
Modbus Slave
- stellt Daten zur Verfügung
- fungiert als Server, da er Daten zur Verfügung stellt
Modbus Register
- Achtung: Abhängig vom Gerät beginnen die Registeradressen bei 1 oder bei 0
- Maximal sind 216 Register Adressierbar, also 65536
- ermöglichen Zugriff auf Daten
- Zugriff erfolgt anhand einer Register-Adresse und Modbus Funktion bzw. Dienst
- sind gerätespezifisch
Funktionen oder Dienste
- implementieren Zugriff auf Daten
- Unterscheidung
- Lesend / Schreibend / Beides
- Datenbreite
- Datenwort, also 2 Bytes
- Bit
- welche Funktionen implementiert sind ist abhängig vom Gerät
Daten abfragen
- Datenverbindung des Modbus Master und Modbus Slave konfigurieren
- Modbus TCP – Netzwerkkonfiguration (statischer IP Adressen, Netzmaske)
- Modbus RTU – Serielle Schnittstelle (Baudrate, Datenbits, Parität, Stoppbits)
- Auf dem Modbus Master muss die entsprechende Funktion aufgerufen werden, die der Slave zur Verfügung stellt.
- Modbus RTU Slave ID: zwischen 1 und 247 (0 Steht für Broadcast)
- Modbus TCP Unit ID: Sie hat die selbe Funktionalität wie die Slave ID. Jedoch gibt es noch die 255. In der Praxis ist es abhängig vom angeschlossenen Gerät, welcher Wert eingestellt werden muss. Denn entweder wird ein ModbusTCP Slave anhand seiner IP Adresse eindeutig im Netzwerk identifiziert. Aber wenn dieser Slave ein Gateway von ModbusTCP auf ModbusRTU ist dann kann dieser mehrere ModbusRTU Slaves adressieren. Um das Gateway selbst zu addressieren wird die Unit ID 255 empfohlen.
- Modbus Register
- Welche Register es gibt ist gerätespezifisch
- Werden entweder von 0 oder von 1 gezählt
- Modbus Funktion, z.B. READ_HOLDING_REGISTER
Beispiel für Modbus RTU benötigte Informationen
- Serielle Schnittstelle Parameter, z.B. 9600 Baud, 8 Datenbits, 1 Stoppbit, Keine Parität
- Slave Adresse, z.B. 1
- Modbus Register, z.B. 1000
- Modbus Funktion z.B. READ_INPUT_REGISTER
Beispiel für Modbus TCP benötigte Informationen
- Slave IP Adresse, z.B. 192.168.0.103
- Unit ID, z.B. 255
- Slave Register, z.B. 1000
- Modbus Funktion, READ_HOLDING_REGISTER
Modbus im RevPi
Die folgenden virtuellen Geräte stehen beim RevPi Core zur Verfügung und können via PiCtory konfiguriert werden:
- ModbusRTU Master
- Anwendung: RevPi Core ruft Daten von einem anderen Modbus Gerät ab
- ModbusRTU Slave
- Anwendung: RevPi Core stellt Daten zur Verfügung welche durch einen Master abgerufen werden können
- ModbusTCP Master
- Anwendung: RevPi Core ruft Daten von einem anderen Modbus Gerät ab.
- ModbusTCP Slave
- Anwendung: RevPi Core stellt Daten zur Verfügung welche durch einen Master abgerufen werden können
Es können pro virtuellem Gerät maximal 32 Register jeweils für Eingangs- und Ausgangsdaten verwendet werden. Solltest du mehr benötigen, so kannst du einfach mehrere virtuellen Modbus Geräte konfigurieren. Insgesamt kannst du 30 virtuelle Geräte konfigurieren.