Implizite Variablen – AS-Flags

Übersicht

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

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

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

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-Einstellungen (AS: Ablaufsprache = SFC: Sequential Function Chart) tun. Es handelt sich dabei um ein Unterdialogfeld des Objektdialogfelds Eigenschaften.

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 Deklarieren im Dialogfeld AS-Einstellungen 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 Optionen > AS (AS: Ablaufsprache = SFC: Sequential Function Chart) 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 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 (AS-Einstellungen), 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 POU durch das Flag SFCError 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 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

Analyse von Ausdrücken

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.