Variablen deklarieren
Variablendeklaration
Sie können Variablen an folgenden Stellen deklarieren:
- Deklarationsteil eines Programmierobjekts
- GVL-Editor
Der Dialog Variable deklarieren unterstützt Sie bei der Variablendeklaration.
Syntax
( <pragma> )*
<scope> ( <type qualifier> )?
<identifier> (AT <address> )? : <data type> ( := <initial value> )? ;
END_VAR
<pragma> (optional) | Pragma (keinmal, einmal oder mehrmals) Durch das Hinzufügen eines Pragmas können Sie das Verhalten und die Eigenschaften einer oder mehrerer Variablen beeinflussen. | Siehe auch |
<scope> | Gültigkeitsbereich
| Siehe auch |
<type qualifier> (optional) | Typqualifizierer
| Siehe auch |
<identifier> | Bezeichner, Variablenname Die im Abschnitt „Bezeichner“ aufgeführten Regeln müssen Sie bei der Vergabe eines Bezeichners zwingend beachten. Zusätzlich finden Sie im Abschnitt „Bezeichner/Namen“ Konventionen, die der Vereinheitlichung bei der Namensvergabe dienen. | Siehe auch
|
AT <address> (optional) | Zuweisung einer Adresse im Eingangs-, Ausgangs- oder Merkerspeicherbereich (I, Q oder M) Beispiel: AT %I*, AT %Q* | Siehe auch |
<data type> | Datentyp
| Siehe auch |
<initial value> (optional) | Initialwert
| Siehe auch
|
( ... )? | Optional |
|
( … )* | Optionale Wiederholung |
|
Variableninitialisierung
Der Standard-Initialisierungswert für alle Deklarationen ist 0. Im Deklarationsteil können Sie für jede Variable und jeden Datentyp auch benutzerdefinierte Initialisierungswerte angeben.
Die benutzerdefinierte Initialisierung beginnt mit dem Zuweisungsoperator := und besteht aus einem beliebigen, gültigen Ausdruck der Programmiersprache ST (strukturierter Text). Somit definieren Sie den Initialisierungswert mithilfe von Konstanten, anderen Variablen oder Funktionen. Wenn Sie eine Variable verwenden, müssen Sie diese ebenfalls initialisieren.
Beispiel 1:
VAR
nVar1 : INT := 12; // initialization value 12
nVar2 : INT := 13 + 8; // initialization value defined by an expression of constants
nVar3 : INT := nVar2 + F_Fun(4); //initialization value defined by an expression that contains a function call; notice the order!
pSample : POINTER TO INT := ADR(nVar1); //not described in the standard IEC61131-3: initialization value defined by an adress function; Notice: the pointer will not be initialized during an Online Change
END_VAR
Beispiel 2:
Im folgenden Beispiel werden eine Eingangsvariable und eine Eigenschaft von einem Funktionsbaustein initialisiert, welcher über eine FB_init-Methode mit einem zusätzlichen Parameter verfügt.
Funktionsbaustein FB_Sample:
FUNCTION_BLOCK FB_Sample
VAR_INPUT
nInput : INT;
END_VAR
VAR
nLocalInitParam : INT;
nLocalProp : INT;
END_VAR
Methode FB_Sample.FB_init:
METHOD FB_init : BOOL
VAR_INPUT
bInitRetains : BOOL; // if TRUE, the retain variables are initialized (warm start / cold start)
bInCopyCode : BOOL; // if TRUE, the instance afterwards gets moved into the copy code (online change)
nInitParam : INT;
END_VAR
nLocalInitParam := nInitParam;
Eigenschaft FB_Sample.nMyProperty und die zugehörige Set-Funktion:
PROPERTY nMyProperty : INT
nLocalProp := nMyProperty;
Programm MAIN:
PROGRAM MAIN
VAR
fbSample : FB_Sample(nInitParam := 1) := (nInput := 2, nMyProperty := 3);
aSample : ARRAY[1..2] OF FB_Sample[(nInitParam := 4), (nInitParam := 7)]
:= [(nInput := 5, nMyProperty := 6), (nInput := 8, nMyProperty := 9)];
END_VAR
Initialisierungsergebnis:
- fbSample
- nInput = 2
- nLocalInitParam = 1
- nLocalProp = 3
- aSample[1]
- nInput = 5
- nLocalInitParam = 4
- nLocalProp = 6
- aSample[2]
- nInput = 8
- nLocalInitParam = 7
- nLocalProp = 9
Siehe auch:
- Referenz Programmierung > Datentypen
- Referenz Programmierung > Variablentypen und spezielle Variablen
- Referenz Programmierung > Operanden > Adressen
- Referenz Programmierung > Bezeichner
- TwinCAT-3-Programmierkonventionen > Bezeichner/Namen