Ziel: ein RevPi Basismodul als Modbus TCP Client verwenden, um Daten von Server-Geräten zu lesen oder zu schreiben. Die Konfiguration erfolgt in der RevPi Applikation PiCtory anhand eines praktischen Beispiels.
Die Verwendung des RevPi als Modbus TCP Client eignet sich für Szenarien, in denen Geräte wie Sensoren, Aktoren oder andere industrielle Ausrüstungen in einem vernetzten Umfeld gesteuert oder überwacht werden müssen.
Dieses Tutorial ist anwendbar mit allen RevPi Basismodulen.
Voraussetzungen #
Geräte
✓ Server-Gerät(e)
✓ Kabel mit RJ45-Steckern
Hardware-Installation
✓ RevPi Basismodul ist mit dem Netzwerk verbunden.
✓ RevPi Basismodul ist an die Spannungsversorgung angeschlossen.
✓ Die Server-Geräte sind über den RJ45-Anschluss an den RevPi angeschlossen.
Software-Installation
✓ Webbrowser (z. B. Chrome, Firefox oder Edge)
✓ RevPi und die Server-Geräte befinden sich im selben Netzwerk.
✓ Jedes Server-Gerät hat eine eindeutige IP-Adresse.
✓ Die IP-Adressen und Ports aller Server-Geräte gemäß den Herstellerangaben sind dokumentiert.
|
Note
|
Mehrere Server-Geräte sollten nicht dieselbe IP-Adresse am gleichen Port haben, da dies zu Kommunikationsfehlern führt. |
|
Note
|
Ab RevPi Bookworm (08/2025) muss zusätzlich die Firewall des RevPi für die Standard-Ports des Modbus Server freigegeben werden: ▷ Füge den Service revpi-modbus-default zu den Firewall-Einstellungen in Cockpit hinzu, siehe Firewall. |
1. Modbus TCP Client in PiCtory konfigurieren #
▷ Starte PiCtory.
▷ Ziehe das RevPi Basismodul aus dem Gerätekatalog auf den leeren Slot im Konfigurationsbereich mit der Positionsnummer 0.
▷ Ziehe einen ModbusTCP Master [1] aus den Virtual Modbus Devices im Gerätekatalog auf das Basismodul im Konfigurationsbereich.
❯ Das virtuelle Gerät wird nun im Konfigurationsbereich angezeigt.
▷ Wähle den Modbus TCP Client im Konfigurationsbereich aus.
▷ Konfiguriere im Werte Editor ganz unten in der Liste die folgenden Parameter:
-
slave_IP_address: IP-Adresse des Modbus TCP Server.
-
slave_tcp_port: Standardmäßig
502, wie in der Modbus-Spezifikation angegeben. Dies kann bei Bedarf geändert werden.
▷ Im Werte Editor kannst du außerdem optional passende I/O-Namen für eine einfachere Referenz zuweisen, z. B. Modbus_Input_1.
Siehe auch Werte konfigurieren.
▷ Wähle , um die Konfiguration zu speichern.
▷ Wähle , um die Konfiguration anzuwenden.
2. Modbus-Befehle konfigurieren #
▷ Öffne das Kontextmenü des Modbus TCP Client im Konfigurationsbereich.
▷ Wähle Erweiterte Daten, um das Fenster für die Befehlskonfiguration zu öffnen.
▷ Konfiguriere die Befehle mit den folgenden Parametern:
| Parameter | Beschreibung |
|---|---|
Unit ID |
Diese Adresse kann dem Handbuch des Servers entnommen werden. |
Function Code |
|
Register Addr. |
Modbus-Register- oder Bit-Adresse definieren, auf die zugegriffen werden soll. |
Quantity of Registers |
Anzahl der zu lesenden/schreibenden Register oder Bits. |
Action Interval (ms) |
Zeitintervall für das Senden des Befehls in Millisekunden. |
Device Value |
Name der Variablen im Prozessabbild. |
|
Note
|
Bei Geräten, die eine 0-basierte Adressierung verwenden, muss die Registeradresse während der Konfiguration um 1 erhöht werden. |
▷ Wähle , um die Konfiguration zu speichern.
▷ Wähle , um die Konfiguration anzuwenden.
3. Aufgabenverwaltung und Fehlercodes #
Der Modbus TCP Client kann bis zu 32 Aufgaben verwalten. Für jede Aufgabe stehen eigene Status- und Reset-Register im Prozessabbild zur Verfügung.
Tritt bei der Ausführung einer Aufgabe ein Fehler auf, wird ein Fehlercode im entsprechenden Status-Register gespeichert: Modbus_Action_Status[1…32].
Der Fehler bleibt gespeichert, bis das zugehörige Reset-Register auf 1 gesetzt wird: Action_Status_Reset[1…32].
Die Statusregister können sowohl Modbus-Ausnahmecodes des Servers als auch Kommunikations- oder Treiberfehler enthalten.
▷ Falls Kommunikationsprobleme auftreten, prüfe das Register Modbus_Master_Status im Werte Editor.
Häufige Fehlercodes:
| Code | Beschreibung |
|---|---|
|
TCP-Verbindung zum Modbus-Server konnte nicht aufgebaut werden. |
|
Keine gültige Antwort vom Modbus-Server erhalten. |
|
Verbindungs-Timeout. |
Mögliche Fehlerursachen:
-
Netzwerkverbindung unterbrochen
-
Falsche IP-Adresse oder Portnummer
-
Ungültige Registeradresse
-
Überlappende oder widersprüchliche Modbus-Befehle
-
Firewall blockiert die Kommunikation
Beispiel: Temperaturmessungen mit RevPi als Modbus TCP Client #
Der Temperatursensor Inveo NANO TEMP dient in diesem Beispiel als Modbus-Server.
Konfiguration
▷ Entnimm die folgenden Daten dem Handbuch des Sensors:
| Parameter | Wert |
|---|---|
IP-Adresse |
|
Port |
|
Modbus-Register |
|
Modbus-Funktion |
|
Server-Adresse |
|
▷ Konfiguriere entsprechend in PiCtory im Fenster Erweiterte Daten:
-
Unit ID: 1
-
Function Code: READ_HOLDING_REGISTERS
-
Register Addr.: 4004
-
Quantity of Registers: 1
-
Action Interval (ms): 1000
-
Device Value: Input_Word_1
▷ Speichere die Konfiguration und setze den Treiber zurück.
Daten abfragen
▷ Öffne ein Terminal und führe aus:
piTest -r Input_Word_1
❯ Du erhältst die Daten deines Servers:
2 Byte-Wert von Input_Word_1: 284 dez (=011c hex)
Der Wert 284 entspricht 28,4 °C.