EcoStruxure Machine Expert Version 1.1 unterstützt nicht die Controller M258, LMC058 und LMC078.

Variablentypen

Überblick

Dieses Kapitel enthält weitere Informationen über folgende Variablentypen:

oVAR Lokale Variablen

oVAR_INPUT Eingangsvariablen

oVAR_OUTPUT Ausgangsvariablen

oVAR_IN_OUT Eingangs- und Ausgangsvariablen

oVAR_GLOBAL Globale Variablen

oVAR_TEMP Temporäre Variablen

oVAR_STAT Statische Variablen

oVAR_EXTERNAL Externe Variablen

oVAR_INST Instanzvariablen

Lokale Variables – VAR

Zwischen den Schlüsselwörtern VAR und END_VAR sind alle lokalen Variablen einer POU deklariert. Diese lokalen Variablen haben keine externe Verbindung; mit anderen Worten: ein schreibender Zugriff von außen ist nicht möglich.

Sie haben die Möglichkeit, ein Attribut zum Schlüsselwort VAR hinzuzufügen.

Beispiel

VAR
 iLoc1:INT; (* 1. Local Variable*)
END_VAR

Eingangsvariablen – VAR_INPUT

Zwischen den Schlüsselwörtern VAR_INPUT und END_VAR sind alle Variablen deklariert, die einer POU als Eingangsvariablen dienen. Das bedeutet, dass der Wert einer Variablen an einer Aufrufstelle zusammen mit einem Aufruf bereitgestellt werden kann.

Sie haben die Möglichkeit, ein Attribut hinzuzufügen.

Beispiel

VAR_INPUT
 iIn1:INT (* 1. Inputvariable*)
END_VAR

Ausgangsvariablen – VAR_OUTPUT

Zwischen den Schlüsselwörtern VAR_OUTPUT und END_VAR sind alle Variablen deklariert, die einer POU als Ausgangsvariablen dienen. Das bedeutet, dass diese Werte an den POU zurückgegeben werden, der den Aufruf macht.

Sie haben die Möglichkeit, ein Attribut zum Schlüsselwort VAR_OUTPUT hinzuzufügen.

Beispiel

VAR_OUTPUT
 iOut1:INT; (* 1. Outputvariable*)
END_VAR

Ausgangsvariablen in Funktionen und Methoden:

Gemäß der Norm IEC 61131-3 Ausgabe 2, können Funktionen (und Methoden) zusätzliche Ausgänge haben. Die Zuweisung erfolgt über den Aufruf einer Funktion, wie im nachstehenden Beispiel gezeigt.

Beispiel

fun(iIn1 := 1, iIn2 := 2, iOut1 => iLoc1, iOut2 => iLoc2);

Eingangs- und Ausgangsvariablen – VAR_IN_OUT

Zwischen den Schlüsselwörtern VAR_IN_OUT und END_VAR sind alle Variablen deklariert, die einer POU als Eingangs- und Ausgangsvariablen dienen.

HINWEIS: Mit Variablen des Typs IN_OUT, wird der Wert der übertragenen Variablen geändert (Übertragung als Zeiger, Übergabe von Referenzen). Das bedeutet, dass der Eingangswert für diese Variablen nicht konstant sein kann. Aus diesem Grund können selbst die VAR_IN_OUT-Variablen eines Funktionsbausteins nicht von außerhalb via <FBinstance>.<InOutVariable> direkt gelesen oder geschrieben werden.

HINWEIS: Weisen Sie keine Symbole des Typs Bit (wie %MXaa.b- oder BOOL-Variablen, die sich an einer Adresse eines Typs Bit befinden) zu BOOL-Parametern eines Funktionsbausteins mit dem VAR_IN_OUT-Typ zu. Wenn eine solche Zuweisung erkannt wird, wird sie in der Ansicht Meldungen als Fehler beim Übersetzen angezeigt

Beispiel

VAR_IN_OUT
 iInOut1:INT; (* 1. Inputoutputvariable *)
END_VAR

Globale Variablen – VAR_GLOBAL

Sie können normale, konstante, externe oder remanente Variablen deklarieren, die im gesamten Projekt als globale Variablen bekannt sind. Zum Deklarieren globaler Variablen verwenden Sie die Liste mit den globalen Variablen (GVL). Sie können eine GVL hinzufügen, indem Sie den Befehl Objekt hinzufügen ausführen, der sich standardmäßig im Menü Projekt befindet.

Deklarieren Sie die Variablen lokal zwischen den Schlüsselwörtern VAR_GLOBAL und END_VAR.

Sie haben die Möglichkeit, ein Attribut zum Schlüsselwort VAR_GLOBAL hinzuzufügen.

Eine Variable wird durch einen vorausgehenden Punkt als globale Variable erkannt, zum Beispiel .iGlobVar1.

Für detaillierte Informationen zur mehrfachen Verwendung von Variablennamen, dem globalen Umfangsoperator dot (.) und Bereichsnamen siehe das Kapitel Globaler Umfangsoperator.

Globale Variablen können nur in Listen mit globalen Variablen (GVLs) deklariert werden. Diese Listen dienen zur Verwaltung globaler Variablen in einem Projekt. Sie können eine GVL hinzufügen, indem Sie den Befehl Objekt hinzufügen ausführen, der sich standardmäßig im Menü Projekt befindet.

HINWEIS: Eine Variable, die in einem POU lokal mit demselben Namen wie eine globale Variable definiert ist, hat im POU Vorrang.

HINWEIS: Globale Variablen werden vor den lokalen Variablen von POUs initialisiert.

Temporäre Variablen – VAR_TEMP

Diese Funktion ist eine Erweiterung der Norm IEC 61131-3.

Temporäre Variablen werden bei jedem Aufruf der POU neu initialisiert. VAR_TEMP-Deklarationen sind nur innerhalb von Programmen und Funktionsbausteinen möglich. Der Zugriff auf diese Variablen ist also im Hauptteil des Programm-POUs oder Funktionsbausteins möglich.

Deklarieren Sie die Variablen lokal zwischen den Schlüsselwörtern VAR_TEMP und END_VAR.

HINWEIS: Sie können VAR_TEMP anstelle von VAR verwenden, um den für eine POU erforder­lichen Speicherplatz zu verringern (z. B. in einem Funktionsbaustein, wenn die Variable nur temporär verwendet wird).

Statische Variablen – VAR_STAT

Diese Funktion ist eine Erweiterung der Norm IEC 61131-3.

Statische Variablen können in Funktionsbausteinen, Methoden und Funktionen verwendet werden. Deklarieren Sie diese lokal zwischen den Schlüsselwörtern VAR_STAT und END_VAR. Die Initialisierung dieser Variablen erfolgt beim ersten Aufruf der entsprechenden POU.

Wie globale Variablen behalten auch statische Variablen ihren Wert, nachdem die POU, in der sie deklariert wurden, verlassen wurde. Statische Variablen werden von allen POUs verwendet, in denen sie deklariert sind (z. B. mehrere Funktionsbausteininstanzen, Funktionen oder Methoden teilen dieselben statischen Variablen). Sie können beispielsweise in einer Funktion als Zähler für die Anzahl der Funktionsaufrufe verwendet werden.

Sie haben die Möglichkeit, ein Attribut zum Schlüsselwort VAR_STAT hinzuzufügen.

Externe Variablen – VAR_EXTERNAL

Es handelt sich hierbei um globale Variablen, die in den POU importiert wurden.

Deklarieren Sie diese lokal zwischen den Schlüsselwörtern VAR_EXTERNAL und END_VAR und in der globalen Variablenliste (GVL). Die Deklaration und die globale Deklaration müssen identisch sein. Wenn die globale Variable nicht existiert, erscheint eine Meldung.

HINWEIS: Eine Definition als externe Variable ist nicht erforderlich. Diese Schlüsselwörter werden bereitgestellt, um die Einhaltung der Norm IEC 61131-3 zu gewährleisten.

Beispiel

VAR_EXTERNAL
 iVarExt1:INT; (* 1st external variable *)
END_VAR

Instanzvariablen – VAR_INST

Wenn Sie eine Variable einer Methode durch die Verwendung des Attributs VAR_INST als eine Instanzvariable deklarieren, dann wird diese Variable nicht auf dem Methodenstack gespeichert, sondern auf dem Stack der Funktionsbausteininstanz. Sie verhält sich deswegen wie andere Variablen der Funktionsbausteininstanz und wird nicht reinitialisiert, wenn die Methode aufgerufen wird.

VAR_INST-Variablen sind nur in Methoden erlaubt. Sie können auf diese Variablen nur innerhalb der Methode zugreifen. Attribute wie CONST, RETAIN sind in der Deklaration nicht erlaubt. Die Werte der Variablen können nicht im Deklarationsteil der Methode überwacht werden.

Beispiel

METHOD meth_last : INT
VAR_INPUT
  iVar : INT;
END_VAR
VAR_INST
  iLast : INT := 0;
END_VAR
meth_last := iLast;
iLast := iVar;