Énumération
Une énumération (également appelée énumération) est un type de données défini par l'utilisateur qui consiste en une liste de valeurs d'énumération séparées par des virgules. Une énumération (enum en abrégé) définit un ensemble de valeurs fixes nommées
Im Applikationscode können Sie einen Enumerationswert wie eine konstante Variable verwenden. Die Konstante <enumeration name>.<member name> ist global im Projekt bekannt.
Vous déclarez une énumération dans un DUT objet que vous utilisez auparavant avec la commande Ajouter un objet créé dans le cadre du projet.
Astuce
Si vous souhaitez compléter les valeurs d'énumération par un texte significatif, ajoutez un Support pour les listes de textes ajouter.
Déclaration
Syntaxe
{attribute 'strict'}
TYPE <ennumeration name> :
(
<member name> := <value>
) <base data type> := <initialization> ;
END_TYPE
| Facultatif Le pragma a pour effet d'effectuer un test de type strict comme décrit ci-dessous. Le pragma est facultatif, mais recommandé. |
| Nom de l'énumération qui peut être utilisée dans le code comme type de données Exemple : |
| N'importe quel nombre de membres, mais au moins deux membres Une énumération est une liste de noms de membres séparés par des virgules entre crochets. Le dernier membre avant le crochet fermant n'a pas besoin de virgule. Tous les membres ont le même type de données. Les valeurs des membres sont automatiquement initialisées : à partir de 0, les valeurs sont continuellement incrémentées de 1. Vous pouvez également attribuer explicitement une valeur initiale fixe aux membres individuels. exemple : |
| Facultatif Vous pouvez attribuer explicitement l'un des types de données de base suivants :
Par défaut : |
| Facultatif L'un des membres peut être explicitement déclaré comme membre initial. Par défaut : si aucune initialisation n'est explicitement spécifiée, l'initialisation est automatiquement effectuée avec le membre supérieur. |
{attribute 'qualified_only'}
{attribute 'strict'}
TYPE COLOR_BASIC :
(
yellow,
green,
blue,
black
) // Basic data type is INT, default initialization for all COLOR_BASIC variables is yellow
;
END_TYPE{attribute 'qualified_only'}
{attribute 'strict'}
TYPE E_TRAFFICSIGNAL :
(
eRed,
eYellow,
eGreen := 10
);
END_TYPE
Énumération avec type de données de base explicite
Extensions de la norme IEC 61131-3
Le type de données de base pour une déclaration d'énumération est INT par défaut. Cependant, vous pouvez également déclarer des énumérations qui sont basées explicitement sur un autre type de données entier.
Énumération avec type de données de base DWORD
TYPE COLOR :
(
white := 16#FFFFFF00,
yellow := 16#FFFFFF00,
green := 16#FF00FF00,
blue := 16#FF0000FF,
black := 16#88000000
) DWORD := black
; // Basic data type is DWORD, default initialization for all COLOR variables is black
END_TYPERègles de programmation strictes
Important
Dans CODESYS V3.5 SP7 et versions supérieures, le pragma {attribute 'strict'} est ajouté automatiquement dans la première ligne lors de la déclaration d'une énumération.
Les règles de programmation strictes sont activées lors de l'ajout du pragma {attribute 'strict'}.
Opérations arithmétiques avec des membres d'énumération
Par exemple, une variable d'énumération ne peut pas être utilisée comme variable de compteur dans un
FORboucle.Affectation d'une valeur constante, qui ne correspond pas à une valeur d'énumération, à un membre de l'énumération
Affectation d'une variable non constante, qui possède un autre type de données que l'énumération, à un membre de l'énumération
Les opérations arithmétiques peuvent entraîner l'attribution de valeurs non déclarées aux membres de l'énumération. Un meilleur style de programmation est d'utiliser SWITCH/CASE instructions pour le traitement des valeurs des membres.
Déclaration et initialisation des variables d'énumération
Syntaxe
<variable name> : <enumeration name> := <initialization> ;
Dans le cas d'une déclaration d'une variable d'énumération avec une énumération définie par l'utilisateur, la variable peut être initialisée avec un membre d'énumération.
PROGRAM PLC_PRG
VAR
colorCar: COLOR;
colorTaxi : COLOR := COLOR.yellow;
END_VARLa variable colorCar est initialisé avec COLOR.black. Il s'agit de l'initialisation par défaut pour toutes les variables d'énumération COLOR et défini de cette façon dans la déclaration de type. La variable colorTaxi possède sa propre initialisation.
Si aucune initialisation n'est spécifiée, la valeur d'initialisation est 0.
PROGRAM PLC_PRG
VAR
cbFlower : COLOR_BASIC;
cbTree: COLOR_BASIC := COLOR_BASIC.green;
END_VARLa variable cbFlower est initialisé avec COLOR_BASIC.yellow. Il s'agit de l'initialisation par défaut pour toutes les variables d'énumération COLOR_BASIC. Comme la déclaration d'énumération ne spécifie pas de membre à initialiser, le système s'initialise automatiquement avec le membre dont la valeur est 0. Il s'agit généralement du premier des membres de l'énumération. Cependant, il peut également s'agir d'un autre membre qui n'est pas en première position, mais qui est explicitement initialisé avec 0.
La variable cbTree possède une initialisation explicite.
Si aucune valeur n'est spécifiée à la fois pour le type et pour la variable, la règle suivante s'applique : Si une énumération contient une valeur pour 0, cette valeur est l'initialisation par défaut, sinon, le premier membre de la liste.
Initialisation avec le membre 0
TYPE ENUM :
(
e1 := 2,
e2 := 0,
e3
)
;
END_TYPE
PROGRAM PLC_PRG
VAR
e : ENUM;
END_VARLa variable e est initialisé avec ENUM.e2.
Initialisation avec le premier membre
TYPE ENUM2 :
(
e1 := 3,
e2 := 1,
e3
)
;
END_TYPE
PROGRAM PLC_PRG
VAR
e2 : ENUM2;
END_VARLa variable e2 est initialisé avec ENUM.e1.
Accès unique aux membres du recensement
Extensions de la norme IEC 61131-3
Les membres d'énumération peuvent également être utilisés comme variables constantes avec l'identifian <enumeration name>.<member name>. Les membres d'énumération sont reconnus globalement dans le projet et leur accès est unique. Par conséquent, un nom de membre peut être utilisé dans différentes énumérations.
Membre : blue
PROGRAM PLC_PRG
VAR
cbFlower : COLOR_BASIC;
colorCar : COLOR;
END_VAR
(* unambiguous identifiers although the component names are identical *)
cbFlower := COLOR_BASIC.blue;
colorCar := COLOR.blue;
(* invalid code *)
cbFlower := blue;
colorCar := blue;Pour plus d'informations, voir : Espace de noms d'énumération.