Variablendeklaration wo und wie
Sie können Variablen an folgenden Stellen deklarieren:
-
Deklarationsteil eines Programmierobjekts
Der Dialog „Variable deklarieren“ unterstützt Sie dabei.
Tipp: Wenn Sie eine Variable im tabellarischen Deklarationseditor deklarieren, wird automatisch die korrekte Syntax hergestellt.
-
Deklarationsteil von GVL- oder NVL-Editor
-
E/A-Abbildkonfiguration eines E/A-Geräteobjekts
Syntax
( <pragma> )* <scope> ( <type qualifier> )? <identifier> (AT <address> )? : <data type> ( := <initial value> )? ; END_VAR
|
Deklaration |
||
|
<pragma> |
Pragma (keinmal, einmal oder mehrmals) Hinweis: Durch das Hinzufügen eines Pragmas können Sie das Verhalten und die Eigenschaften einer oder mehrerer Variablen beeinflussen. |
Siehe auch |
|
|
Gültigkeitsbereich
|
Siehe auch |
|
|
Typqualifizierer
|
|
|
|
Bezeichner, Variablenname Hinweis: Die im Kapitel "Bezeichner" aufgeführten Regeln müssen Sie bei der Vergabe eines Bezeichners zwingend beachten. Zusätzlich finden Sie dort Empfehlungen zur Vereinheitlichung bei der Namensvergabe |
Siehe auch |
|
|
Zuweisung einer Adresse im Eingangs-, Ausgangs- oder Merkerspeicherbereich (I, Q oder M)
Beispiel
|
|
|
|
Datentyp
|
|
|
|
Initialwert
|
|
|
|
Optional |
|
|
|
Optionale Wiederholung |
Beispiel
GVL
{attribute 'qualified_only'}
{attribute 'linkalways'}
VAR_GLOBAL CONSTANT
g_ciMAX_A : INT := 100;
g_ciSPECIAL : INT := g_ciMAX_A - 10;
END_VAR
GVL_CONFIG
{attribute 'qualified_only'}
VAR_CONFIG
// Generated instance path of variable at incomplete address
PLC_PRG.fbDoItNow.XLOCINPUT AT %I*: BOOL := TRUE;
END_VAR
FB_DoIt (FB)
METHOD METH_Last : INT
VAR_INPUT
iVar : INT;
END_VAR
VAR_INST
iLast : INT := 0;
END_VAR
METH_Last := iLast;
iLast := iVar;
FUNCTION_BLOCK FB_DoIt
VAR_INPUT
wInput AT %IW0 : WORD; (* Input variable *)
END_VAR
VAR_OUTPUT
wOutput AT %QW0 : WORD; (* Output variable *)
END_VAR
VAR_IN_OUT
aData_A : ARRAY[0..1] OF DATA_A; // Formal variable
END_VAR
VAR_EXTERNAL
GVL.g_ciMAX_A : INT; // Declared in object GVL
END_VAR
VAR_STAT
iNumberFBCalls : INT;
END_VAR
VAR
iCounter: INT;
xLocInput AT %I* : BOOL := TRUE; // VAR_CONFIG
END_VAR
iNumberFBCalls := iNumberFBCalls + 1;
PLC_PRG (PRG)
PROGRAM PLC_PRG VAR iLoop: INT; iTest: INT; fbDoItNow : FB_DoIt; iTest_200: INT; aData_Now : ARRAY[0..1] OF DATA_A := [(iA_1 := 1, iA_2 := 10, dwA_3 := 16#00FF),(iA_1 := 2, iA_2 := 20, dwA_3 := 16#FF00)]; END_VAR iTest := GVL.g_ciMAX_A; iTest_200 := 2 * GVL.g_ciMAX_A; fbDoItNow(aData_A := aData_Now); FOR iLoop := 0 TO GVL.g_ciSPECIAL DO ; END_FOR
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 mit Hilfe von Konstanten, anderen
Variablen oder Funktionen. Wenn Sie eine Variable verwenden, müssen Sie diese ebenfalls
initialisieren.
Beispiele
VAR
var1:INT := 12; // initialization value 12
x : INT := 13 + 8; // initalization value defined by an expression of constants
y : INT := x + fun(4); // initialization value defined by an expression,
// that contains a function call; notice the order!
z : POINTER TO INT := ADR(y); // not described in the standard IEC61131-3:
// initialization value defined by an adress function;
// Notice: In this case the pointer will not be initialized
// during an Online Change *)
END_VAR
Hinweise zur Initialisierungsreihenfolge
Ab Compiler-Version 3.5.3.40 werden Variablen in einem Funktionsbaustein in folgender Reihenfolge initialisiert: Zuerst alle Konstanten gemäß der Reihenfolge ihrer Deklarationen, danach alle anderen Variablen gemäß der Reihenfolge ihrer Deklarationen.




HINWEIS

Ab Compiler-Version 3.3.2.0 werden Variablen aus globalen Variablenlisten immer vor den lokalen Variablen einer POU initialisiert.
-
Deklarationseditor verwenden
-
Dialog 'Variable deklarieren' verwenden
-
Array deklarieren
-
Globale Variablen deklarieren
-
Tasklokale Variablen verwenden