Implizite Variablen – AS-Flags

Überblick

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 Schritt1. 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.

Schritt- und Aktionsstatus sowie Schrittzeit

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;

HINWEIS: Impliziten Variablen für IEC-Aktionen wird ein Unterstreichungszeichen vorangestellt.

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 Symbol der Elementeigenschaftenansicht einen Eintrag für das gewünschte Zugriffsrecht.

HINWEIS: Wenn Sie das Flag <Schrittname>.x verwenden, um einen bestimmten Statuswert für einen Schritt zu erzwingen (um einen Schritt aktiv zu setzen), sollten Sie jedoch beachten, dass dadurch ein unkontrollierter Status innerhalb des AS-Diagramms herbeigeführt wird.
 WARNUNG
UNBEABSICHTIGTER GERÄTEBETRIEB
Das boolesche Flag <Schrittname> darf nicht für die Forcierung eines Statuswerts zum Setzen eines Schritts als aktiv verwendet werden.
Die Nichtbeachtung dieser Anweisungen kann Tod, schwere Verletzungen oder Sachschäden zur Folge haben.

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.

Steuerung der AS-Ausführung (Timeouts, Reset, Tippmodus)

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 AS-Einstellungen vornehmen. Es handelt sich dabei um ein Unterdialogfeld des Objektdialogfelds Eigenschaften.

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 Deklarieren im Dialogfeld AS-Einstellungen 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 Optionen > AS festgelegten Definitionen bestimmt werden.

Bedenken Sie, dass die Deklaration einer Flag-Variablen, die ausschließlich über das Dialogfeld AS-Einstellungen 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 AS-Einstellungen 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 (AS-Einstellungen), 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 POU wurde über das Flag SFCError ein Timeout erkannt..

Zugreifen auf Flags

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

Analyse von Ausdrücken

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.