Jeder AS-Schritt (AS: Ablaufsprache = SFC: Sequential Function Chart) und jede IEC-Aktion bietet implizit generierte Variablen für die Überwachung des Status von Schritten und IEC-Aktionen während der Laufzeit. 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 erstellt. Eine Strukturinstanz wird für das Element benannt, beispielsweise Schritt1 für einen Schritt mit Schrittnamen . Sie können in den Elementeigenschaften definieren, ob für diesen 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 aktuelle 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 Zeit an, die seit der Aktivierung des Schritts verstrichen ist. Dies gilt nur für Schritte, ungeachtet dessen, ob eine Mindestdauer in den Schrittattributen definiert 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 benannte AS-Flags (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
(AS: Ablaufsprache = SFC: Sequential Function Chart) tun. Es handelt sich dabei um ein Unterdialogfeld des Objektdialogfelds .Eine manuelle Deklaration, wie in SoMachine / SoMachine Motion V3.1 erforderlich, 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, die dann anstelle der globalen verwendet werden würde. Beachten Sie, dass die AS-Einstellungen für eine AS-POU anfangs durch die im Dialogfeld (AS: Ablaufsprache = SFC: Sequential Function Chart) 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 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 zurück auf FALSE, um mit der normalen Verarbeitung fortzufahren. |
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. Deshalb könnte in diesem Fall ein Reset des Flags SFCReset auf FALSE im Initialschritt durchgefü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 ein weiteres Timeout erst dann registriert werden kann, sobald ein Reset von SFCError durchgeführt wurde. SFCError muss definiert werden, wenn Sie die anderen Flags zur Steuerung der Zeit (SFCErrorStep, SFCErrorPOU, SFCQuitError) verwenden möchten.
HINWEIS: Sie können die Flags SFCErrorAnalyzation und SFCErrorAnalyzationTable verwenden, um die Komponenten des Ausdrucks zu bestimmen, 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. Das heißt, wenn diese Variable deklariert und aktiviert ist ( ), muss TRUE für sie festgelegt sein, 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 werden. |
SFCErrorStep |
STRING |
Diese Variable speichert den Namen eines Schritts, bei dem ein Timeout durch SFCError.timeout registriert wurde. Voraussetzung: SFCError muss definiert werden. |
SFCErrorPOU |
STRING |
Diese Variable speichert den Namen der AS-POU, in der das Timeout aufgetreten ist. Voraussetzung: SFCError muss definiert werden. |
SFCQuitError |
BOOL |
Solange diese Variable TRUE ist, wird die Ausführung des AS-Diagramms angehalten und die Variable SFCError zurückgesetzt. Sobald die Variable auf FALSE zurückgesetzt wurde, werden alle aktuellen Zeitstatus im aktiven Schritt zurückgesetzt. Voraussetzung: SFCError muss definiert werden. |
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 gelangen, indem Sie SFCTip=TRUE setzen (steigende Flanke). Solange SFCTipMode auf FALSE gesetzt ist, können die Transitionen übersprungen werden. |
SFCErrorAnalyzation |
– |
Zeichenfolgenvariable mit den Variablen, 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 mit den Variablen, 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 einiger durch AS erkannter Fehler-Flags im Online-Modus des Editors.
Ein Timeout wurde in Schritt s1 im AS-Objekt durch das Flag SFCError 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 eine Variable vom Typ VAR_INPUT 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
Zugreifen 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 eingesetzt 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 verwenden, um die Komponenten des Ausdrucks zu bestimmen, der zum Wert TRUE von SFCError beiträgt.