RevPi als Modbus TCP Slave
Einleitung
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 ein RevPi-Modul 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: Zum Beispiel „qModMaster“, das auf einem Windows-PC läuft.
- Passende Kabel mit RJ45-Steckern
- Stromversorgung für RevPi Connect
Software
- Ein moderner Webbrowser (z. B. Google Chrome oder Mozilla Firefox).
- qModMaster: Herunterladbar von SourceForge.
Systemeinrichtung
Stellen Sie 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-Einrichtung
- Verbinden Sie den RevPi Connect mit dem Master-Gerät über ein RJ45-Kabel.
- Schalten Sie den RevPi Connect ein, indem Sie ihn an eine geeignete Stromquelle anschließen.
Schritt 2: Konfiguration des Modbus TCP Slaves in PiCtory
▷ Ziehen Sie das Basismodul aus dem Gerätekatalog auf die virtuelle Hutschiene.
▷ Öffnen Sie den Ordner Virtuelle Geräte im Gerätekatalog.
- Ziehen Sie Modbus TCP Slave auf das Basismodul auf der virtuellen Hutschiene.
➜ Der Modbus TCP Slave wird nun in der Konfiguration angezeigt
▷ Konfigurieren Sie den Modbus TCP Slave
- Wählen Sie den Modbus TCP Slave in der Konfiguration aus.
- Setzen Sie die folgenden Parameter im Wert-Editor:
- TCP Port: '502' (Standardwert gemäß der Modbus-Spezifikation).
- Max. Modbus TCP Verbindungen: '10' (oder ein anderer geeigneter Wert).
▷ Speichern Sie die Konfiguration und starten Sie den Treiber neu, um die Änderungen anzuwenden.
Schritt 3: Abfragen der CPU-Temperatur
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, zum Beispiel:
temp = 48.7'C
Um die Daten für die Modbus-Verarbeitung vorzubereiten, konvertieren Sie 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
.
Schreiben von Daten in ein Modbus-Register
Um die konvertierten Temperaturdaten in ein Modbus-Register zu schreiben, verwenden Sie den folgenden Befehl:
piTest –w Output_1,$(/usr/bin/vcgencmd measure_temp | awk ' { print substr($0,6,2) substr($0,9,1) } ')
Für kontinuierliche Updates führen Sie den Prozess in einer Schleife aus:
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: Abfragen von Daten mit qModMaster
-
Laden Sie qModMaster auf einem Windows-PC herunter und installieren Sie es.
- Setzen Sie 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
- Setzen Sie die folgenden Parameter:
-
qModMaster konfigurieren
▷ Klicken Sie auf Menü > Optionen und wählen Sie ModbusTCP aus.
▷ Geben Sie die IP-Adresse des RevPi Connect im Feld Slave IP ein.
▷ Setzen Sie den TCP-Port auf 502
(Standard für ModbusTCP-Verbindungen).
-
Mit dem Modbus verbinden
▷ Klicken Sie auf Befehle > Verbinden, um eine Verbindung mit dem Modbus Slave herzustellen. -
Daten abfragen
▷ Klicken Sie auf Befehle > Lesen/Schreiben, um Daten abzurufen.▷ Die CPU-Temperatur wird in Dezimalform angezeigt, z. B.
487
für48.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. |