
Wie finden Sie diesen Artikel? Helfen Sie uns, bessere Inhalte für Sie bereitzustellen.

Vielen Dank! Ihr Feedback ist eingegangen.

There was a problem submitting your feedback, please try again later.

Was denken Sie über diesen Artikel?
Ein Structured-Text-Programm (SPS) zur Steuerung einer Fußgängerampel, das auf unserem vorherigen Ampelbeispiel aufbaut.
Nachdem ich in meinem letzten Blogbeitrag mithilfe von Structured Text in LogiCAD 3 eine einfache Ampelanlage simuliert habe, wollte ich dieses Projekt nun zu einer Fußgängerampel weiterentwickeln. Hierzu wären ein Eingang in Form einer Taste, über die der Fußgänger die Verkehrsampel auslöst, und ein zusätzlicher Ausgang für die Anzeige zum Queren der Straße hinzuzufügen. Noch echter wirkt die Ampel durch einen Warnsummer, der dem Fußgänger mitteilt, dass die Verkehrsampel bald wieder grün wird und die Straße nicht mehr sicher überquert werden kann.
Hardware
Auch hier verwende ich den RevPi Core 3 und ein DIO, das an einer auf eine 5 mm dicke, lasergeschnittene MDF-Platte befestigten DIN-Hutschiene montiert ist. Zusätzlich zur bestehenden Konfiguration musste ich jetzt 24 V an die Eingangsklemmen des DIO anschließen und anhand des Abschnitts How to Connect the Power Supply (Netzteil anschließen) der Kurzanleitung die Verbindungen überprüfen.
Das Netzteil wird mit dem X2-Stecker des DIO-Moduls verbunden – die 24 V an Pin 1 und die Erdung an Pin 2.
Das Licht der Fußgängerampel, eine weiße LED (763-7905) und ein Summer (626-157) wurden an die Ausgänge 4 bzw. 5 des DIO-Moduls angeschlossen. Anschließend wurde die Taste an Eingang 1 angeschlossen. Dabei war die Nummerierung der Eingänge (ausgehend von der rechten unteren Ecke des Steckers und des 24-V-Netzteils) zu beachten. Da die Eingänge 24 V vom Netzteil erhalten, war ich zunächst davon ausgegangen, dass die Taste auf einer Seite geerdet werden sollte. Nachdem ich noch einmal die Kurzanleitung und diesen Post im Forum gelesen hatte, wurde mir klar, dass sie an die 24 V angeschlossen werden muss.
Als Nächstes habe ich eine einfache Acrylhalterung für die dem Fußgänger zugewandten Komponenten (Taste, Summer und weiße LED) ausgeschnitten und zurechtgebogen und die LED spaßeshalber mit einem grünen Ampelmännchen im ostdeutschen Stil versehen.
Einstellungen
Dann musste ich den neuen Komponenten in den Konfigurationseinstellungen des RevPi geeignete Namen geben. Hierzu habe ich den Abschnitt „Value Editor“ (Werte-Editor) verwendet und außerdem die entsprechenden Änderungen an der Datei für die globalen Einstellungen in LogiCAD 3 vorgenommen.
Hierzu klicken Sie in LogiCAD im Projektmanager unter „Revolution Pi“ mit der rechten Maustaste auf RevolutionPiResource (Ressource für Revolution Pi) und anschließend auf Change IO Configuration (E/A-Konfiguration ändern). Dadurch wird die PiCtory-Seite in Ihrem Standard-Webbrowser geöffnet.
Bearbeiten Sie die Ein- und Ausgänge im Abschnitt „Value Editor“ (Werte-Editor) in der rechten unteren Ecke von PiCtory. Ich habe Ausgang 4 in „Ampel_4“, Ausgang 5 in „Summer_5“ und Eingang 1 in „Taste_1“ umbenannt.
Sie speichern die Änderungen, indem Sie auf die Datei klicken und Save as Start-Config (Als Startkonfiguration speichern) auswählen.
Wenn Sie nun wieder in Logi.Cad 3 mit der rechten Maustaste auf „RevolutionPiResource“ (Ressource für Revolution Pi) klicken und „Load IOConfiguration“ (E/A-Konfiguration laden) wählen, wird die Konfigurationsdatei vom RevPi abgerufen und die Datei mit den globalen Einstellungen im LogiCAD-3-Projekt entsprechend aktualisiert.
Der ST-Code
PROGRAM RevolutionPiProgram
VAR
wait : TON;
count : INT;
END_VAR
VAR_EXTERNAL
Red_1 : BOOL;
Amber_2 : BOOL;
Green_3 : BOOL;
Cross_4 : BOOL;
Buzzer_5 : BOOL;
Button_1 : BOOL;
END_VAR
CASE count OF
0: //init
count := count 4;
1: // Amber
Red_1 := False;
Amber_2 := True;
Green_3 := False;
Cross_4 := False;
Buzzer_5 := False;
wait(IN:=TRUE, PT:=T#7s);
IF wait.Q THEN
wait(IN:=FALSE);
count := count + 1;
END_IF;
2: // Red and Cross
Red_1 := True;
Amber_2 := False;
Green_3 := False;
Cross_4 := True;
Buzzer_5 := False;
wait(IN:=TRUE, PT:=T#10s);
IF wait.Q THEN
wait(IN:=FALSE);
count := count + 1;
END_IF;
3: // Red, Amber and Buzzer
Red_1 := True;
Amber_2 := True;
Green_3 := False;
Cross_4 := False;
Buzzer_5 := True;
wait(IN:=TRUE, PT:=T#5s);
IF wait.Q THEN
wait(IN:=FALSE);
count := count + 1;
END_IF;
4: // Green
IF Button_1 = FALSE THEN count := 1;
END_IF;
Red_1 := False;
Amber_2 := False;
Green_3 := True;
Cross_4 := False;
Buzzer_5 := False;
ELSE
count := 4;
END_CASE;
END_PROGRAM
Am Anfang des Codes werden die Variablen gesetzt:
VAR_EXTERNAL
Die externen Variablen müssen genau mit den Bezeichnungen für die in PiCtory und der Konfigurationsdatei in LogiCAD 3 festgelegten Eingänge und Ausgänge übereinstimmen.
Dann kommt die Anweisung:
count := 4;
Sie schickt das Programm zum Anweisungsblock mit der Nummer 4. Diese Anweisungen prüfen zunächst, ob die Taste gedrückt wurde. Wenn nicht, wird das grüne Licht eingeschaltet und alle anderen Leuchten und der Summer werden ausgeschaltet. Da es sich um ein ST-Programm handelt, wird es in einer Schleife ausgeführt, d. h., es kehrt zum Anfang zurück und beginnt von vorn. Das Ergebnis ist, dass das grüne Licht weiter leuchtet, bis ein Tastendruck erkannt wird. In diesem Fall wird der Anweisungsblock mit der Nummer 1 aufgerufen und anschließend die gesamte Sequenz durchlaufen.
Jeder Block enthält einen Zeitgeber:
wait(IN:=TRUE, PT:=T#5s);
So lässt sich ganz einfach festlegen, wie lange ein Schritt der Sequenz dauert, indem man den Wert nach „T#“ ändert. In diesem Beispiel beträgt er 5 Sekunden – „10s“ wären 10 Sekunden und „10ms“ 10 Millisekunden.
Obwohl es nicht zwingend notwendig ist, habe ich in jeden Anweisungsblock die Werte der einzelnen Variablen eingefügt. So ist es einfacher zu erkennen (und gegebenenfalls zu ändern), was bei den einzelnen Schritten des Vorgangs geschieht.
Sobald LogiCAD 3 mit dem RevPi verbunden und der Code erstellt und hochgeladen wurde, reagierten die Leuchten, die Taste und der Summer wie erwartet.
Potenzial
Bei diesem Beispiel handelt es sich um eine einfache Abfolge von Ereignissen mit nur 4 Schritten. Es kann jedoch problemlos mit mehr Ausgängen und/oder verschiedenen Kombinationen von Ausgängen ergänzt werden, die nacheinander unterschiedlich lange ausgeführt werden. Das heißt, dass die Schaltung durch geringfügige Änderungen verschiedene Leuchten, Summer, Motoren oder was auch immer auslösen und mit zusätzlichen Eingängen wie zum Beispiel Temperatur- oder Bewegungssensoren weiterentwickelt werden kann.