Qualifizierer für Aktionen in AS
Sie weisen Qualifizierer IEC-Aktionen zu, die mit einem Schritt assoziiert sind. Der Qualifizierer definiert das Ausführungsverhalten der jeweiligen Aktion, das heißt, in welcher Art sowie wann und wie lange sie ausgeführt wird.
Die Qualifizierer werden vom Funktionsbaustein SFCActionControl der Bibliothek IecSfc.library verarbeitet. Die Bibliothek ist automatisch in das Projekt eingebunden, sobald CODESYS SFC installiert wurde.
Für weitere Informationen siehe: Programmieren in Ablaufsprache
| Non-stored | Die Aktion ist solange aktiv wie der Schritt. |
| overriding Reset | Die mit |
| Set (Stored) | Die Aktion wird ausgeführt, sobald der Schritt aktiv wird. Die Aktion wird weiter ausgeführt, auch wenn der Schritt schon deaktiviert wurde, bis sie einen Reset erhält. |
| time Limited | Die Aktion wird ausgeführt, sobald der Schritt aktiv wird. Die Aktion wird solange ausgeführt, bis der Schritt inaktiv wird oder die gegebene Zeitspanne abgelaufen ist. |
| time Delayed | Die Aktion wird ausgeführt, wenn nach Aktivwerden des Schritts die gegebene Verzögerungszeit abgelaufen ist und der Schritt immer noch aktiv ist. Die Aktion wird ausgeführt, bis der Schritt deaktiviert wird. |
| Pulse | Die Aktion wird genau zweimal ausgeführt: Einmal, wenn der Schritt aktiv wird und ein weiteres Mal, wenn der Schritt deaktiviert wird. |
| Stored and time Delayed | Die Ausführung der Aktion startet erst, wenn nach Aktivwerden des Schritts die gegebene Verzögerungszeit abgelaufen ist. Die Aktion wird solange ausgeführt, bis sie einen Reset erhält. |
| Delayed and Stored | Die Ausführung der Aktion startet erst, wenn nach Aktivwerden des Schritts die gegebene Verzögerungszeit abgelaufen ist und der Schritt immer noch aktiv ist. Die Aktion wird solange ausgeführt, bis sie einen Reset erhält. |
| Stored and time Limited | Die Aktion wird ausgeführt, sobald der Schritt aktiviert wird. Sie wird solange ausgeführt, bis die gegebene Zeit abgelaufen ist oder sie einen Reset erhält. |
Anmerkung
Eine Aktion mit dem Qualifizierer S, SD, DS oder SL läuft nach dem Inaktivwerden des Schritts weiter.
Bei den Qualifizierern S, SD und DS endet sie erst durch einen zurücksetzenden Aufruf derselben Aktion mit dem Qualifizierer R. Ein solcher Aufruf ist erforderlich, damit die Aktion beendet wird.
Bei dem Qualifizierer SL endet die Aktion automatisch, sobald die angegebene Zeit abgelaufen ist, oder vorzeitig durch einen Aufruf mit R.
Sie müssen die Zeitangaben bei den Qualifizierern L, D, SD, DS und SL im Format einer TIME-Konstante angeben.
Weitere Informationen dazu, wie Qualifizierer angewendet werden, finden Sie unter Beispiele für Qualifizierer.
Tipp
Wenn eine IEC-Aktion deaktiviert wird, wird sie ein weiteres Mal ausgeführt. Dies bedeutet, dass CODESYS eine solche Aktion mindestens zweimal ausführt. Das betrifft auch Aktionen mit dem Qualifizierer P.
Beispiele für Qualifizierer
Hier im Abschnitt finden Sie Beispiele, wie Qualifizierer angewendet werden können.
Beispiel: Rauchabzug in einem Lüftungssystem
Der Qualifizierer einer Aktion bestimmt, wann die Aktion startet und wie lange sie läuft. Das Beispiel zeigt denselben Ablauf in drei Implementierungen in der Ablaufsprache (AS). Die Implementierungen unterscheiden sich in der Verwendung der Qualifizierer.
Die Ausgangssituation: Ein Lüftungssystem überwacht die Luft mit einem Rauchsensor. Wenn der Sensor Rauch meldet, aktiviert die Steuerung sofort den Rauchabzug.
POU mit Qualifizierer N

Der Programmierbaustein enthält den einfachsten Ablauf. Wenn der Rauchsensor Rauch meldet, wird der Schritt mit der Aktion Ventilate aktiv. Der Schritt ruft die Aktion mit dem Qualifizierer N auf. Der Rauchabzug läuft, solange der Sensor Rauch meldet.
Legen Sie einen Programmierbaustein in der Implementierungssprache AS an und ändern Sie den Namen auf
Simple_N. Für weitere Informationen siehe: Programmierbaustein in AS anlegenLegen Sie im Deklarationsteil des angelegten Programmierbausteins folgende boolesche Variablen an:
PROGRAM Simple_N VAR bSmokeDetected: BOOL; bVent: BOOL; END_VARÄndern Sie die Transition des Initialschritts: Klicken Sie auf die Transition und weisen Sie über die Eingabehilfe
die Variable bSmokeDetectedzu.Fügen Sie nach der Transition des Initialschritts einen Schritt mit dem Namen
SmokeInSystemhinzu.Ändern Sie die Transition des Schritts
SmokeInSystem: Klicken Sie auf die Transition und weisen Sie über die Eingabehilfe
die Variable bSmokeDetectedzu. Fügen SieNOThinzu:NOT bSmokeDetectedRechtsklicken Sie im Gerätebaum auf den neu angelegten Programmierbaustein
Simple_Nund wählen Sie den Befehl Objekt hinzufügen → Aktion.... Vergeben Sie den NamenVentilateund stellen Sie für die Implementierungssprache die Option Strukturierter Text (ST) ein.Fügen Sie dort folgenden Code ein:
// The alternation simulates the running ventilator. bvent := NOT bvent;
Klicken Sie auf den Schritt
SmokeInSystemund fügen Sie über das Menü AS → Aktionsassoziation einfügen die Aktionsassoziation ein.Der Qualifizierer N ist jetzt der assoziierten Aktion zugewiesen.
Klicken Sie in das rechte Feld der Assoziation und wählen Sie über die Eingabehilfe
die Aktion mit dem Namen Ventilateaus.Eine einfache Steuerung eines Rauchabzugs ist eingerichtet.
POU mit zwei Mal Qualifizierer N

Problemstellung: Eine Restmenge an Rauch bleibt im System bestehen. Der Rauchabzug muss deshalb 5 Sekunden länger laufen.
Die POU löst die Nachlaufzeit über einen zusätzlichen Schritt. Wenn der Rauchsensor Rauch meldet, wird der Schritt mit der Aktion Ventilate aktiv. Der Schritt ruft die Aktion mit dem Qualifizierer N auf.
Wenn der Sensor keinen Rauch mehr erkennt, wechselt die Steuerung auf den Schritt NoSmokeMore. Der Rauchabzug läuft weiter. Die Transition hinter dem Schritt wertet die implizite Schrittvariable mit der Bedingung NoSmokeMore.t > t#5s aus. Diese Variable enthält die Zeit, die der Schritt bereits aktiv ist.
Nach 5 Sekunden ist die Bedingung erfüllt und der Schritt wird inaktiv. Damit endet auch die Ausführung der Aktion Ventilate.
Legen Sie einen Programmierbaustein in der Implementierungssprache AS an und ändern Sie den Namen auf
Advanced_N_N. Für weitere Informationen siehe: Programmierbaustein in AS anlegenLegen Sie im Deklarationsteil des angelegten Programmierbausteins folgende boolesche Variablen an:
PROGRAM Advanced_N_N VAR bSmokeDetected: BOOL; bVent: BOOL; END_VARÄndern Sie die Transition des Initialschritts: Klicken Sie auf die Transition und weisen Sie über die Eingabehilfe
die Variable bSmokeDetectedzu.Fügen Sie nach der Transition des Initialschritts einen Schritt mit dem Namen
SmokeInSystemhinzu.Ändern Sie die Transition des Schritts
SmokeInSystem: Klicken Sie auf die Transition und weisen Sie über die Eingabehilfe
die Variable bSmokeDetectedzu. Fügen SieNOThinzu:NOT bSmokeDetectedRechtsklicken Sie im Gerätebaum auf den neu angelegten Programmierbaustein
Advanced_N_Nund wählen Sie den Befehl Objekt hinzufügen → Aktion.... Vergeben Sie den NamenVentilateund stellen Sie für die Implementierungssprache die Option Strukturierter Text (ST) ein.Fügen Sie dort folgenden Code ein:
bvent := NOT bvent;
Klicken Sie auf den Schritt
SmokeInSystemund fügen Sie über das Menü AS → Aktionsassoziation einfügen die Aktionsassoziation ein.Der Qualifizierer N ist jetzt der assoziierten Aktion zugewiesen.
Klicken Sie in das rechte Feld der Assoziation und wählen Sie über die Eingabehilfe
die Aktion mit dem Namen Ventilateaus.Fügen Sie nach der Transition des Schritts
SmokeInSystemeinen Schritt mit dem NamenNoSmokeMorehinzu und eine Transition mit der BedingungNoSmokeMore.t > t#5s.Klicken Sie auf den Schritt
NoSmokeMoreund fügen Sie über das Menü AS → Aktionsassoziation einfügen die Aktionsassoziation ein.Der Qualifizierer N ist jetzt der assoziierten Aktion zugewiesen.
Klicken Sie in das rechte Feld der Assoziation und wählen Sie über die Eingabehilfe
die Aktion mit dem Namen Ventilateaus.Der Rauchabzug stoppt nach
5Sekunden.
POU mit Qualifizierer S und R

Problemstellung: Eine Restmenge an Rauch bleibt im System bestehen. Der Rauchabzug muss deshalb 5 Sekunden länger laufen.
Auch hier aktiviert die Steuerung den Rauchabzug sofort. Der Schritt SmokeInSystem ruft die Aktion Ventilate mit dem Qualifizierer S auf. Während des Schritts NoSmokeMore läuft der Rauchabzug dennoch weiter, weil die Aktion mit dem Qualifizierer S gespeichert ist und erst durch R endet.
Die POU löst die Nachlaufzeit über einen zusätzlichen Schritt NoSmokeMore. Nach 5 Sekunden ist die Bedingung erfüllt und der Schritt wird inaktiv.
Der zusätzliche Schritt After_5sec ruft die Aktion Ventilate mit dem Qualifizierer R auf. Der Schritt setzt die Aktion zurück und stoppt damit den Rauchabzug nach 5 Sekunden.
Legen Sie einen Programmierbaustein in der Implementierungssprache AS an und ändern Sie den Namen auf
Advanced_S_R. Für weitere Informationen siehe: Programmierbaustein in AS anlegenLegen Sie im Deklarationsteil des angelegten Programmierbausteins folgende boolesche Variablen an:
PROGRAM Advanced_S_R VAR bSmokeDetected: BOOL; bVent: BOOL; END_VARÄndern Sie die Transition des Initialschritts: Klicken Sie auf die Transition und weisen Sie über die Eingabehilfe
die Variable bSmokeDetectedzu.Fügen Sie nach der Transition des Initialschritts einen Schritt mit dem Namen
SmokeInSystemhinzu.Ändern Sie die Transition des Schritts
SmokeInSystem: Klicken Sie auf die Transition und weisen Sie über die Eingabehilfe
die Variable bSmokeDetectedzu. Fügen SieNOThinzu:NOT bSmokeDetectedRechtsklicken Sie im Gerätebaum auf den neu angelegten Programmierbaustein
Advanced_S_R, wählen Sie den Befehl Objekt hinzufügen → Aktion.... Vergeben Sie den NamenVentilateund stellen Sie für die Implementierungssprache die Option Strukturierter Text (ST) ein.Fügen Sie dort folgenden Code ein:
bvent := NOT bvent;
Klicken Sie auf den Schritt
SmokeInSystemund fügen Sie über das Menü AS → Aktionsassoziation einfügen die Aktionsassoziation ein.Klicken Sie in das linke Feld der Assoziation und wählen Sie über die Eingabehilfe
den Qualifizierer S.Klicken Sie in das rechte Feld der Assoziation und wählen Sie über die Eingabehilfe
die Aktion mit dem Namen Ventilateaus.Eine einfache Steuerung eines Rauchabzugs ist eingerichtet.
5 Sekunden stoppenFügen Sie nach der Transition des Schritts
SmokeInSystemeinen Schritt mit dem NamenNoSmokeMorehinzu und eine Transition mit der BedingungNoSmokeMore.t > t#5s.Fügen Sie nach der Transition des Schritts
NoSmokeMoreeinen weiteren Schritt mit dem NamenAfter_5secund eine Transition mit der BedingungTRUEhinzu.Klicken Sie auf den Schritt
After_5secund fügen Sie über das Menü AS → Aktionsassoziation einfügen die Aktionsassoziation ein.Klicken Sie in das linke Feld der Assoziation und wählen Sie über die Eingabehilfe
den Qualifizierer R.Klicken Sie in das rechte Feld der Assoziation und wählen Sie über die Eingabehilfe
die Aktion mit dem Namen Ventilateaus.Der Rauchabzug stoppt.