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).
Systemeinrichtung #
Stelle sicher, dass:
-
das RevPi Basismodul und die Slave-Geräte sich 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.
Schritt 1: Hardware-Einrichtung #
▷ 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ühren wird. |
Schritt 2: Konfiguration des Modbus TCP Masters in PiCtory #

▷ Füge das Basismodul hinzu und füge den virtuellen Modbus TCP Master zu deiner Konfiguration hinzu.
-
Ziehe das Basismodul aus dem Gerätekatalog auf die virtuelle Hutschiene.
-
Öffne den Ordner Virtuelle Geräte im Gerätekatalog.
-
Ziehe Modbus TCP Master auf das Basismodul auf der virtuellen Hutschiene.
-
❯ Der Modbus TCP Master wird nun in der Konfiguration angezeigt.

-
Wähle den Modbus TCP Master in der Konfiguration aus.
❯ Im Fenster Gerätedaten kannst du optional passende I/O-Namen für eine einfachere Referenz zuweisen, z. B. Modbus_Input_1

▷ Öffne den Wert-Editor und konfiguriere die folgenden Parameter:
-
slave_IP_address: IP-Adresse des Modbus TCP Slaves.
-
slave_tcp_port: Standardmäßig
502
, wie in der Modbus-Spezifikation angegeben. Dies kann bei Bedarf geändert werden.
Schritt 3: Modbus-Befehle festlegen #
-
Erweiterte Daten öffnen
▷ Klicke mit der rechten Maustaste auf den Modbus TCP Master in der Konfiguration.▷ Wähle Erweiterte Daten aus, um das Befehlskonfigurationsinterface 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
|
Für Geräte, die eine 0-basierte Adressierung verwenden, erhöhe die Registeradresse um 1 während der Konfiguration. |
-
Konfiguration speichern
▷ , um die Einstellungen zu speichern.▷
, 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.
Note
|
|
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 Tabelle #
Die folgende Tabelle fasst die wichtigsten Fehlermeldungen zusammen:
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-Einrichtung #
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 #
Im Interface Erweiterte Daten konfigurieren:
-
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.
Weitere Ressourcen #

Schritt 2: Anpassung für RevPi Core oder RevPi Compact