RevPi als Modbus TCP Master
Einleitung
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 RevPi-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 Revolution Pi-Modulen 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
Stellen Sie 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ßen Sie die Slave-Geräte über den RJ45-Anschluss an den RevPi an.
▷ Notieren Sie die IP-Adressen und Ports aller Slave-Geräte.
Hinweis: Vermeiden Sie 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
-
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 Master auf das Basismodul auf der virtuellen Hutschiene.
➜ Der Modbus TCP Master wird nun in der Konfiguration angezeigt
- Ziehen Sie Modbus TCP Master auf das Basismodul auf der virtuellen Hutschiene.
▷ Konfigurieren Sie den Modbus TCP Master
-
Wählen Sie den Modbus TCP Master in der Konfiguration aus.
➜ Im Fenster "Gerätedaten" können Sie optional passende I/O-Namen für eine einfachere Referenz zuweisen, z. B. 'Modbus_Input_1'
▷ Öffnen Sie den Wert-Editor und konfigurieren Sie 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.
▷ Speichern Sie die Konfiguration und starten Sie den Treiber neu, um die Änderungen anzuwenden.
Schritt 3: Modbus-Befehle festlegen
-
Erweiterten Daten öffnen
▷ Klicken Sie mit der rechten Maustaste auf den Modbus TCP Master in der Konfiguration.▷ Wählen Sie Erweiterte Daten aus, um das Befehlskonfigurationsinterface zu öffnen.
-
Modbus-Befehle hinzufügen
▷ Konfigurieren Sie die Befehle mit den folgenden Parametern:- Unit ID: Entnehmen Sie diese Adresse dem Handbuch des Slaves. Verwenden Sie
255
, wenn der Slave die Adresse ignoriert. - Funktionscode: Wählen Sie 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: Definieren Sie 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.
- Unit ID: Entnehmen Sie diese Adresse dem Handbuch des Slaves. Verwenden Sie
Hinweis: Für Geräte, die eine 0-basierte Adressierung verwenden, erhöhen Sie die Registeradresse um 1 während der Konfiguration.
-
Konfiguration speichern
▷ Datei > Speichern, um die Einstellungen zu speichern.▷ Werkzeuge > Treiber zurücksetzen, um die Konfiguration zu aktivieren.
Schritt 4: Fehlerbehebung
Falls Kommunikationsfehler auftreten, prüfen Sie das Register Modbus_Master_Status auf Fehlercodes. Häufige Codes sind:
0x10
: Gerät nicht gefunden (überprüfen Sie die Verkabelung).0x11
: Gerät antwortet nicht oder ungültige Registeradresse.110
: Verbindung abgelaufen.
- Weitere Details finden Sie in der offiziellen Modbus-Spezifikation.
- Stellen Sie sicher, dass die Verkabelung und Konfiguration korrekt sind, um Verbindungs- und Kommunikationsprobleme zu minimieren.
- Um Fehler zu beheben:
- Überprüfen Sie die IP-Adressen und Verkabelung.
- Stellen Sie sicher, dass keine sich überschneidenden Modbus-Befehle vorhanden sind.
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üfen Sie, ob Sie den richtigen Funktionscode verwenden. |
2 | ILLEGAL DATA ADDRESS | Die verwendete Modbus-Registeradresse ist ungültig. Das Register ist entweder schreibgeschützt oder ungültig. Überprüfen Sie die Registeradresse. |
3 | ILLEGAL DATA VALUE | Mindestens ein Teil der verwendeten Datenwerte ist ungültig. Beispielsweise haben Sie zu viele Register eingegeben. Überprüfen Sie Ihre Werte. |
13 | INVALID DATA | Der Slave hat ein unvollständiges Paket beantwortet. Dies kann nach einer Verbindungsunterbrechung passieren. Überprüfen Sie Ihre Verkabelung. |
110 | CONNECTION TIMED OUT | Der Slave hat nicht schnell genug oder gar nicht geantwortet. Überprüfen Sie Ihre 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
Entnehmen Sie die folgenden Daten dem Handbuch des Sensors:
Parameter | Wert |
---|---|
IP-Adresse | 192.168.0.103 |
Port | 502 |
Modbus-Register | 4004 |
Modbus-Funktion | READ_HOLDING_REGISTERS |
Slave-Adresse | 1 |
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
- Speichern Sie die Konfiguration und setzen Sie den Treiber zurück.
- Öffnen Sie eine Kommandozeile und führen Sie aus:
piTest -r Input_Word_1
➜ Sie erhalten die Daten Ihres Slaves:
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 Compact