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.

pictory config

▷ 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 Datei  Speichern als Start-Konfig., um die Konfiguration zu speichern.

▷ Wähle Extras  Treiber zurücksetzen, 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.
Bei reinem Modbus TCP wird die Unit ID von vielen Geräten ignoriert. In diesem Fall kann häufig 255 oder 1 verwendet werden.

Function Code

READ_COILS: Digitale Ausgänge (Bits) lesen.
READ_DISCRETE_INPUTS: Digitale Eingänge lesen.
READ_HOLDING_REGISTERS: 16-Bit-Datenregister lesen.
READ_INPUT_REGISTERS: 16-Bit-Eingangsregister lesen.
WRITE_SINGLE_COIL: Ein einzelnes Bit schreiben.
WRITE_SINGLE_REGISTER: Ein ganzes Register schreiben.
WRITE_MULTIPLE_COILS: Mehrere Bits schreiben.
WRITE_MULTIPLE_REGISTERS: Mehrere Register schreiben.

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.
Die gelesenen Werte werden im Prozessabbild gespeichert und können anschließend z. B. mit piTest oder aus eigenen Anwendungen gelesen werden.

Note

Bei Geräten, die eine 0-basierte Adressierung verwenden, muss die Registeradresse während der Konfiguration um 1 erhöht werden.

▷ Wähle Datei  Speichern als Start-Konfig., um die Konfiguration zu speichern.

▷ Wähle Extras  Treiber zurücksetzen, 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

0x10

TCP-Verbindung zum Modbus-Server konnte nicht aufgebaut werden.

0x11

Keine gültige Antwort vom Modbus-Server erhalten.

110

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

192.168.0.103

Port

502

Modbus-Register

4004

Modbus-Funktion

READ_HOLDING_REGISTERS

Server-Adresse

1

▷ 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

pictory config

▷ 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.

Weitere Ressourcen #


1. In PiCtory wird der Modbus TCP Client als ModbusTCP Master bezeichnet.