Beispielprojekt: Neues Modbus-Projekt in CODESYS erstellen
In diesem Beispiel werden Sie ein Modbus-Projekt mit zwei Controllern PFC200 750-8212 erstellen, die als Modbus-Master und Modbus-Slave verwendet werden sollen. Sie werden I/O-Module hinzufügen, ein kleines Programm erstellen und Daten zwischen den Geräten austauschen.
Ausgangszustand:
- Die Controller 750-8212 besitzen die Firmwareversion 23.
- Sie haben CODESYS und erforderliche Komponenten wie Gerätebeschreibungen und Bibliotheken installiert (siehe Installieren und Starten).
Projekt anlegen
- Klicken Sie auf der Startseite oder im Register „Datei“ auf Neues Projekt....
- Wählen Sie als Vorlage das „Standardprojekt“ aus und vergeben Sie einen Namen für das Projekt.
- Im Dialogfenster „Standardprojekt“ werden alle verfügbaren Geräte angezeigt. Die Geräte resultieren aus den installierten Gerätebeschreibungen.
- Wählen Sie den ersten Controller (in diesem Beispiel ein PFC200 750-8212) und die Programmiersprache aus, die Sie verwenden möchten.
- Um I/O-Module hinzuzufügen, klicken Sie im Gerätebaum mit der rechten Maustaste auf das Element „Kbus“ und wählen Sie Gerät anhängen.
- Wählen Sie die I/O-Module des Knotens aus der Liste aus und klicken Sie für jedes I/O-Modul auf [Gerät anhängen]. In diesem Beispiel werden die I/O-Module 750-430 und 750-530 verwendet.
- Die I/O-Module des Knotens werden unterhalb des „Kbus“-Elementes angehängt.
- Um den zweiten Controller zum Projekt hinzuzufügen, klicken Sie im Gerätebaum mit der rechten Maustaste auf den Projektnamen (erstes Element des Gerätebaumes) und wählen Gerät anhängen....
- Wiederholen Sie die Schritte 4 und 5 für diesen Controller.
Mit dem Gerät verbinden
- Um sich mit dem Controller zu verbinden, klicken Sie diesen im Gerätebaum doppelt an.
- Tragen Sie in der grafischen Ansicht bestehend aus PC, Gateway und Gerät, die IP-Adresse des Controllers ein, z. B. hier 192.168.1.17 für den lokal am PC angeschlossenen Controller.
Alternativ klicken Sie auf [Netzwerk durchsuchen], um das Netzwerk nach Geräten zu durchsuchen.
Tipp: Um das Gerät bei einer Netzwerksuche leichter identifizieren zu können, ist es sinnvoll, zuvor über das WBM einen eindeutigen Hostnamen für das Gerät festzulegen. - Wählen Sie Ihr Gerät aus und übernehmen Sie es mittels [OK].
- Die Anmeldemaske des Gerätes wird geöffnet.
- Loggen Sie sich mit Ihren Zugangsdaten (standardmäßig Benutzer „admin“, Passwort „wago)“ auf dem Gerät ein.
- Wiederholen Sie die Schritte 1 bis 5 für den zweiten Controller.
Slave-Gerät konfigurieren
- Erstellen Sie für den Controller, der als Slave verwendet werden soll, zunächst ein Feldbuselement „Ethernet“. Klicken Sie dazu mit der rechten Maustaste auf das Gerät und auf Gerät anhängen....
- Wählen Sie unter „Ethernet Adapter“ den Feldbus „Ethernet“ aus.
- Klicken Sie auf [Gerät anhängen] und lassen Sie das Dialogfenster geöffnet.
- Im Gerätebaum wird ein neues Element „Ethernet (Ethernet)“ erstellt.
- Klicken Sie auf das neue Element und wählen Sie für das Slave-Gerät im noch geöffneten Dialogfenster unter „Modbus“ den „Modbus TCP Slave“ aus.
- Bestätigen Sie mit [Gerät anhängen].
- Um im Folgenden den Datenaustausch zwischen Master und Slave zu testen, werden Sie Variablen anlegen und ein kleines Programm schreiben:
- Variablen erzeugen: Klicken Sie doppelt auf das Slave-Gerät, um die Konfiguration zu öffnen.
- Erzeugen Sie im Register „Modbus TCP Slave Device E/A-Abbild“ zwei Variablen - eine mit dem Namen „fromMaster“ im Holding-Register und eine mit dem Namen „toMaster“ im Input-Register.
- Um Variablen auf den I/O-Modulen auszugeben, klicken Sie jeweils doppelt auf die I/O-Module:
Für das Digitaleingangsmodul 750-430 tragen Sie als Variable „localIn“ ein.
Für das Digitalausgangsmodul 750-530 tragen Sie als Variable „localOut“ ein. - Slave-Programm schreiben: Um den Programmeditor zu öffnen, klicken Sie im Gerätebaum doppelt auf das Slave-Programm „PLC_PRG“.
- Erstellen Sie ein einfaches Programm:
localOut := WORD_TO_BYTE(fromMaster);
toMaster := fromMaster / 10;
localIn;
Der Variablenwert, der vom Master an den Slave gesendet wird, wird einmal testweise auf dem I/O-Modul ausgegeben, durch 10 geteilt und zurück an den Master gesendet. - Um das Programm zu übersetzen, klicken Sie im Register „Erstellen“ auf Code erzeugen (Alternativ Funktionstaste: F11).
Master-Gerät konfigurieren
- Erstellen Sie für den Controller, der als Master verwendet werden soll, ein Feldbuselement „Ethernet“. Klicken Sie dazu mit der rechten Maustaste auf das Gerät und auf Gerät anhängen....
- Wählen Sie unter „Ethernet Adapter“ den Feldbus „Ethernet“ aus.
- Klicken Sie auf [Gerät anhängen] und lassen Sie das Dialogfenster geöffnet.
- Im Gerätebaum wird ein neues Element „Ethernet (Ethernet)“ erstellt.
- Klicken Sie auf das neue Element und wählen Sie für das Master-Gerät im noch geöffneten Dialogfenster unter „Modbus“ den „Modbus TCP Master“ aus.
- Bestätigen Sie mit [Gerät anhängen] und lassen Sie das Dialogfenster geöffnet.
- Klicken Sie auf das neue Element „Modbus_TCP_Master (Modbus TCP Master)“ im Gerätebaum und fügen Sie aus dem noch geöffneten Dialogfenster das „Modbus TCP Slave Device“ ein.
- Dieses wird im Gerätebaum unter dem Modbus-Master angeordnet und repräsentiert das Slave-Gerät.
- Um Master und Slave miteinander zu verknüpfen, tragen Sie nun die IP-Adresse des Slave-Gerätes bei dem „Modbus_TCP_Slave (Modbus TCP Slave)“ unterhalb des Masters ein. Klicken Sie dazu doppelt auf „Modbus_TCP_Slave (Modbus TCP Slave)“, um die Konfiguration zu öffnen und geben Sie im Register „Allgemein“ die IP-Adresse des Slave-Gerätes ein.
- Klicken Sie in das Register „Modbus Slave-Kanal“ und erstellen Sie zwei Kanäle. Damit geben Sie an, wie viel und wohin gelesen/geschrieben werden soll.
- Welchen Zugriffstyp (bzw. Modbus-Dienst) und welchen Offset für die Adressierung Sie wählen, ist abhängig davon, was Ihr Slave unterstützt. Oftmals ist die Auswahl von Funktionscode 4 und 16 sinnvoll, um mehrere Werte zu lesen und zu schreiben. Weitere Informationen zu unterstützten Modbus-Diensten finden Sie im Handbuch Ihres Slave-Gerätes.
In diesem Beispiel wird ein Kanal mit „WriteSingleRegister“ und ein Kanal mit „ReadInputRegisters“ erstellt, da hier nur ein Wert gelesen und geschrieben wird. - Klicken Sie in das Register „Modbus TCP Slave E/A-Abbild“ und erstellen Sie hier zwei Variablen - „toSlave“ (WriteSingleRegister) und „fromSlave“ (ReadInputRegisters).
- Master-Programm schreiben: Um den Programmeditor zu öffnen, klicken Sie im Gerätebaum doppelt auf das Master-Programm „PLC_PRG“.
- Erstellen Sie ein einfaches Programm:
toSlave:=toSlave+1;
fromSlave;
Ein Variablenwert wird hochgezählt und einer wird ausgegeben. - Um das Programm zu übersetzen, klicken Sie im Register „Erstellen“ auf Code erzeugen (Alternativ Funktionstaste: F11).
Master- und Slave-Applikationen online verbinden
- Zum Verbinden der Applikation klicken Sie für Master und Slave jeweils mit der rechten Maustaste auf „Applikation“ und wählen [Einloggen].
- Laden Sie jeweils das Programm auf das Gerät herunter.
- Starten Sie die Applikation, indem Sie mit der rechten Maustaste auf „Applikation“ und Start klicken.
- Das Programm läuft.