Ziel: ein RevPi Basismodul als Modbus RTU Client verwenden, um Daten von Server-Geräten zu lesen oder zu schreiben. Die Konfiguration erfolgt in der RevPi Applikation PiCtory.

Die Verwendung des RevPi als Modbus RTU Client eignet sich für Szenarien, in denen Geräte wie Sensoren, Aktoren oder andere Industriegeräte über eine serielle RS485-Verbindung gesteuert oder überwacht werden müssen.

Dieses Tutorial ist mit allen RevPi Basismodulen anwendbar. Basismodule ohne integrierte RS485-Schnittstelle können über einen USB-RS485-Adapter verbunden werden.

Voraussetzungen #

Geräte

✓ Modbus Server-Gerät(e)

✓ Optional: USB-RS485-Adapter

Hardware-Installation

✓ RevPi Basismodul ist mit dem Netzwerk verbunden.

✓ RevPi Basismodul ist an die Spannungsversorgung angeschlossen.

✓ Die Server-Geräte sind über die RS485-Schnittstelle oder einen USB-RS485-Adapter mit dem RevPi verbunden.

Siehe auch:

USB-RS485-Adapter anschließen:

▷ Schließe einen USB-RS485-Adapter an den USB-Anschluss des RevPi an.

▷ Schließe einen D-Sub-9-Stecker an den Adapter an, um ihn mit den Server-Geräten zu verbinden.

D-sub connector config
Signal Sub-D Pin

RS485-

1

RS485+

2

GND

5

+5V

6

Bei einigen USB-RS485-Adapter werden nur die RS485-Datensignalleitungen (D+ und D-) angeschlossen.

usb RS485
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 Adresse.

✓ Adresse, Baudrate, Parität, Datenbits und Stoppbits aller Server-Geräte gemäß den Herstellerangaben sind dokumentiert.

Note

Mehrere Server-Geräte sollten nicht dieselbe Adresse am gleichen RS485-Bus 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 RTU 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 Modbus RTU Client aus den Virtual Modbus Devices im Gerätekatalog auf das Basismodul im Konfigurationsbereich.

▷ Optional: Füge mehrere Modbus RTU Clients hinzu, um die Kapazität für zusätzliche Werte zu erweitern.

❯ Der Modbus RTU Client wird nun im Konfigurationsbereich angezeigt.

pictory config

▷ Wähle den Modbus RTU Client im Konfigurationsbereich aus.

▷ Konfiguriere im Werte Editor ganz unten in der Liste die folgenden Parameter:

Parameter Beschreibung

Input

Bis zu 32 Eingabewerte, jeweils 16 Bit breit.

Output

Bis zu 32 Ausgabewerte, jeweils 16 Bit breit.

device_path

Pfad zur Linux-Gerätedatei. Standardmäßig wird /dev/ttyRS485 verwendet.

baud_rate

Geschwindigkeit der seriellen Verbindung. Standardmäßig wird 19200 verwendet.

parity

Paritätsbit-Konfiguration: Keine, Gerade oder Ungerade. Standardmäßig wird Gerade verwendet.

data_bits

Anzahl der Datenbits. Standardmäßig wird 8 verwendet.

stop_bits

Anzahl der Stoppbits. Standardmäßig wird 1 verwendet.

Note

Konfiguriere udev-Regeln für konsistente Gerätedateipfade bei der Verwendung mehrerer USB-RS485-Adapter des gleichen Typs.

▷ Im Werte Editor kannst du 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 RTU 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

Slave Addr.

Diese Adresse kann dem Handbuch des Servers entnommen werden.
Jedes Server-Gerät am gleichen RS485-Bus muss eine eindeutige Adresse haben.

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 eigenen Anwendungen gelesen werden.

Modbus RevPi Connect 4 Verkabelung
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.

Fehlercodes #

▷ Falls Kommunikationsprobleme auftreten, prüfe im Werte Editor das Register Modbus_Client_Status.

▷ Schreibe zum Zurücksetzen eines Fehlers manuell 1 in das Client_Status_Reset- oder Action_Status_Reset-Register.

Häufige Fehlercodes:

Code Beschreibung

0x10

Serielles Gerät konnte nicht geöffnet oder gefunden werden. Prüfe device_path_ und die Verkabelung.

0x11

Keine gültige Antwort vom Modbus-Server erhalten.

1

ILLEGAL FUNCTION: Ungültiger Funktionscode.

2

ILLEGAL DATA ADDRESS: Ungültige oder schreibgeschützte Registeradresse.

12

INVALID CRC: Beschädigtes Paket. Prüfe Verkabelung, Verbindung und serielle Parameter.

110

Verbindungs-Timeout.

Mögliche Fehlerursachen:

  • RS485-Verbindung unterbrochen oder A/B-Leitungen vertauscht

  • Falscher Pfad in device_path_

  • Falsche Server-Adresse, Baudrate, Parität, Datenbits oder Stoppbits

  • Ungültige Registeradresse

  • Überlappende oder widersprüchliche Modbus-Befehle

  • Zu kurzes Aktionsintervall bei hoher Bus- oder Systemlast

Weitere Ressourcen #