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 AbschnittVAR
definiert ist, werden die Variablen der Funktionsbaustein-Instanz so behandelt, als wären sie mitRETAIN
deklariert. - Falls das Schlüsselwort
NON_RETAIN
im AbschnittVAR
definiert ist, werden die Variablen der Funktionsbaustein-Instanz so behandelt, als wären sie mitNON_RETAIN
deklariert.
Ausgenommen davon sind die folgenden Fälle:
- Eine oder mehrere Variablen wurden ausdrücklich als
NON_RETAIN
oderRETAIN
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
oderNON_RETAIN
des AbschnittsVAR
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 |
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) |
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.