Beispiel Blinking Light

In diesem Beispiel wollen wir eine Lampe im Sekundentakt blinken lassen. Wir verwenden für dieses Beispiel einen RevPi Core3, ein RevPi DIO und eine LED. Ausserdem haben wir einen PC, auf dem CODESYS bereits installiert ist.

Vorbereitungen:

  • Schließe die LED an einen beliebigen Ausgang Deines RevPi DIO an.
  • Verbinde RevPi Core und RevPi DIO mithilfe der PiBridge.
  • Sorge dafür, dass Du auf Dein Gerät zugreifen kannst (Headless oder schließe Maus, Tastatur und Monitor an).
  • Schließe die Spannungsversorgung an.

Los geht`s:

  • Öffne CODESYS.
  • Öffne ein neues Standardprojekt.
  • Wähle als Gerät CODESYS Control for Raspberry Pi MC SL und eine der EN 61131-3 Programmiersprachen für SPS. In diesem Beispiel verwenden wir Ladder Logic Diagram (LD).

Das Fenster „Geräte“ im Codesys-Editor wird aktualisiert.

Es soll eine Standard-POU (Program Organization Unit) PLC_PRG erstellt werden, in der der RevPi Controller in KOP programmiert werden kann. PLC_PRG ist bereits so konfiguriert, dass sie in der Main Task aufgerufen wird. Deshalb sind hier keine weiteren Schritte in der Task-Konfiguration erforderlich.

  • Klicke mit der rechten Maustaste auf „Device“ im Gerätefenster.
  • Klicke auf „Add Device“.

Unter „Miscellaneous“ mit dem Herstellerfilter „KUNBUS GmbH“ werden alle von KUNBUS unterstützten CODEYS Controller angezeigt.

  • Wähle den RevPi Core3.
  • Klicke auf „Add Device“.

Der RevPi Core3 wird im Codeys-Gerätebaum hinzugefügt.

  • Klicke mit der rechten Maustaste auf den RevPi Core3.
  • Klicke erneut auf „Gerät hinzufügen“.

Navigiere zu den unter „Miscellaneous“ aufgeführten Geräten.

  • Filtere nach Hersteller “KUNBUS GmbH”.
  • Du kannst hier optional ein Gerät auf der rechten oder linken Seite hinzufügen.

In diesem Beispiel wollen wir ein weiteres Modul auf der rechten Seite des RevPi Core3 anschließen.

  • Wähle dazu „piBridgeRight“.
  • Klicke auf “Add Device“.

Hinweis! Wenn Du einen RevPi Connect verwendest, musst Du „Left“ wählen, da ein DIO/DO-Modul nur auf der linken Seite des RevPi Connect verwendet werden darf.

Im Gerätebaum wird das Modul “Right” hinzugefügt.

  • Wähle das Modul „piBridgeRight“ aus.
  • Klicke erneut auf „Add Device“.
  • Navigiere zu den unter „Miscellaneous“ aufgeführten Geräten.
  • Filtere nach Hersteller “KUNBUS GmbH”.

Hier werden alle Module angezeigt, die an der rechten Seite des RevPi Core3 angeschlossen werden können.

  • Wähle das “RevPi_DIO“ aus.
  • Klicke auf „Add Device“.

Das RevPi_DIO-Modul wurde dem Gerätebaum hinzugefügt.

  • Doppelklicke auf das RevPi_DIO im Gerätebaum.
  • Navigiere zur Registerkarte Revolution Pi DIO Module I/O Mapping.
  • Hier können die verwendeten IO-Variablen der entsprechenden Module benannt werden. Um auf sie zuzugreifen, musst Du sie einfach in einem Programm aufrufen.
  • Schreibe einen Variablennamen als „Lampe 1“ für den Kanal DO_Ch1.
  • Doppelklicke im Gerätebaum auf PLC_PRG.

Es öffnet sich das Programmfenster PLC_PRG, in dem die Logik (das Programm) für eine am DIO-Modul angeschlossene blinkende Lampe in KOP geschrieben wird.

  • Klicke mit der rechten Maustaste auf “rung 1”.
  • Füge „Negated Contact“ ein.
  • Klicke mit der rechten Maustaste auf das Ende von „Negated Contact“.
  • Wähle „Insert Empty Box”.
  • Wähle den Timer-Funktionsbaustein TON aus der CODESYS Standardbibliothek.
  • Klicke auf die Beschriftung des Funktionsbausteins.
  • Drücke die Eingabetaste.

Das Auto-Declare-Fenster öffnet sich. Hier kannst Du die Variable TON als Standard deklarieren.

  • Klicke dazu auf „OK“.

 

  • Füge ein “Coil” rechts von TON_0 ein.
  • Klicke mit der rechten Maustaste, um “rung 2” hinzuzufügen.
  • Vervollständige die Logik wie unten abgebildet.

TON_0 und TON_2 sind zwei TON-Zeitgeber, die mit einer Periode von 1 s konfiguriert sind. Lamp1 ist der Ausgang am DIO-Modul, den wir blinken lassen wollen. Das ET-Feld der Timer kann leer gelassen werden, da sie nicht verwendet werden.

In rung 1 soll TON_0 die Lamp1 nach 1s einschalten. Wenn TON_1.Q eingeschaltet wird (HIGH), wird der Öffnerkontakt TON_1.Q geöffnet, was dazu führt, dass rung 1 auf logisch 0 ausgewertet wird, wodurch Lamp1 wieder für 1s ausgeschaltet wird. Die beiden rungs dienen also dazu, die Ausgangsvariable Lamp1 periodisch zwischen den Zuständen HIGH (1) und LOW (0) mit der Periode 1 s umzuschalten.

 

  • Doppelklicke im Codesys-Baum auf das “root”-Gerät.
  • Klicke auf die Registerkarte Kommunikationseinstellungen.
  • Klicke auf „Netzwerk scannen“ um den RevPi Core3 zu finden. Das funktioniert nur, wenn der RevPi Core3 physisch an Deinem Netzwerk angeschlossen ist.
  • Klicke auf „OK“, um das identifizierte Gerät hinzuzufügen.

RevPi Gerät nicht gefunden!
Wenn der vorherige Schritt nicht erfolgreich war, kannst Du das Problem suchen, indem Du den Reiter unter Tools/Update Raspberry Pi öffnest.

  • Gib die gültige Anmeldedaten und die IP-Adresse Deines RevPi Core3 ein.
  • Wähle „Scan“, um die Geräte im Netzwerk zu finden.
  • Klicke auf die Registerkarte “System”.
  • Klicke auf “Systeminfo”.

Hier findest Du die Logdatei des CODESYS Controllers unter dem Pfad /tmp/codesyscontrol.log.

Alternativ findest Du diese Datei auch über eine SSH-Terminalverbindung mit dem RevPi-Gerät. Du kannst sie mit folgendem Linux-Befehl einsehen: cat /tmp/codesyscontrol.log .

Wenn noch keine Codesys-Runtime installiert ist, kannst Du die Runtime aus dem CODESYS Runtime Package installieren. Um das RevPi Gerät mit Scan zu finden, muss die CODESYS-Steuerung laufen und die Netzwerk-IP-Verbindungseinstellungen müssen richtig konfiguriert sein.

RevPi Gerät ist gefunden!

  • Klicke auf das Login-Symbol, um eine Verbindung mit dem RevPi Controller herzustellen.
  • Beim ersten Herunterladen der Anwendung wird das folgende Fenster angezeigt.
    Klicke auf „Yes“.
  • Klicke auf die Start-Taste oder drücke F5. Dadurch startest Du die Applikation.

Du befindest Dich nun im Online-Modus, in dem Du sehen kannst, wie die Applikationslogik zyklisch im Task-Zyklus ausgeführt wird. Die am DIO-Modul angeschlossene Lampe soll jetzt im Takt von 1 s zu blinken beginnen.