Objekt Transition

Symbol: Objekt Transition 1:

In einer Transition legen Sie eine Bedingung fest, unter der ein nachfolgender Schritt aktiv werden soll. Eine Transitionsbedingung kann den Wert TRUE oder FALSE haben. Wenn sie TRUE ist, wird der nachfolgende Schritt ausgeführt. Eine Transitionsbedingung kann auf folgende zwei Arten definiert werden:

Beachten Sie die Hinweise im Abschnitt „Zugriff auf VAR_IN_OUT_Variablen des Funktionsbausteins“.

Objekt Transition anlegen

1. Selektieren Sie im Projektmappen-Explorer im SPS-Projektbaum einen Funktionsbaustein oder ein Programm.
2. Wählen Sie im Kontextmenü den Befehl Hinzufügen > Transition
Der Dialog Transition hinzufügen öffnet sich.
3. Geben Sie einen Namen ein und wählen Sie eine Implementierungssprache aus.
4. Klicken Sie auf Öffnen.
Das Objekt wird zum SPS-Projektbaum hinzugefügt und im Editor geöffnet.

Dialog Transition hinzufügen

Name

Name der Transition

Implementierungssprache

Auswahlkästchen für die Implementierungssprache

Transition aufrufen

Syntax:

Im Gegensatz zu TwinCAT 2 PLC Control wird eine Transitionsbedingung wie ein Methodenaufruf behandelt. Die Eingabe erfolgt nach folgender Syntax:

<Transitionsname> := <Transitionsbedingung>

oder

<Transitionsbedingung>

Enthält eine Transition mehrfache Anweisungen, müssen Sie den gewünschten Ausdruck der Transitionsvariable zuweisen (erste Variante der Syntax).

Beispiele:

Aufruf der Transition Trans1 in einer ST-POU:

PRG_SFC.Trans1:

Trans1 := (nCount<=100);

PRG_SFC:

nCount := nCount+1;
IF Trans1 = TRUE THEN // IF nCount<=100 THEN …
    nVar:=1;
    ELSE
        nVar:=2;
END_IF

Aufruf der Transition Trans1 in einer SFC-POU:

Objekt Transition 2:

Zugriff auf VAR_IN_OUT-Variablen des Funktionsbausteins in einer Methode/Transition/Eigenschaft

Auf die VAR_IN_OUT-Variablen eines Funktionsbausteins kann in einer Methode, einer Transition oder einer Eigenschaft des Funktionsbausteins prinzipiell zugegriffen werden. Bei einem solchen Zugriff ist folgendes zu beachten:

Aus diesem Grund wird bei einem Zugriff auf die VAR_IN_OUT-Variablen des FBs in einer Methode, einer Transition oder einer Eigenschaft folgende Warnung mit der ID C0371 ausgegeben:

„Warning: Access to VAR_IN_OUT <Var> declared in <POU> from external context <Method/Transition/Property>”

Eine adäquate Reaktion auf diese Warnung ist beispielsweise die Überprüfung der VAR_IN_OUT-Variablen innerhalb der Methode/Transition/Eigenschaft, bevor auf sie zugegriffen wird. Diese Überprüfung ist mithilfe des Operators __ISVALIDREF möglich, mit dem geprüft werden kann, ob eine Referenz auf einen gültigen Wert verweist. Ist diese Prüfung vorhanden, kann zum einen davon ausgegangen werden, dass sich der Anwender des Risikos bewusst ist, das potentiell vorhanden ist, wenn auf die VAR_IN_OUT-Variablen des FBs in einer Methode/Transition/Eigenschaft zugegriffen wird. Zum anderen liegt durch die Überprüfung der Referenz ein angemessener Umgang mit diesem Risiko vor. Somit kann die Warnung für diesen überprüften Bereich mittels Attribut 'warning disable' unterdrückt werden.

Die dazugehörige Beispielimplementierung einer Methode ist im Folgenden dargestellt.

Funktionsbaustein FB_Sample:

FUNCTION_BLOCK FB_Sample
VAR_IN_OUT
    bInOut : BOOL;
END_Var

Methode FB_Sample.MyMethod:

METHOD MyMethod
VAR_INPUT
END_VAR
// The warning can be disabled here as the user is aware of the risk that the reference may not be valid by checking its validity
{warning disable C0371}

// Checking the VAR_IN_OUT reference, leave the current method in case of invalid reference
IF NOT __ISVALIDREF(bInOut) THEN
     RETURN;
END_IF

// Access to VAR_IN_OUT reference (only if the reference was confirmed as valid before)
bInOut := NOT bInOut;

// The warning may be restored at the end of the access area
{warning restore C0371}

Siehe auch: