Dieses Tutorial erklärt, wie man ein RevPi Basismodul als Modbus-TCP-Slave konfiguriert, um mit einem Modbus-TCP-Master zu kommunizieren. Es enthält Schritt-für-Schritt-Anleitungen zur Einrichtung des RevPi und zum Abfragen von Daten über das Modbus-Protokoll. Dieses Tutorial richtet sich an Fachleute aus der Industrieautomatisierung, IoT-Entwickler und alle, die einen RevPi als Modbus-TCP-Slave in einer vernetzten Umgebung verwenden möchten. Die Konfiguration des RevPi als Modbus-TCP-Slave ermöglicht es externen Modbus-TCP-Mastern, auf die Datenregister des RevPi zuzugreifen und diese zu steuern.
Voraussetzungen #
Hardware
✓ RevPi Basismodul (z.B. RevPi Connect 4)
✓ Master-Gerät oder Software: z. B. QModmaster, das auf einem Windows-PC läuft
✓ Passende Kabel mit RJ45-Steckern
✓ Stromversorgung für RevPi Connect
Software
✓ Moderner Webbrowser (z. B. Google Chrome oder Mozilla Firefox). ✓ QModmaster: herunterladbar von SourceForge.
Systemeinrichtung
Stelle sicher, dass:
✓ das RevPi Basismodul und das Master-Gerät sich im selben Netzwerk befinden.
✓ die IP-Adressen korrekt konfiguriert sind und die Geräte miteinander kommunizieren können.
Schritt 1: Hardware einrichten #
▷ Verbinde den RevPi Connect mit dem Master-Gerät über ein RJ45-Kabel.
▷ Schalte den RevPi Connect ein, indem du ihn an eine geeignete Stromquelle anschließt.
Schritt 2: Modbus TCP Slaves in PiCtory konfigurieren #
▷ Füge das Basismodul und den virtuellen Modbus TCP Slave 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 Slave auf das Basismodul auf der virtuellen Hutschiene.
❯ Der Modbus TCP Slave wird nun in der Konfiguration angezeigt.
▷ Konfiguriere den Modbus TCP Slave, siehe Ein- und Ausgänge konfigurieren.
▷ Wähle den Modbus TCP Slave in der Konfiguration aus.
▷ Setze die folgenden Parameter im Value Editor:
-
TCP Port:
502(Standardwert gemäß der Modbus-Spezifikation). -
Max. Modbus TCP Verbindungen:
10(oder ein anderer geeigneter Wert).
▷ Speichere die Konfiguration und starte den Treiber neu, um die Änderungen anzuwenden.
Schritt 3: CPU-Temperatur abfragen #
Die CPU-Temperatur des RevPi Connect kann mit dem folgenden Befehl im Terminal abgefragt werden:
/usr/bin/vcgencmd measure_temp
Die Ausgabe zeigt die Temperatur an, z. B.:
temp = 48.7'C
▷ Um die Daten für die Modbus-Verarbeitung vorzubereiten, konvertiere die Temperatur in das Format x10 °C mit diesem Befehl:
/usr/bin/vcgencmd measure_temp | awk ' { print substr($0,6,2) substr($0,9,1) } '
487
❯ Dies gibt die Temperatur im geeigneten Format aus, z.B. 487 für 48.7 °C.
Daten in ein Modbus-Register schreiben
▷ Schreibe die konvertierten Temperaturdaten in ein Modbus-Register:
piTest –w Output_1,$(/usr/bin/vcgencmd measure_temp | awk ' { print substr($0,6,2) substr($0,9,1) } ')
▷ Führe den Prozess in einer Schleife aus, um kontinuierlich zu aktualisieren:
while true; do piTest -w Output_1,$(/usr/bin/vcgencmd measure_temp | awk ' { print substr($0,6,2) substr($0,9,1) } '); sleep 1; done &
Ausgabe:
Write value 492 dez (=01ec hex) to offset 11.
Write value 498 dez (=01f2 hex) to offset 11.
Write value 492 dez (=01ec hex) to offset 11.
Schritt 4: Daten mit QModMaster abfragen #
▷ Lade QModmaster auf einem Windows-PC herunter und installiere es.
▷ Setze die folgenden Parameter:
-
Modbus Mode: TCP
-
Unit ID:
1 -
Scan Rate (ms):
1000 -
Funktionscode: Read Input Registers (0x04)
-
Startadresse:
0 -
Anzahl der Register:
1 -
Format: Dezimal
QModMaster konfigurieren
▷ Wähle .
▷ Gebe die IP-Adresse des RevPi Connect im Feld Slave IP ein.
▷ Setze den TCP-Port auf 502 (Standard für ModbusTCP-Verbindungen).
Mit dem Modbus verbinden
▷ Wähle , um eine Verbindung mit dem Modbus Slave herzustellen.
Daten abfragen
▷ Wähle , um Daten abzurufen.
▷ Die CPU-Temperatur wird in Dezimalform angezeigt, z. B. 487 für 48.7 °C.
Modbus-Funktionen #
Das Modbus-Slave-Modul unterstützt die folgenden Modbus-Funktionen:
| Funktion | Beschreibung |
|---|---|
Read Holding Registers (0x03) |
Eingabedaten lesen. |
Read Input Registers (0x04) |
Ausgabedaten lesen. |
Write Single Register (0x06) |
In ein einzelnes Eingangsregister schreiben. |
Write Multiple Registers (0x10) |
In mehrere Eingangsregister schreiben. |