Kommunikation zwischen C# (Visual Studio) und CoDeSys Laufzeit auf Raspberry Pi – Teil I

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.

codesys_rpi

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.

codesys_rpi_bild_01

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.

codesys_rpi_bild_02

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.

codesys_rpi_bild_03

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.

codesys_rpi_bild_04

Nun klinken wir per Rechtsklick auf den eben hinzugefügten Adapter Ethernet und klicken hier auch wieder auf Gerät anhängen.

codesys_rpi_bild_05

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.

 

codesys_rpi_bild_06

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

codesys_rpi_bild_07

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.

 

codesys_rpi_bild_08

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

codesys_rpi_bild_09

Hier wechseln wir nun im Hauptfenster im Vertikalen Tabmenü auf Modbus TCP Slave

codesys_rpi_bild_10

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.

codesys_rpi_bild_11

Hier suchen wir im Projektbaum nach unserem Programm PLC_PRG und wählen hier das g_b8_Modbus_Register_0 aus.

codesys_rpi_bild_12

In der Mapping Übersicht sehen wir nun das der Bereich unsere Variable zugeordnet wurde.

codesys_rpi_bild_13

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.

codesys_rpi_bild_14

Jetzt nur noch im Projektbaum auf die Application und dann auf Start. Damit haben wir diesen Teil erfolgreich beendet.

codesys_rpi_bild_15

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.

codesys_rpi_bild_16

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

codesys_rpi_bild_18

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.

codesys_rpi_bild_17

 

Dies war der erste Teil der Anleitung. Der zweite Teil ist hier verfügbar.


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert