Beispiel ModbusTCP-RTU-Slave

In diesem Beispiel wollen wir einen Modbus-TCP-Slave und einen Modbus-RTU-Slave auf dem RevPi Connect+ CODESYS mit CODESYS Control für Raspberry Pi MC SL in Betrieb nehmen.

Die Anwendung soll in diesem Fall die ersten 10 Holding-Register in die 10 Eingangsregister beider Slaves kopieren.

Die folgende Abbildung zeigt die Codesys-Gerätebaumübersicht des Beispiels.

Beispiel für andere Geräte anpassen
Du kannst dieses Beispiel für RevPi Compact oder RevPi Core anpassen.

  • Klicke mit der rechten Maustaste auf den RevPi_Connect im Codesys-Gerätebaum.
  • Klicke auf Gerät aktualisieren.
  • Wähle einen RevPi Core oder Compact anstelle des RevPi Connect und benenne das Gerät entsprechend.

Wenn Du eine Lizenz für Single Core hast, kannst Du so das Target ändern:

  • Klicke mit der rechten Maustaste auf das “Root Device” CODESYS Control für Raspberry Pi MC SL im Codesys-Gerätebaum.
  • Klicke auf Gerät aktualisieren.
  • Wähle CODESYS Control für Raspberry Pi SL.

Das CODESYS Control-Geräteziel für das Beispiel wird von Multi Core auf Single Core geändert.

MODBUS RTU Serielle Schnittstelle konfigurieren

Für RevPi Connect oder Core:

  • Füge die folgende Zeile in /etc/CODESYSControl.cfg hinzu:
    [SysCom]
    Linux.Gerätedatei=/dev/ttyUSB

Für RevPi Compact:

  • Wenn Du die Standard-RS485-Schnittstelle des Geräts verwendest, muss die serielle Schnittstelle in Codesys zugewiesen werden.
    Füge die folgende Zeile in /etc/CODESYSControl.cfg ein:
    [SysCom]
    Linux.Gerätedatei=/dev/ttyAMA
    Wenn Du einen USB-485-Konverter verwendest, füge die folgende Zeile in /etc/CODESYSControl.cfg hinzu:
    [SysCom]
    Linux.Gerätedatei=/dev/ttyUSB

Unter der Registerkarte Allgemein/Serielle Portkonfiguration des MODBUS_COM-Geräts im Codesys-Baum wird der COM-Port wie folgt ausgewählt:
/dev/ttyUSB0 -> COM-Anschluss 1
/dev/ttyUSB1 -> COM-Anschluss 2 …
/dev/ttyUSBn -> COM-Anschluss n

Wenn ein zusätzlicher USB-485-Konverter angeschlossen ist, muss der richtige COM-Port identifiziert werden.

Modbus-RTU-Slave-Konfiguration

  • Ordne Holding-Register und Input-Register der Applikations-POE mit dem Namen “POE_Modbus” zu, um die Daten für die Applikation verfügbar zu machen.
  • Konfiguriere auch den Modbus-TCP-Slave. Die Konfigurationsschritte sind gleich wie beim Modbus-RTU-Slave.

Modbus TCP und RTU Master simulieren

Write Multiple Registers schreibt in die Holding-Register des Slaves und Read Holding Registers gibt die Daten der Eingangsregister des Modbus TCP/RTU-Slaves zurück, der auf dem RevPi läuft.

Modbus TCP Unit ID: Sie hat die gleiche Funktionalität wie die Slave ID. Allerdings gibt es noch die 255. In der Praxis hängt es von dem angeschlossenen Gerät ab, welcher Wert eingestellt werden muss. Dann wird entweder ein Modbus-TCP-Slave im Netzwerk anhand seiner IP-Adresse eindeutig identifiziert. Wenn dieser Slave aber ein Gateway von Modbus TCP auf Modbus RTU ist, kann er mehrere Modbus-RTU-Slaves ansprechen. Zur Adressierung des Gateways selbst wird die Unit ID 255 empfohlen. QModMaster verwendet stattdessen die Unit ID 0 von 255 für diesen Zweck.