Zum Hauptinhalt springen

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:

  1. Das RevPi Basismodul und die Slave-Geräte sich im selben Netzwerk befinden.
  2. Die IP-Adressen aller Slave-Geräte gemäß den Herstellerangaben dokumentiert sind.
  3. 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

Starten Sie PiCtory.

Webstatus login

Fügen Sie das Basismodul hinzu und fügen Sie den virtuellen Modbus TCP Master zu Ihrer Konfiguration hinzu.

  • 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

pictory config

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'

pictory config

▷ Ö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

  1. 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.

  2. 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.

    pictory config

Hinweis: Für Geräte, die eine 0-basierte Adressierung verwenden, erhöhen Sie die Registeradresse um 1 während der Konfiguration.

  1. 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.
hinweis
  • 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:

FehlercodeNameBeschreibung
1ILLEGAL FUNCTIONDer verwendete Funktionscode ist nicht zulässig. Überprüfen Sie, ob Sie den richtigen Funktionscode verwenden.
2ILLEGAL DATA ADDRESSDie verwendete Modbus-Registeradresse ist ungültig. Das Register ist entweder schreibgeschützt oder ungültig. Überprüfen Sie die Registeradresse.
3ILLEGAL DATA VALUEMindestens ein Teil der verwendeten Datenwerte ist ungültig. Beispielsweise haben Sie zu viele Register eingegeben. Überprüfen Sie Ihre Werte.
13INVALID DATADer Slave hat ein unvollständiges Paket beantwortet. Dies kann nach einer Verbindungsunterbrechung passieren. Überprüfen Sie Ihre Verkabelung.
110CONNECTION TIMED OUTDer 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:

ParameterWert
IP-Adresse192.168.0.103
Port502
Modbus-Register4004
Modbus-FunktionREAD_HOLDING_REGISTERS
Slave-Adresse1

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

pictory config

Daten abfragen

  1. Speichern Sie die Konfiguration und setzen Sie den Treiber zurück.
  2. Ö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

project setting

Schritt 2: Anpassung für RevPi Core oder Compact