Modbus Tutorial

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.