Eine Enumeration ist ein benutzerdefinierter Datentyp, der sich aus einer Reihe von Komma getrennten String-Konstanten zusammensetzt. Auf diese Konstanten wird in Form von Enumerationswerten verwiesen. Enumerationswerte sind Kennungen für globale Konstanten in einem Projekt.
Enumerationswerte sind global im Projekt bekannt, auch wenn sie innerhalb eines POU deklariert sind.
Eine Aufzählung wird als DUT-Objekt (Data Unit Type) über das Dialogfeld
im Projekt angelegt.TYPE <enum identifier>: (<enum_0>|:=<value>,<enum_1>|:=<value>, ...,<enum _n>|:=<value>)|<base data type>|:=<default value>;
END_TYPE
Ferner können folgende Elemente verwendet werden:
Die Initialisierung einzelner Enumerationswerte
Die Definition eines <base data type>
(Weitere Informationen finden Sie im Abschnitt Zweite Erweiterung zur Norm IEC 61131-3 Standard)
Die Definitionen eines Standardwerts für das Initialisieren aller Komponenten
<variable identifier> : <enum identifier>| := <initialization value>
Eine Variable des Typs <enum identifier>
kann folgende Enumerationswerte annehmen: <enum_..>
.
Wenn... |
Dann... |
---|---|
|
Die Variable wird mit dem Wert der ersten Enumerationskomponente initialisiert. Dies gilt, sofern eine Komponente in der Enumerationsdeklaration nicht mit dem Wert 0 initialisiert wurde. In diesem Fall wird auch die Variable mit dem Wert 0 initialisiert. |
Deklaration der Enumeration
TYPE TRAFFIC_SIGNAL: (red, yellow, green:=10);
(* The initial value for each of the colors is red 0, yellow 1, green 10 *)
END_TYPE
In dieser Deklaration erhalten die ersten beiden Komponenten Standardinitialisierungswerte:
red
= 0
, yellow
= 1
Der Initialisierungswert der dritten Komponente wird explizit definiert:
green
= 10
Verwendung in der Implementierung
TRAFFIC_SIGNAL1 : TRAFFIC_SIGNAL;
TRAFFIC_SIGNAL1:=10; (* The value of the TRAFFIC_SIGNAL1 is "green" *)
FOR i:= red TO green DO
i := i + 1;
END_FOR;
Deklaration der Enumeration
TYPE COLOR :
(
red,
yellow,
green
) := green;
END_TYPE
Verwendung in der Implementierung
c1 : COLOR;
c2 : COLOR := yellow;
In diesem Fall wird die Variable c1
mit dem Wert green
initialisiert. Der Initialisierungswert yellow
wird für c2
definiert.
Der Typname von Enumerationen kann (als Bereichsoperator) verwendet werden, um den Zugriff auf eine Aufzählungskonstante eindeutig zu machen.
Somit ist es möglich, die gleiche Konstante in verschiedenen Enumerationen zu verwenden.
Beispiel
Definition zweier Enumerationen mit gleichnamigen Komponenten
TYPE COLORS_1: (red, blue);
END_TYPE
TYPE COLORS_2: (green, blue, yellow);
END_TYPE
Verwenden Sie Komponenten gleichen Namens aus verschiedenen Enumerationen in einem Baustein
colorvar1 : COLORS_1;
colorvar2 : COLORS_2;
(* valid: *)
colorvar1 := COLORS_1.blue;
colorvar2 := COLORS_2.blue;
(* invalid: *)
colorvar1 := blue;
colorvar2 := blue;
Der Basisdatentyp der Enumeration, die standardmäßig INT ist, kann explizit definiert werden.
Beispiel eines anderen expliziten Basisdatentyps für eine Enumeration
TYPE COLORS_2 : (yellow, blue, green:=16#8000)DINT;
END_TYPE
strict
wird automatisch jeder Enumeration zugewiesen, die Sie einem Projekt in der Zeile über der TYPE
-Deklaration hinzufügen. In folgenden Fällen führt das zu Fehlern beim Kompilierungsprozess:
Arithmetische Operationen mit Variablen des Typs Enumeration
Zuordnung eines konstanten Werts zu einer Variablen des Typs Enumeration, in der die Konstante keinem Enumerationswert entspricht
Zuordnung eines nicht konstanten Werts zu einer Variablen des Typs Enumeration, in der der nicht konstante Wert einen anderen Datentyp aufweist als der Enumerationstyp.
Das Attribut kann explizit hinzugefügt oder entfernt werden.
Syntax: {attribute 'strict'}