Skip to main content

AS-Flags

AS-Flags sind implizit erzeugte Variablen mit vordefinierten Namen. Sie können Flags verwenden um die Abarbeitung eines AS-Diagramms zu beeinflussen. Mit diesen Flags können Sie zum Beispiel Zeitüberschreitungen anzeigen oder Schrittketten zurücksetzen. Weiterhin können Sie zum Beispiel den Tipp-Betrieb anschalten, um Transitionen gezielt zu schalten. Damit Sie auf diese Variablen Zugriff haben, müssen Sie sie deklarieren und aktivieren.

AS-Flags

Name

Datentyp

Beschreibung

SFCInit

BOOL

TRUE: CODESYS setzt den Ablauf auf den Initialschritt zurück. Die anderen AS-Flags werden ebenfalls zurückgesetzt (Initialisierung). Solange die Variable TRUE ist, bleibt der Initialschritt gesetzt (aktiv), wird aber nicht ausgeführt. Erst wenn Sie SFCInit wieder auf FALSE setzen, wird der Baustein normal weiter bearbeitet.

SFCReset

BOOL

Verhält sich ähnlich wie SFCInit

Im Unterschied zu diesem arbeitet CODESYS allerdings nach der Initialisierung den Initialschritt weiter ab. So könnten Sie beispielsweise im Init-Schritt das SFCReset-Flag gleich wieder auf FALSE setzen.

SFCError

BOOL

Wird TRUE, wenn in einem AS-Diagramm eine Zeitüberschreitung aufgetreten ist. Wenn im Programm nach der ersten Zeitüberschreitung eine weitere auftritt, wird diese nicht mehr registriert, wenn Sie die Variable SFCError vorher nicht wieder zurückgesetzt haben. Die Deklaration von SFCError ist Voraussetzung für das Funktionieren der anderen Flag-Variablen zur Kontrolle des zeitlichen Ablaufs (SFCErrorStep, SFCErrorPOU, SFCQuitError).

SFCEnableLimit

BOOL

Dient dem gezielten Einschalten (TRUE) und Ausschalten (FALSE) der Kontrolle für Zeitüberschreitungen in Schritten durch SFCError

Wenn Sie diese Variable deklarieren und aktivieren (AS-Einstellungen), müssen Sie sie auch auf TRUE setzen, damit SFCError arbeitet, ansonsten werden Zeitüberschreitungen ignoriert. Die Verwendung kann beispielsweise bei Inbetriebnahme oder Handbetrieb nützlich sein. Wenn Sie die Variable nicht deklarieren, arbeitet SFCError automatisch.

Voraussetzung ist die Deklaration von SFCError.

SFCErrorStep

STRING

Speichert den Namen des Schritts, der eine durch SFCError registrierte Zeitüberschreitung verursacht hat

Der Name wird solange bewahrt, bis der registrierte Schrittfehler mit Hilfe von SFCQuitError (FALSE -> TRUE) zurückgesetzt wird.

Voraussetzung ist die Deklaration von SFCError.

SFCErrorPOU

STRING

Speichert im Falle einer Zeitüberschreitung den Namen des Bausteins, in dem eine durch SFCError registrierte Zeitüberschreitung aufgetreten ist. Der Name wird gespeichert, bis die Zeitüberschreitung durch SFCQuitError zurückgesetzt wird.

Voraussetzung ist die Deklaration von SFCError.

SFCQuitError

BOOL

Solange diese boolesche Variable TRUE ist, hält CODESYS die Abarbeitung des AS-Diagramms an, eine eventuelle Zeitüberschreitung, gespeichert in der Variablen SFCError, wird dabei zurückgesetzt. Wenn Sie die Variable wieder auf FALSE setzen, werden alle bisherigen Zeiten in den aktiven Schritten zurückgesetzt.

Voraussetzung ist die Deklaration von SFCError.

SFCPause

BOOL

Solange diese Variable TRUE ist, hält CODESYS die Abarbeitung des AS-Diagramms an.

SFCTrans

BOOL

Wird TRUE, wenn eine Transition schaltet

SFCCurrentStep

STRING

Zeigt den Namen des gerade aktiven Schritts, unabhängig von der Zeitüberwachung

Bei einer Parallel-Verzweigung wird immer der Name des Schrittes des äußersten rechten Zweigs gespeichert.

SFCTip,

SFCTipMode

BOOL

Erlauben den „Tipp-Betrieb“ des AS-Bausteins

Wenn Sie den Tipp-Betrieb durch SFCTipMode=TRUE aktivieren, kann nur zum nächsten Schritt weiter geschaltet werden, indem Sie SFCTip auf TRUE setzen. Solange Sie SFCTipMode auf FALSE setzen, kann zusätzlich auch über die Transitionen weiter geschaltet werden.

SFCErrorAnalyzation,

Enthält als Zeichenkette alle Variablen, die zum Gesamtwert TRUE von SFCError beitragen (Zeitüberschreitung in einem Schritt)

SFCError muss dazu aktiviert sein.

SFCErrorAnalyzation verwendet dazu implizit die Funktion des Bausteins AnaylzeExpression der Bibliothek Analyzation.

SFCErrorAnalyzationTable,

Enthält in einer Tabelle die Variablen, die zum Gesamtwert TRUE von SFCError beitragen (Zeitüberschreitung in einem Schritt)

SFCError muss dazu aktiviert sein.

SFCErrorAnalyzationTable verwendet dazu implizit die Funktion des Bausteins AnaylzeExpressionTable Bibliothek Analyzation.

Implizite Erzeugung der AS-Flags

AS-Flags werden von CODESYS automatisch deklariert, wenn Sie die entsprechende Option aktiviert haben. Diese Option können Sie im Eigenschaften-Dialog AS-Einstellungen für eine einzelne Bausteine oder im Projekteinstellungen-Dialog AS für alle AS-Bausteine im Projekt setzen.

Tipp

Die AS-Einstellungen der AS-Flags von einzelnen Bausteinen sind nur wirksam, wenn Sie die Option Voreinstellungen verwenden nicht aktiviert haben. Wenn Sie diese Option aktiviert haben, dann gelten die Einstellungen, die in den Projekteinstellungen definiert sind.

Tipp

AS-Flags, die Sie im AS-Einstellungen-Dialog deklariert haben, sind nur in der Online-Ansicht des AS-Bausteins sichtbar.

Explizite Erzeugung der AS-Flags

Händische Deklaration, wie es in CoDeSys V2.3 nötig war, ist nur noch erforderlich um Schreibzugriff von einem anderen Baustein aus zu ermöglichen. In diesem Fall müssen Sie Folgendes beachten: Wenn Sie das Flag in einer globalen Variablenliste deklariert haben, müssen Sie dessen  Einstellung Deklarieren im AS-Einstellungen-Dialog deaktivieren. Andernfalls wird implizit eine lokales AS-Flag deklariert, das CODESYS dann anstelle der globalen Variable verwendet!

Anwendungsbeispiel für SFCError

Beispiel 2. Beispiel

Sie haben einen AS-Baustein namens sfc1 angelegt, der einen Schritt s1 enthält. In den Eigenschaften des Schritts haben Sie Zeitbegrenzungen definiert. Siehe Abbildung „Online-Ansicht von AS-Baustein sfc1„.

Wenn aus irgendwelchen Gründen Schritt s1 länger aktiv bleibt als in seinen Zeiteigenschaften erlaubt ist (Zeitüberschreitung), setzt CODESYS das AS-Flag SFCError, auf das die Applikation zugreifen kann.

Um diesen Zugriff zu erlauben, müssen Sie das AS-Flag in den AS-Einstellungen aktivieren und deklarieren. Wenn Sie es nur deklarieren, wird das AS-Flag zwar in der Online-Ansicht von sfc1 im Deklarationsteil angezeigt, ist aber ohne Funktion.

_cds_img_sfc_sfc_flags.png

Nun können Sie das AS-Flag innerhalb des Bausteins, beispielsweise in einer Aktion (2) oder von außerhalb des Bausteins (1) ansprechen.

_cds_img_sfc_sfcerror_example.png

Online Ansicht von AS-Baustein sfc1

_cds_img_sfc_sfcerror_example_online.png

SFCError wird TRUE, sobald eine Zeitüberschreitung innerhalb von sfc2 auftritt.

Beachten Sie die Möglichkeit, mit Hilfe der Flags SFCErrorAnalyzation und SFCErrorAnalyzationTable (Bibliothek Analyzation) die Komponenten des Ausdrucks zu ermitteln, der zum Wert TRUE des SFCError beiträgt.



Zugriff auf die Flags

Syntax für den Zugriff

Innerhalb des Bausteins weisen Sie das Flag direkt zu: <Variable name>:=<SFC Flag>

Beispiel 3. Beispiel

checkerror:=SFCerror;



Von einem anderen Baustein aus mit Bausteinname: <Variable name>:=<FB>.<SFB-Flag>

Beispiel 4. Beispiel:

checkerror:=SFC_prog.SFCerror;



Falls Sie einen Schreibzugriff von einem anderen Baustein aus benötigen, müssen Sie das AS-Flag zusätzlich explizit als eine VAR_INPUT-Variable im AS-Baustein oder global in einer GVL deklarieren.

Beispiel 5. Beispiel

Lokale Deklaration

PROGRAM SFC_prog
VAR_INPUT
  SFCinit:BOOL;
END_VAR

oder globale Deklaration in einer globalen Variablenliste

VAR_GLOBAL
  SFCinit:BOOL;
END_VAR
PROGRAM PLC_PRG
VAR
  setinit: BOOL;
END_VAR
SFC_prog.SFCinit:=setinit;  //Write access to SFCinit in SFC_prog