Dieses Tutorial erklärt, wie man ein RevPi Basismodul als Modbus TCP Master verwendet, um eine Verbindung zu Slave-Geräten herzustellen und mit diesen zu kommunizieren. Es bietet eine Schritt-für-Schritt-Anleitung, wie man ein Revolution Pi System für die industrielle Kommunikation mit dem Modbus TCP-Protokoll einrichtet. Das Tutorial richtet sich an Fachleute aus der Industrieautomatisierung, IoT-Entwickler und Enthusiasten, die Modbus TCP-Kommunikation mit einem Revolution Pi System konfigurieren und nutzen möchten. Die Verwendung des RevPi als Modbus TCP Master eignet sich ideal 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.
Voraussetzungen #
Hardware
✓ RevPi Basismodul
✓ Slave-Gerät(e)
✓ Passende Kabel mit RJ45-Steckern
✓ Internetverbindung
Software
✓ Ein moderner Webbrowser (z. B. Google Chrome oder Mozilla Firefox).
System
Stelle sicher, dass:
✓ sich das RevPi Basismodul und die Slave-Geräte im selben Netzwerk befinden.
✓ die IP-Adressen aller Slave-Geräte gemäß den Herstellerangaben dokumentiert sind.
✓ jedes Slave-Gerät eine eindeutige IP-Adresse hat.
|
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. |
Schritt 1: Hardware einrichten #
▷ Schließe die Slave-Geräte über den RJ45-Anschluss an den RevPi an.
▷ Notiere die IP-Adressen und Ports aller Slave-Geräte.
|
Note
|
Vermeide es, mehreren Slave-Geräten die gleiche IP-Adresse am gleichen Port zuzuweisen, da dies zu Kommunikationsfehlern führt. |
Schritt 2: Modbus TCP Master in PiCtory konfigurieren #
▷ Füge das Basismodul und den virtuellen Modbus TCP Master zu deiner Konfiguration hinzu, siehe Geräte anordnen.
▷ Ziehe das Basismodul aus dem Device Catalog auf die virtuelle Hutschiene.
▷ Öffne den Ordner Virtual Devices im Device Catalog.
▷ Ziehe Modbus TCP Master auf das Basismodul auf der virtuellen Hutschiene.
❯ Der Modbus TCP Master wird nun in der Konfiguration angezeigt.
▷ Konfiguriere den Modbus TCP Master, siehe Ein- und Ausgänge konfigurieren.
▷ Wähle den Modbus TCP Master in der Konfiguration aus.
▷ Im Fenster Device Data kannst du optional passende I/O-Namen für eine einfachere Referenz zuweisen, z. B. Modbus_Input_1
▷ Öffne den Value Editor und konfiguriere die folgenden Parameter:
-
slave_IP_address: IP-Adresse des Modbus TCP Slave.
-
slave_tcp_port: Standardmäßig
502, wie in der Modbus-Spezifikation angegeben. Dies kann bei Bedarf geändert werden.
▷ Speichere die Konfiguration und starte den Treiber neu, um die Änderungen anzuwenden.
Schritt 3: Modbus-Befehle festlegen #
Erweiterte Daten öffnen
▷ Wähle das Kontextmenü des Modbus TCP Master in der Konfiguration.
▷ Wähle Extended Data aus, um das Fenster für die Befehlskonfiguration zu öffnen.
Modbus-Befehle hinzufügen
▷ Konfiguriere die Befehle mit den folgenden Parametern:
-
Unit ID: Entnimm diese Adresse dem Handbuch des Slaves. Verwende
255, wenn der Slave die Adresse ignoriert. -
Funktionscode: Wähle aus den unterstützten Codes:
-
READ_COILS: Einzelfelder lesen. -
READ_DISCRETE_INPUTS: Eingabefelder lesen. -
READ_HOLDING_REGISTERS: 16-Bit-Register 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.
-
-
Registeradresse: Definiere die Modbus-Register- oder Bit-Adresse, auf die zugegriffen werden soll.
-
Anzahl der Register: Anzahl der zu lesenden/schreibenden Register oder Bits.
-
Aktionsintervall: Zeitintervall in Millisekunden, in dem der Befehl gesendet wird.
-
Gerätwert: Name der Variablen im RevPi Prozessabbild.
|
Note
|
Bei Geräten, die eine 0-basierte Adressierung verwenden, muss die Registeradresse während der Konfiguration um 1 erhöht werden. |
Konfiguration speichern
▷ Wähle , um die Einstellungen zu speichern.
▷ Wähle , um die Konfiguration zu aktivieren.
Schritt 4: Fehlerbehebung #
Falls Kommunikationsfehler auftreten, prüfe das Register Modbus_Master_Status auf Fehlercodes. Häufige Codes sind:
-
0x10: Gerät nicht gefunden (evtl. Fehler an der Verkabelung). -
0x11: Gerät antwortet nicht oder ungültige Registeradresse. -
110: Verbindung abgelaufen.
Mögliche Fehlerquellen:
-
Inkorrekte Verkabelung
-
Inkorrekte Konfiguration
-
Sich überschneidende IP-Adressen
-
Sich überschneidenden Modbus-Befehle
Weitere Details findest du in der offiziellen Modbus-Spezifikation.
Modbus Master Aufgabenverwaltung und Fehlercodes
Der Modbus Master kann bis zu 32 Aufgaben verwalten. Jede Aufgabe hat ein entsprechendes Register für status und status-reset.
Wenn in einer Aufgabe ein Fehler auftritt, wird der Fehlercode in das Modbus-Register geschrieben: Modbus_Action_Status_[1 … 32].
Der Fehler bleibt in diesem Register, bis der Wert 1 manuell in das entsprechende Reset-Register geschrieben wird: Action_Status_Reset_[1 … 32].
Die Fehlercodes entsprechen den Modbus-Ausnahmecodes, die in der Modbus-Spezifikation definiert sind.
Fehlercodes #
| Fehlercode | Name | Beschreibung |
|---|---|---|
1 |
ILLEGAL FUNCTION |
Der verwendete Funktionscode ist nicht zulässig. Überprüfe, ob du den richtigen Funktionscode verwendest. |
2 |
ILLEGAL DATA ADDRESS |
Die verwendete Modbus-Registeradresse ist ungültig. Das Register ist entweder schreibgeschützt oder ungültig. Überprüfe die Registeradresse. |
3 |
ILLEGAL DATA VALUE |
Mindestens ein Teil der verwendeten Datenwerte ist ungültig. Beispielsweise hast du zu viele Register eingegeben. Überprüfe die Werte. |
13 |
INVALID DATA |
Der Slave hat ein unvollständiges Paket beantwortet. Dies kann nach einer Verbindungsunterbrechung passieren. Überprüfe die Verkabelung. |
110 |
CONNECTION TIMED OUT |
Der Slave hat nicht schnell genug oder gar nicht geantwortet. Überprüfe die Konfiguration und Verkabelung. |
Beispiel: Temperaturmessungen mit RevPi als Modbus TCP Master #
Hardware einrichten
Der Temperatursensor Inveo NANO TEMP dient in diesem Beispiel als Modbus-Slave.
Konfigurationsdetails
▷ Entnimm die folgenden Daten dem Handbuch des Sensors:
| Parameter | Wert |
|---|---|
IP-Adresse |
|
Port |
|
Modbus-Register |
|
Modbus-Funktion |
|
Slave-Adresse |
|
Modbus-Befehle definieren
▷ Konfiguriere im Fenster Extended Data:
-
Slave Addr.:
1 -
Funktionscode:
READ_HOLDING_REGISTERS -
Register Addr.:
4004 -
Anzahl der Register:
1 -
Aktionsintervall (ms):
1000 -
Gerätwert:
Input_Word_1
Daten abfragen
▷ Speichere die Konfiguration und setze den Treiber zurück.
▷ Öffne eine Kommandozeile und führe aus:
piTest -r Input_Word_1
❯ Du erhältst die Daten deines Slave:
2 Byte-Wert von Input_Word_1: 284 dez (=011c hex)
Der Wert 284 entspricht 28,4 °C.