Testprogramm
Als Anwendungsbeispiel dient ein kleines Lauflicht. Das Programm enthält drei Funktionen: Eine erzeugt den Takt, ein Zähler gibt die Impulse vor und eine Dekodiermatrix definiert den Zählerstand so, dass er immer nur einen Ausgang schaltet.
Als ersten Schritt legen Sie in Codesys über Datei | Neues Projekt die grundlegenden Daten an. Dann wählen Sie den Typ Pixtend V2 -L- für das Projekt aus (Abbildung 6).

Abbildung 6: Mit wenigen Klicks haben Sie in der Entwicklungsumgebung von Codesys ein neues Projekt für das Pixtend angelegt.
Danach wählen Sie im Projektbaum den Eintrag Device und suchen nach dem Pixtend via Netzwerk durchsuchen. Findet die IDE den Pixtend, wählen Sie diesen an und bestätigen mit OK.
Um das Programm einzugeben, klicken Sie in der Baumansicht des Projekts doppelt auf PLC_PRG, worauf sich das STL-Programmierfenster öffnet. Hinter dem Kommentar // put your Programmcode here… fügen Sie nun das Programm ein (Abbildung 7).
Im Deklarationsteil oberhalb des Programmfensters definieren Sie die im Programm verwendeten Variablen. Diese gilt es danach mit den realen Ausgängen des Pixtend zu verknüpfen. Das geschieht im Projektbaum an der Stelle SPI_master/Pixtend_V2_L. Die Variablen brauchen Sie nicht einzutippen. Es genügt, wenn Sie doppelt auf die Zeile klicken und die drei Punkte anwählen.
Um das Programm zu starten, wechseln Sie zurück in den Reiter mit dem Programm und klicken auf das Icon zum Einloggen in der oberen Navigation. Nun lädt das Programm in den Pixtend, und Sie sehen, wie sich die Werte der Variablen ändern (Abbildung 8). Sollte das Übertragen scheitern, ist vermutlich die Zwei-Stunden-Frist abgelaufen, starten Sie das Pixtend mit dem oben genannten Shell-Kommando neu.

Abbildung 8: Die Software zeigt, wie sich die Werte der Variablen während des Ausführens des Programms verändern.
Im Deklarationsteil (Listing 1) ist jede verwendete Variable definiert. Die Variablen für die Ausgänge besitzen den Typ Boolean (BOOL). Um ein Taktsignal zu erzeugen, definieren Sie nach den Ausgängen einen Baustein vom Typ TON (Timer On). Diesen nennen Sie Takt. Um die Taktimpulse zu zählen, verwenden Sie den Baustein Zaehler vom Typ CUP (Count Up). Die Variable v dient dazu, den aktuellen Zählerstand zwischenzuspeichern.
Listing 1
VAR_INPUT
xInit : BOOL; // init flag
DigitalOut00: BOOL ;
DigitalOut01: BOOL ;
DigitalOut02: BOOL ;
DigitalOut03: BOOL ;
DigitalOut04: BOOL ;
DigitalOut05: BOOL ;
DigitalOut06: BOOL ;
DigitalOut07: BOOL ;
DigitalOut08: BOOL ;
DigitalOut09: BOOL ;
DigitalOut10: BOOL ;
DigitalOut11: BOOL ;
Takt: TON;
Zaehler: CTU;
v:int;
END_VAR
Der Programmteil (Listing 2) initialisiert zuerst die Verbindung zum Pixtend. Der Timer-Baustein Takt setzt sich immer wieder selbst zurück und startet neu. Das Signal, das er dabei erzeugt, gibt das Kommando Takt.ET < Takt.PT/2 dem Funktionsbaustein Zaehler als Eingangstakt mit. Dieser ist so definiert, dass er von 0 bis 12 zählt, wobei 12 zusätzlich als Signal zum Zurücksetzen des Zählers dient.
Listing 2
IF NOT xInit THEN RPI_GPIO_OUT24 := TRUE;// enable SPI communication between Pixtend & RasPi xInit := TRUE;// initialization ready END_IF Takt(PT:=T#500MS,IN:=NOT(Takt.Q)); Zaehler(CU:=(Takt.ET < Takt.PT/2),PV:=12,RESET:=Zaehler.Q); v:=(Zaehler.CV); DigitalOut00:=NOT(v.3) AND NOT(v.2) AND NOT(v.1) AND NOT(v.0); DigitalOut01:=NOT(v.3) AND NOT(v.2) AND NOT(v.1) AND v.0 ; DigitalOut02:=NOT(v.3) AND NOT(v.2) AND v.1 AND NOT(v.0); DigitalOut03:=NOT(v.3) AND NOT(v.2) AND v.1 AND v.0 ; DigitalOut04:=NOT(v.3) AND v.2 AND NOT(v.1) AND NOT(v.0); DigitalOut05:=NOT(v.3) AND v.2 AND NOT(v.1) AND v.0 ; DigitalOut06:=NOT(v.3) AND v.2 AND v.1 AND NOT(v.0); DigitalOut07:=NOT(v.3) AND v.2 AND v.1 AND v.0 ; DigitalOut08:= v.3 AND NOT(v.2) AND NOT(v.1) AND NOT(v.0); DigitalOut09:= v.3 AND NOT(v.2) AND NOT(v.1) AND v.0 ; DigitalOut10:= v.3 AND NOT(v.2) AND v.1 AND NOT(v.0); DigitalOut11:= v.3 AND NOT(v.2) AND v.1 AND v.0 ;
Nun speichert das Programm den aktuellen Wert von Zaehler in der Variablen v; das erspart Schreibarbeit und gestaltet das Programm übersichtlicher. Die Variable v verwenden Sie zum Dekodieren der einzelnen Ausgänge des Lauflichts. Bei der Dekodierung aktiviert jeder Zählerstand eine andere LED.
Fazit
Einige Projekte gelingen mithilfe von pneumatischen Bauelementen viel leichter als mit elektrischen Antrieben. Die kleinen Zylinder wirken unscheinbar, aber sie erzeugen erstaunlich hohe Kräfte. Pneumatik ist wartungsarm, langlebig und robust.
Die einzige Hürde stellt das Anschaffen des nicht ganz günstigen Kompressors dar. Doch allein mit der Pneumatik bewegt sich noch nichts. Für Abhilfe sorgt der Pixtend-Controller, der dem Gespenst das Leben einhaucht.
Der Autor
Martin Mohr hat eine Vorliebe für alles, was blinkt und klickt. Nach dem Studium der Informatik programmierte er Java-Applikationen. Mit dem RasPi erwachte die alte Liebe zur Elektronik wieder.






