Jeder AS-Schritt (AS: Ablaufsprache = SFC: Sequential Function Chart) und jede IEC-Aktion stellen implizit generierte Variablen zur Überwachung des Status der Schritte und IEC-Aktionen während der Laufzeit bereit. Sie können auch Variablen für die Überwachung und Steuerung der Ausführung eines AS-Diagramms (Timeouts, Reset, Tippmodus) definieren. Diese Variablen können auch implizit durch das AS-Objekt erstellt werden.
Grundsätzlich wird für jeden Schritt und jede IEC-Aktion eine implizite Variable generiert. Eine Strukturinstanz wird für das Element benannt, beispielsweise Schritt1 für einen Schritt mit Schrittnamen . Sie können in den Elementeigenschaften festlegen, ob für dieses Flag eine Symboldefinition in die Symbolkonfiguration exportiert werden sollen und wie dieses Symbol in der Steuerung zugänglich sein soll.
Die Datentypen für diese impliziten Variablen werden in der Bibliothek IecSFC.library definiert. Diese Bibliothek wird automatisch in das Projekt aufgenommen, sobald ein AS-Objekt hinzugefügt wird.
Grundsätzlich wird für jeden Schritt und jede IEC-Aktion eine implizite Strukturvariable des Typs SFCStepType oder SFCActionType erstellt. Die Strukturkomponenten (Flags) beschreiben den Status eines Schritts oder einer Aktion oder die aktuell verarbeitete Zeit eines aktiven Schritts.
Die Syntax für die implizite Variablendeklaration lautet:
<Schrittname>: SFCStepType;
oder
_<Aktionsname>:SFCActionType;
Die folgenden booleschen Flags für Schritte oder Aktionen stehen zur Verfügung:
Boolesche Flags für Schritte:
Boolesches Flag |
Beschreibung |
---|---|
<Schrittname>.x |
zeigt den aktuellen Aktivierungsstatus an. |
<Schrittname>._x |
zeigt den Aktivierungsstatus für den nächsten Zyklus an. |
Wenn <Schrittname>.x = TRUE, wird der Schritt im aktuellen Zyklus ausgeführt.
Wenn <Schrittname>._x = TRUE und <Schrittname>.x = FALSE, wird der Schritt im folgenden Zyklus ausgeführt. Deshalb wird <Schrittname>._x zu Zyklusbeginn in <Schrittname>.x kopiert.
Boolesche Flags für Aktionen:
Boolesches Flag |
Beschreibung |
---|---|
_<Aktionsname>.x |
ist TRUE, wenn die Aktion ausgeführt wird. |
_<actionname>._x |
ist TRUE, wenn die Aktion aktiv ist. |
Symbolgenerierung
In den Elementeigenschaften eines Schritts oder einer Aktion können Sie definieren, ob eine Symboldefinition zu einer eventuell erstellten und heruntergeladenen Symbolkonfiguration für das Namens-Flag des Schritts oder der Aktion hinzugefügt werden soll. Erstellen Sie hierzu in der Spalte der Elementeigenschaftenansicht einen Eintrag für das gewünschte Zugriffsrecht.
WARNUNG | |
---|---|
Zeit über TIME Variablen:
Das Flag t
gibt die aktuelle Zeitspanne an, die seit dem Aktivieren des Schritts verstrichen ist. Dies gilt nur für Schritte, unabhängig davon, ob in den Schrittattributen eine Mindestzeit konfiguriert wurde oder nicht (siehe unten: SFCError).
Für Schritte:
<Schrittname>.t (<Schrittname>._t für externe Zwecke nicht verwendbar)
Für Aktionen:
Die impliziten Zeitvariablen werden nicht verwendet.
Sie können einige implizit verfügbare Variablen, auch AS-Flags genannt (siehe Tabelle unten), verwenden, um den Betrieb eines AS-Diagramms zu steuern. Beispielsweise zur Anzeige von Zeitüberläufen oder zur Aktivierung des Tippmodus für Schalttransitionen.
Um auf diese Flags zuzugreifen, müssen Sie sie deklarieren und aktivieren. Dies können Sie im Dialogfeld
vornehmen. Es handelt sich dabei um ein Unterdialogfeld des Objektdialogfelds .Eine manuelle Deklaration, wie in SoMachine / SoMachine Motion V3.1 erforderlich war, ist nur nötig, um den Schreibzugriff von einer anderen POU zu aktivieren (siehe den Abschnitt Zugreifen auf Flags).
Berücksichtigen Sie in diesem Fall Folgendes:
Wenn Sie das Flag global deklarieren, müssen Sie die Option
im Dialogfeld deaktivieren. Ansonsten führt dies zu einem implizit deklarierten lokalen Flag, das dann anstelle des globalen verwendet werden würde. Beachten Sie, dass die AS-Einstellungen für eine AS-POU anfangs durch die im Dialogfeld festgelegten Definitionen bestimmt werden.Bedenken Sie, dass die Deklaration einer Flag-Variablen, die ausschließlich über das Dialogfeld
durchgeführt wurde, nur in der Online-Ansicht der AS-POU sichtbar ist.Die folgenden impliziten Variablen (Flags) können verwendet werden. Zu diesem Zweck müssen Sie sie im Dialogfeld
deklarieren und aktivieren.
Variable |
Typ |
Beschreibung |
---|---|---|
SFCInit |
BOOL |
Wenn diese Variable TRUE wird, wird die Ablaufsprache (AS = SFC: Sequential Function Chart) auf den Initialschritt zurückgesetzt. Alle Schritte und Aktionen sowie andere AS-Flags werden zurückgesetzt (Initialisierung). Dieser Initialschritt bleibt aktiv, wird aber nicht ausgeführt, solange die Variable TRUE ist. Setzen Sie SFCInit auf FALSE zurück, um zur normalen Verarbeitung zurückzukehren. |
SFCReset |
BOOL |
Diese Variable verhält sich ähnlich wie SFCInit. Im Gegensatz zu letzterer findet die weitere Verarbeitung jedoch nach der Initialisierung des Initialschritts statt. In diesem Fall könnte somit ein Reset des Flags SFCReset auf FALSE im Initialschritt ausgeführt werden. |
SFCError |
BOOL |
Sobald ein Timeout in 1 der Schritte des AS-Diagramms auftritt, wird diese Variable TRUE. Voraussetzung: SFCEnableLimit muss TRUE sein. Beachten Sie, dass kein weiteres Timeout vor einem Reset von SFCError registriert werden kann. SFCError muss definiert sein, wenn Sie die anderen Flags zur Zeitsteuerung (SFCErrorStep, SFCErrorPOU, SFCQuitError) verwenden möchten.
HINWEIS: Sie können die Flags SFCErrorAnalyzation und SFCErrorAnalyzationTable zum Ermitteln der Komponenten des Ausdrucks verwenden, der zum Wert TRUE von SFCError beiträgt. Im AS-Editor verwendet das Flag SFCErrorAnalyzationTable diese Funktion implizit für die Analyse von Ausdrücken in Transitionen.
|
SFCEnableLimit |
BOOL |
Sie können diese Variable für die explizite Aktivierung (TRUE) und Deaktivierung (FALSE) der Zeitsteuerung in Schritten über SFCError verwenden. Wenn diese Variable deklariert und aktiviert ist ( ), muss sie folglich auf TRUE gesetzt werden, damit SFCError funktioniert. Andernfalls werden Timeouts des Schritts nicht registriert. Die Verwendung kann bei Starts oder bei manuellem Betrieb sinnvoll sein. Wenn die Variable nicht definiert ist, funktioniert SFCError automatisch. Voraussetzung: SFCError muss definiert sein. |
SFCErrorStep |
STRING |
Diese Variable speichert den Namen eines Schritts, bei dem ein Timeout durch SFCError.timeout registriert wurde. Der Name wird gespeichert, bis der registrierte Schrittfehler mittels SFCQuitError zurückgesetzt wird. Voraussetzung: SFCError muss definiert sein. |
SFCErrorPOU |
STRING |
Diese Variable speichert den Namen der AS-POU, in der das Timeout aufgetreten ist. Der Name wird gespeichert, bis das Timeout über SFCQuitError zurückgesetzt wird. Voraussetzung: SFCError muss definiert sein. |
SFCQuitError |
BOOL |
Solange diese Variable TRUE ist, wird die Ausführung des AS-Diagramms angehalten, und die Variable SFCError wird zurückgesetzt. Sobald die Variable auf FALSE zurückgesetzt wurde, werden alle aktuellen Zeitstatus im aktiven Schritt zurückgesetzt. Voraussetzung: SFCError muss definiert sein. |
SFCPause |
BOOL |
Solange die Variable TRUE ist, wird die Ausführung des AS-Diagramms angehalten. |
SFCTrans |
BOOL |
Diese Variable wird TRUE, sobald eine Transition ausgelöst wird. |
SFCCurrentStep |
STRING |
Diese Variable speichert den Namen des aktuell aktiven Schritts, unabhängig von der Zeitüberwachung. Bei mehreren gleichzeitigen Abläufen wird der Name des äußeren rechten Schritts registriert. |
SFCTipSFCTipMode |
BOOL |
Diese Variablen ermöglichen die Verwendung des Tippmodus innerhalb des aktuellen Diagramms. Wenn dieser Modus über SFCTipMode=TRUE eingeschaltet wurde, können Sie nur zum nächsten Schritt springen, indem Sie SFCTip= TRUE setzen (steigende Flanke). Solange SFCTipMode auf FALSE gesetzt ist, ist es möglich, die Transitionen zu überspringen. |
SFCErrorAnalyzation |
– |
Zeichenfolgenvariable, die die Variablen enthält, die zum Gesamtwert TRUE von SFCError beitragen (Timeout in einem Schritt). Als Voraussetzung muss SFCError aktiviert sein. SFCErrorAnalyzation verwendet implizit die Funktion der POU AnalyzeExpression der Analyzation-Bibliothek. |
SFCErrorAnalyzationTable |
– |
Tabelle, die die Variablen enthält, die zum Gesamtwert TRUE von SFCError beitragen (Timeout in einem Schritt). Als Voraussetzung muss SFCError aktiviert sein. SFCErrorAnalyzationTable verwendet implizit die Funktion der POU AnalyzeExpressionTable der Analyzation-Bibliothek. |
Die folgende Abbildung zeigt ein Beispiel für einige erkannte AS-Fehler-Flags im Online-Modus des Editors.
In Schritt s1 im AS-Objekt wurde über das Flag SFCError ein Timeout erkannt..
Um den Zugriff auf die Flags für die Steuerung der AS-Ausführung (Timeouts, Reset, Tippmodus) zu ermöglichen, deklarieren und aktivieren Sie die Flag-Variablen wie oben beschrieben (Steuerung der AS-Ausführung).
Syntax für den Zugriff von einer Aktion oder Transition innerhalb der AS-POU:
<Schrittname>.<Flag>
oder
_<Aktionsname>.<Flag>
Beispiele:
status:=step1._x;
checkerror:=SFCerror;
Syntax für den Zugriff von einer anderen POU:
<AS-POU>.<Schrittname>.<Flag>
oder
<AS-POU>._<Aktionsname>.<flag>
Beispiele:
status:=SFC_prog.step1._x;
checkerror:=SFC_prog.SFCerror;
Beachten Sie Folgendes bei einem Schreibzugriff von einer anderen POU:
Die implizite Variable muss zusätzlich explizit als VAR_INPUT-Variable der AS-POU deklariert werden.
Oder sie muss global in einer GVL (Globale Variablenliste) deklariert werden.
Beispiel: Lokale Deklaration
PROGRAM SFC_prog
VAR_INPUT
SFCinit:BOOL;
END_VAR
Beispiel: Globale Deklaration in einer GVL
VAR_GLOBAL
SFCinit:BOOL;
END_VAR
Zugriff auf das Flag in PLC_PRG
:
PROGRAM PLC_PRG
VAR
setinit: BOOL;
END_VAR
SFC_prog.SFCinit:=setinit; //Write access to SFCinit in SFC_prog
Die Analyzation-Bibliothek ermöglicht die Analyse von Ausdrücken. Sie kann beispielsweise im AS-Diagramm verwendet werden, um das Ergebnis des Flags SFCError zu untersuchen. Dieses Flag dient der Überwachung von Timeouts im AS-Diagramm.
Sie können die Flags SFCErrorAnalyzation und SFCErrorAnalyzationTable zum Ermitteln der Komponenten des Ausdrucks verwenden, der zum Wert TRUE von SFCError beiträgt.