Allgemein
Seit einiger Zeit ist die unbegrenzte Laufzeit von Codesys für das Raspberry Pi erhältlich. Viele Anwendungen sind ohnehin für das Raspberry Pi auf Basis von Linux zu realisieren. Die Codesys Entwickung nach IEC 61131-3 macht es allerdings für viele aus dem technischen Bereich einfacher eine Applikation zu programmieren, anstand sich mit Hochsprachen auseinandersetzen. Die Codesys Entwicklungsumgebung selbst ist frei Verfügbar und kann nach kostenfreier Registrierung heruntergeladen werden.
Ich gehe bei der Vorstellung dieses Projekts davon aus, das jeder das Raspberry Pi bereits mit der Codesys Laufzeit in Betrieb genommen hat, und es einsatzbereit im Netzwerk verfügbar ist.
Schnittstelle
Als einfachste Schnittstelle zwischen C# und Codesys bietet sich das Protokoll Modbus TCP. Für dieses existieren massenhaft an Freeware, OpenSource und kommerziellen Lösungen. Zur Kommunikation in diesem Beispiel werde ich die Bibliothek EasyModbusTCP nutzten. Diese ist frei auf Sourceforge verfügbar und verfügt über einen einfachen Testclient sowie den fertigen Bibliothek zum einbinden in Visual Studio.
Das Programm selbst wird eine Verbindung per TCP/IP zum Raspberry Pi aufbauen, dieses wiederum führt die Verbindung direkt zur Codesys Laufzeit.
Projekt als Video
Dei ganze Prozedur ist auch ebenfalls als Video verfügbar: Das ganze findet man auf YouTube unter folgendem Link
httpv://www.youtube.com/watch?v=GXaoTa-GuPE
https://www.youtube.com/watch?v=GXaoTa-GuPE
Einrichten von Codesys Projekt
Wir starten Codesys 3.5 und erstellen ein neues Projekt, ich habe es in diesem Beispiel: Raspberry_Pi_Modbus genannt.
Nach der Erstellung werden wir erneut gefragt, ich definiere das ganze in der ST-Programmiersprache. Als Gerät wählen wir selbstverständlich unser Raspberry Pi aus.
Hinzufügen des Modbus-Clients
Der nächste Schritt beschreibt das Hinzufügen des Modbus Clients zum Projekt. Dafür klinken wir einfach mit einem Rechtsklick in unserem Projektbaum auf das Device Raspbery Pi und dann auf Gerät anhängen.
Hier wählen wir dann unter Ethernet Adapter den Adapter Ethernet aus und klinken auf Gerät anhängen. Dan nach schließen wir den Dialog.
Nun klinken wir per Rechtsklick auf den eben hinzugefügten Adapter Ethernet und klicken hier auch wieder auf Gerät anhängen.
Hier klicken wir uns nun durch den Prjektbaum bis zum ModbusTCP Slave Device und fügen dies wieder durch Gerät anhängen hinzu. Dann schließen wir den Dialog.
Der Modbus Client ist nun zum Projekt hinzugefügt. Im Normalfall bekommt er nun den Port 502 automatisch hinzugefügt. Zusätzlich werden jeweils 10.WORD für Holding sowie Input Register freigehalten. Als nächsten Schritt Definieren wir uns nun im Hauptprogramm ein paar Globale Variablen und ein wenig Action beim Auslesen zu erhalten.
Erstellen von Globalen Variablen sowie zuweisen zum Modbus Client
Wir rufen in unserem Projektbaum das standart Programm PLC_PRG was bei der Projekterstellung automatisch hinzugefügt worden ist
Hier fügen wir nun ein paar Zeilen der Variablendeklaration sowie das Programm hinzu. Der Zähler soll in jedem Zyklus um eine Zahl addieren. Die Variablen für den Modbus nutzten wir zum Mapping der Register.
Nun haben wir ein kleines Programm das uns ein paar Bits im Bereich des Modbus ändert. Dieses Verknüpfen wir nun wieder mit dem Modbus Slave.
Als nächstes öffnen wir im Projektbaum das kürzlich eingefügte Gerät ModbusTCP_Slave_Device
Hier wechseln wir nun im Hauptfenster im Vertikalen Tabmenü auf Modbus TCP Slave
Nun kommen wir zum Mapping der Kanäle an die Variablen die wir zuvor angelegt haben. Hierfür wählen wir die Adresse %QW0 die Spalte Variable aus. Durch das Klinken auf die Punkte öffnet sich die Eingabehilfe.
Hier suchen wir im Projektbaum nach unserem Programm PLC_PRG und wählen hier das g_b8_Modbus_Register_0 aus.
In der Mapping Übersicht sehen wir nun das der Bereich unsere Variable zugeordnet wurde.
Nun sind wir im Bereich von Codesys am Ende angekommen. Lediglich das Programm muss nun auf das Raspberry übertragen werden und die Software SPS gestartet.
Also einfach im Menü auf Online und dann Einloggen. Jetzt muss sich evtl. noch die IP des Geräts des Zielgeräts eingegeben werden und das Programm auf die Software SPS gedownloaded.
Jetzt nur noch im Projektbaum auf die Application und dann auf Start. Damit haben wir diesen Teil erfolgreich beendet.
Durch das erneute öffnen vom ModbusTCP_Slave_Device haben wir nun eine schöne Übersicht, wie sich die einzelnen Bits vom Modbus Adapter verändern.
Erster Test der Kommuniktation durch EasyModbusClientExample
Nach dem Entpacken von EasyModbusPackage.zip erhalten wir vier Ordner. Um einen ersten Test durchführen zu können wechseln wir in EasyModbusClientExample und starten die EasyModbusClientExample.exe
Im Programm setzten wir dann die Server IP-Adresse von unserem Raspberry Pi und Lesen dann das Input Register (Read Input Registers). Wir sollten dann vom Modbus Server die aktuelle Nummer erhalten.
Dies war der erste Teil der Anleitung. Der zweite Teil ist hier verfügbar.
Schreibe einen Kommentar