Wie wird das Schlüsselwort "RETAIN" für Funktionsbaustein-Instanzen berücksichtigt?

Die →Variablen von →Funktionsbaustein-Instanz werden bzgl. RETAIN und NON_RETAIN so wie jener Abschnitt VAR behandelt, in dem die Funktionsbaustein-Instanz deklariert ist. Das bedeutet:

  • Falls das Schlüsselwort RETAIN im Abschnitt VAR definiert ist, werden die Variablen der Funktionsbaustein-Instanz so behandelt, als wären sie mit RETAIN deklariert.

  • Falls das Schlüsselwort NON_RETAIN im Abschnitt VAR definiert ist, werden die Variablen der Funktionsbaustein-Instanz so behandelt, als wären sie mit NON_RETAIN deklariert.

Ausgenommen davon sind die folgenden Fälle:

  • Eine oder mehrere Variablen wurden ausdrücklich als NON_RETAIN oder RETAIN in der Deklaration des zugehörigen Funktionsbausteins deklariert.

  • Sind in der Deklaration des zugehörigen Funktionsbausteins erneut Funktionsbaustein-Instanzen deklariert, gilt für deren Variablen nicht die Deklaration von RETAIN oder NON_RETAIN des Abschnitts VAR der ersten Funktionsbaustein-Instanz (sondern jene im zugehörigen Funktionsbaustein).

Hier ein Beispiel zu den oben genannten Regeln:

Basierender ST-Code für die folgende Tabelle
PROGRAM Test
VAR RETAIN
myFB1 : FB1;
var1 : INT;
END_VAR
END_PROGRAM
FUNCTION_BLOCK FB1
VAR
var2 : INT;
myFB2 : FB2;
myFB3 : FB3;
END_VAR
VAR NON_RETAIN
var3 : INT;
myFB3_2 : FB3;
END_VAR
VAR RETAIN
var7 : INT;
myFB3_3 : FB3;
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK FB2
VAR
var4 : INT;
END_VAR
VAR NON_RETAIN
var5 : INT;
myFB3 : FB3;
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK FB3
VAR
var6 : INT;
END_VAR
END_FUNCTION_BLOCK


Die Variable...

wird als ... behandelt.

Grund

Test.var1

RETAIN

Schlüsselwort RETAIN in Zeile 2

Test.myFB1.var2

RETAIN

Schlüsselwort RETAIN in Zeile 2 (da kein Schlüsselwort in Zeile 9)

Test.myFB1.var3

NON_RETAIN

Schlüsselwort NON_RETAIN in Zeile 14

Test.myFB1.var7

RETAIN

Schlüsselwort RETAIN in Zeile 18

Test.myFB1.myFB2.var4

NON_RETAIN

keine Schlüsselwörter in Zeilen 9 und 25
(Das Schlüsselwort RETAIN in Zeile 2 wird für diese Variable nicht angewendet, da FB2 in FB1 deklariert ist.)

Test.myFB1.myFB2.var5

NON_RETAIN

Schlüsselwort NON_RETAIN in Zeile 28

Test.myFB1.myFB3.var6

NON_RETAIN

keine Schlüsselwörter in Zeilen 9 und 35
(Das Schlüsselwort RETAIN in Zeile 2 wird für diese Variable nicht angewendet, da FB3 in FB1 deklariert ist.)

Test.myFB1.myFB3_2.var6

NON_RETAIN

Schlüsselwort NON_RETAIN in Zeile 14 (da kein Schlüsselwort in Zeile 35)

Test.myFB1.myFB3_3.var6

RETAIN

Schlüsselwort RETAIN in Zeile 18 (da kein Schlüsselwort in Zeile 35)

Test.myFB1.myFB2.myFB3.var6

NON_RETAIN

Schlüsselwort NON_RETAIN in Zeile 28 (da kein Schlüsselwort in Zeile 35)

images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/information.svg logi.cals empfiehlt Ihnen, die aktuellesten Versionen von logi.CAD 3 und des Laufzeitsystems zu installieren und zu verwenden, damit Sie stets über die neuesten Features und Problembehebungen laut den Release-Notes verfügen.


Hat Ihnen dieser Artikel weitergeholfen? Fanden Sie die benötigte Information in der Benutzerdokumentation?
Falls nicht, kontaktieren Sie das Support-Team von logi.cals. Geben Sie Ihre Fragen oder Ihre Vorschläge zur Verbesserung/Erweiterung der Benutzerdokumentation so detailliert wie möglich an.