Skip to main content

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

Tabelle 2. Verfügbare Qualifizierer

N

Non-stored

Die Aktion ist solange aktiv wie der Schritt.

R

overriding Reset

Die mit S, SD, DS oder SL ausgeführte Aktion wird deaktiviert und somit nicht mehr ausgeführt.

S

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.

L

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.

D

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.

P

Pulse

Die Aktion wird genau zweimal ausgeführt: Einmal, wenn der Schritt aktiv wird und ein weiteres Mal, wenn der Schritt deaktiviert wird.

SD

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.

DS

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.

SL

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

_c4_img_sfc-qualifizierer-simple.png

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.

Prozedur. Rauchabzug steuern
  1. 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 anlegen

  2. Legen Sie im Deklarationsteil des angelegten Programmierbausteins folgende boolesche Variablen an:

    PROGRAM Simple_N
    VAR	
        bSmokeDetected: BOOL;
        bVent: BOOL;
    END_VAR
  3. Ändern Sie die Transition des Initialschritts: Klicken Sie auf die Transition und weisen Sie über die Eingabehilfe _cds_icon_button_threedots.png die Variable bSmokeDetected zu.

  4. Fügen Sie nach der Transition des Initialschritts einen Schritt mit dem Namen SmokeInSystem hinzu.

  5. Ändern Sie die Transition des Schritts SmokeInSystem: Klicken Sie auf die Transition und weisen Sie über die Eingabehilfe _cds_icon_button_threedots.png die Variable bSmokeDetected zu. Fügen Sie NOT hinzu: NOT bSmokeDetected

  6. Rechtsklicken Sie im Gerätebaum auf den neu angelegten Programmierbaustein Simple_N und wählen Sie den Befehl Objekt hinzufügen → Aktion.... Vergeben Sie den Namen Ventilate und stellen Sie für die Implementierungssprache die Option Strukturierter Text (ST) ein.

  7. Fügen Sie dort folgenden Code ein:

    // The alternation simulates the running ventilator.  
    bvent := NOT bvent;
  8. Klicken Sie auf den Schritt SmokeInSystem und fügen Sie über das Menü AS → Aktionsassoziation einfügen die Aktionsassoziation ein.

    Der Qualifizierer N ist jetzt der assoziierten Aktion zugewiesen.

  9. Klicken Sie in das rechte Feld der Assoziation und wählen Sie über die Eingabehilfe _cds_icon_button_threedots.png die Aktion mit dem Namen Ventilate aus.

    Eine einfache Steuerung eines Rauchabzugs ist eingerichtet.

POU mit zwei Mal Qualifizierer N

_c4_img_sfc-qualifizierer-advanced_2_N.png

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.

Prozedur. Rauchabzug steuern
  1. 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 anlegen

  2. Legen Sie im Deklarationsteil des angelegten Programmierbausteins folgende boolesche Variablen an:

    PROGRAM Advanced_N_N
    VAR	
        bSmokeDetected: BOOL;
        bVent: BOOL;
    END_VAR
  3. Ändern Sie die Transition des Initialschritts: Klicken Sie auf die Transition und weisen Sie über die Eingabehilfe _cds_icon_button_threedots.png die Variable bSmokeDetected zu.

  4. Fügen Sie nach der Transition des Initialschritts einen Schritt mit dem Namen SmokeInSystem hinzu.

  5. Ändern Sie die Transition des Schritts SmokeInSystem: Klicken Sie auf die Transition und weisen Sie über die Eingabehilfe _cds_icon_button_threedots.png die Variable bSmokeDetected zu. Fügen Sie NOT hinzu: NOT bSmokeDetected

  6. Rechtsklicken Sie im Gerätebaum auf den neu angelegten Programmierbaustein Advanced_N_N und wählen Sie den Befehl Objekt hinzufügen → Aktion.... Vergeben Sie den Namen Ventilate und stellen Sie für die Implementierungssprache die Option Strukturierter Text (ST) ein.

  7. Fügen Sie dort folgenden Code ein:

    bvent := NOT bvent;
  8. Klicken Sie auf den Schritt SmokeInSystem und fügen Sie über das Menü AS → Aktionsassoziation einfügen die Aktionsassoziation ein.

    Der Qualifizierer N ist jetzt der assoziierten Aktion zugewiesen.

  9. Klicken Sie in das rechte Feld der Assoziation und wählen Sie über die Eingabehilfe _cds_icon_button_threedots.png die Aktion mit dem Namen Ventilate aus.

  10. Fügen Sie nach der Transition des Schritts SmokeInSystem einen Schritt mit dem Namen NoSmokeMore hinzu und eine Transition mit der Bedingung NoSmokeMore.t > t#5s.

  11. Klicken Sie auf den Schritt NoSmokeMore und fügen Sie über das Menü AS → Aktionsassoziation einfügen die Aktionsassoziation ein.

    Der Qualifizierer N ist jetzt der assoziierten Aktion zugewiesen.

  12. Klicken Sie in das rechte Feld der Assoziation und wählen Sie über die Eingabehilfe _cds_icon_button_threedots.png die Aktion mit dem Namen Ventilate aus.

    Der Rauchabzug stoppt nach 5 Sekunden.

POU mit Qualifizierer S und R

_c4_img_sfc-qualifizierer-advanced.png

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.

Prozedur. Rauchabzug starten
  1. 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 anlegen

  2. Legen Sie im Deklarationsteil des angelegten Programmierbausteins folgende boolesche Variablen an:

    PROGRAM Advanced_S_R
    VAR	
        bSmokeDetected: BOOL;
        bVent: BOOL;
    END_VAR
  3. Ändern Sie die Transition des Initialschritts: Klicken Sie auf die Transition und weisen Sie über die Eingabehilfe _cds_icon_button_threedots.png die Variable bSmokeDetected zu.

  4. Fügen Sie nach der Transition des Initialschritts einen Schritt mit dem Namen SmokeInSystem hinzu.

  5. Ändern Sie die Transition des Schritts SmokeInSystem: Klicken Sie auf die Transition und weisen Sie über die Eingabehilfe _cds_icon_button_threedots.png die Variable bSmokeDetected zu. Fügen Sie NOT hinzu: NOT bSmokeDetected

  6. Rechtsklicken Sie im Gerätebaum auf den neu angelegten Programmierbaustein Advanced_S_R, wählen Sie den Befehl Objekt hinzufügen → Aktion.... Vergeben Sie den Namen Ventilate und stellen Sie für die Implementierungssprache die Option Strukturierter Text (ST) ein.

  7. Fügen Sie dort folgenden Code ein:

    bvent := NOT bvent;
  8. Klicken Sie auf den Schritt SmokeInSystem und fügen Sie über das Menü AS → Aktionsassoziation einfügen die Aktionsassoziation ein.

  9. Klicken Sie in das linke Feld der Assoziation und wählen Sie über die Eingabehilfe _cds_icon_button_threedots.png den Qualifizierer S.

  10. Klicken Sie in das rechte Feld der Assoziation und wählen Sie über die Eingabehilfe _cds_icon_button_threedots.png die Aktion mit dem Namen Ventilate aus.

    Eine einfache Steuerung eines Rauchabzugs ist eingerichtet.

Prozedur. Rauchabzug nach 5 Sekunden stoppen
  1. Fügen Sie nach der Transition des Schritts SmokeInSystem einen Schritt mit dem Namen NoSmokeMore hinzu und eine Transition mit der Bedingung NoSmokeMore.t > t#5s.

  2. Fügen Sie nach der Transition des Schritts NoSmokeMore einen weiteren Schritt mit dem Namen After_5sec und eine Transition mit der Bedingung TRUE hinzu.

  3. Klicken Sie auf den Schritt After_5sec und fügen Sie über das Menü AS → Aktionsassoziation einfügen die Aktionsassoziation ein.

  4. Klicken Sie in das linke Feld der Assoziation und wählen Sie über die Eingabehilfe _cds_icon_button_threedots.png den Qualifizierer R.

  5. Klicken Sie in das rechte Feld der Assoziation und wählen Sie über die Eingabehilfe _cds_icon_button_threedots.png die Aktion mit dem Namen Ventilate aus.

    Der Rauchabzug stoppt.