Deklaration von internen Variablen
VAR (* optional_begin *) CONSTANT RETAIN NON_RETAIN PUBLIC|PROTECTED|PRIVATE|INTERNAL { instanceParam } { noCodeGeneration } (* optional_end *)
name_1, name_2, ..., name_n : data-type (* optional_begin *) := initial-value {
@RELATES_TO
:= name_A;} (* optional_end *);
name_3, name_4, ..., name_n : STRING[length] (* optional_begin *) :=
'initial-value'
{
@RELATES_TO
:= name_B;} (* optional_end *);
name_5, name_6, ..., name_n : ARRAY [x..y] OF data-type (* optional_begin *) := [initial-value_1, initial-value_2, .., initial-value_n] {
@RELATES_TO
:= name_C;} (* optional_end *);
name_7, name_8, ..., name_n : ARRAY [x1..y1, x2..y2, x3..y3] OF data-type; (* Initialisierungswerte und
'@RELATES_TO'
sind hier ebenfalls möglich. *)
name_9, name_10, ..., name_n : REF_TO type := REF(name_A);
(* Zusätzliche Daten, wie partielle Adressen, sind ebenfalls für die Variablen möglich. *)
(* Hinweis: Wenn ein Funktionsbaustein-Typ als Typ für die Variable verwendet wird, handelt es sich eigentlich um eine Funktionsbaustein-Instanz. *)
END_VAR
Bedeutung |
||||||||||
Deklaration einer bzw. mehrerer interner →Variablen (auch "lokale Variablen" genannt), wobei name_1 usw. →IEC-Bezeichner sein müssen Das optionale Schlüsselwort CONSTANT markiert alle Variablen dieses Abschnitts als →konstant (das Überschreiben solcher Werte ist dann während der Ausführung des Programms nicht mehr möglich). Mit dem optionalen Schlüsselwörter für die Sichtbarkeit definieren Sie die Sichtbarkeit aller Elemente dieses Abschnitts. Diese Schlüsselwörter sind nur innerhalb der Deklaration eines Funktionsbausteins zulässig.
Abweichungen von IEC-Norm
Falls Sie es bevorzugen, dass eine andere Sichbarkeit für Elemente ohne Schlüsselwort gilt, definieren Sie die logi.CAD 3-Konfigurationsvariable lc3.var.access.default und Wert
PUBLIC, PRIVATE oder INTERNAL. Dieser Wert gilt dann als neuer Standard. Beim Wert PROTECTED für die
Konfigurationsvariable ist weiterhin der Standard PROTECTED gültig, wie dies laut der →IEC-Norm vorgegeben ist.
Die optionalen →Pragmas { instanceParam }, { noCodeGeneration } und { @RELATES_TO := name_A;} sind für Systemintegratoren vorgesehen, die Daten in der Instanzstruktur hinterlegen wollen. Durch diese Pragmas werden die Variablen im Abschnitt zu sogenannten Instanzparametern. Ein →Datentyp ist als Typ für eine Variable möglich. Informieren Sie sich unter "Unterstützte Datentypen (in ST)", welche Datentypen Sie für die Deklaration von Variablen angeben können. Mit dem optionalen →Initialisierungswert [:= initial-value] weisen Sie der Variable einen Wert zu (Details: siehe "Initialisierung von Variablen in ST").
Lokale Variablen, die innerhalb eines Funktionsbausteins deklariert werden, sind →statische Variablen . Lokale Variablen, die innerhalb einer Funktion oder einer Methode deklariert werden, sind →temporäre Variablen. |
logi.CAD 3 bietet außerdem die Möglichkeit, noch nicht festgelegte Speicherorte bei der Deklaration anzugeben. Siehe "Deklaration eines Sprachelements mit partieller Adresse in ST" für Details.
logi.CAD 3 bietet außerdem die Möglichkeit, zusätzliche Daten bei der Deklaration anzugeben. Siehe "Beschreibung, Kommentar, JSON-String oder Typ für Variablen oder Datentypen angeben" für Details.
In einem Abschnitt VAR...END_VAR ist auch die Deklaration von Funktionsbaustein-Instanzen und die Deklaration von Variablen basierend auf einem Interface zulässig.
VAR RETAIN
var1: BOOL;
var2, var3 : INT;
END_VAR
VAR
var4 : STRING[10];
var5: ARRAY [1..2] of BOOL;
var6 : INT;
myRef1: REF_TO INT;
END_VAR
FUNCTION_BLOCK ExampleVisibleVars
VAR PRIVATE // Die Variablen "Var1" und "Var2" können nur innerhalb dieses Funktionsbaustein "ExampleVisibleVars" verwendet werden.
Var1, Var2 : INT;
END_VAR
VAR // Bei Standardkonfiguration: Die Variablen "Var3" und "Var4" können ebenfalls nur innerhalb von "ExampleVisibleVars" verwendet werden.
Var3, Var4 : BOOL;
END_VAR
VAR PUBLIC // Die Variable "Var5" kann überall dort verwendet werden, wo auch der Funktionsbaustein verwendet werden kann.
Var5 : TIME;
END_VAR
END_FUNCTION_BLOCK