Variablen deklarieren

Variablendeklaration

Sie können Variablen an folgenden Stellen deklarieren:

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

  • VAR
  • VAR_CONFIG
  • VAR_EXTERNAL
  • VAR_GLOBAL
  • VAR_INPUT
  • VAR_INST
  • VAR_IN_OUT
  • VAR_OUTPUT
  • VAR_STAT
  • VAR_TEMP

Siehe auch

<type qualifier> (optional)

Typqualifizierer

  • CONSTANT
  • RETAIN
  • PERSISTENT

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

  • <elementary data type>
  • <user defined data type>
  • <function block >

Siehe auch

<initial value> (optional)

Initialwert

  • <literal value>
  • <identifier>
  • <expression>

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: