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