La version V1.1 d' EcoStruxure Machine Expert ne prend pas en charge les contrôleurs M258, LMC058 et LMC078.

Énumérations

Présentation

Une énumération est un type défini par l'utilisateur constitué d'un certain nombre de constantes de type chaîne séparées par une virgule, appelées valeurs d'énumération. Les valeurs d'énumération identifient des constantes globales dans le projet.

Les valeurs d'énumération, même celles déclarées dans un POU, sont reconnues globalement dans tout le projet.

La boîte de dialogue Ajouter un objet permet de créer une énumération dans un projet sous forme d'objet DUT.

NOTE : la déclaration d'une énumération locale n'est possible que dans TYPE.

Syntaxe de déclaration des énumérations

TYPE <enum identifier>: (<enum_0>|:=<value>,<enum_1>|:=<value>, ...,<enum _n>|:=<value>)|<base data type>|:=<default value>;
END_TYPE

Les opérations suivantes sont également prises en charge :

oInitialisation de valeurs d'énumération simples

oDéfinition d'un type de données de base <base data type> (consultez le paragraphe Seconde extension de la norme IEC 61131-3)

oDéfinition d'une valeur par défaut pour l'initialisation de tous les composants

Syntaxe de déclaration de variables de type énumération

<variable identifier> : <enum identifier>| := <initialization value>

Une variable de type <enum identifier> peut prendre les valeurs d'énumération <enum_..>.

Initialisation

Si...

Alors…

ovous n'avez pas défini de valeur par défaut (<default value>) dans la déclaration d'énumération (voir exemple suivant), et

ovous n'avez pas défini de valeur d'initialisation explicite dans la déclaration des variables de type <enum identifier>

la variable est initialisée sur la valeur du premier composant d'énumération, sauf si un composant est remis à 0 dans la déclaration de l'énumération. Dans ce cas, la variable est elle-aussi remise à 0.

Exemple d'énumération avec valeur d'initialisation explicite pour un composant

Déclaration de l'énumération

TYPE TRAFFIC_SIGNAL: (red, yellow, green:=10);
    (* The initial value for each of the colors is red 0, yellow 1, green 10 *)
END_TYPE

Dans cette déclaration, les valeurs d'initialisation par défaut sont affectées aux deux premiers composants :

red = 0, yellow = 1

La valeur d'initialisation du troisième composant est définie explicitement :

green = 10

Utilisation dans l'implémentation

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;

Exemple d'énumération avec valeur par défaut définie

Déclaration de l'énumération

TYPE COLOR :
(
    red,
    yellow,
    green
) := green;
END_TYPE

Utilisation dans l'implémentation

c1 : COLOR;
c2 : COLOR := yellow;

Dans ce cas, la variable c1 est initialisée sur la valeur green. La valeur d'initialisation yellow est définie pour c2.

Première extension de la norme IEC 61131-3

Pour désambiguïser l'accès à une constante de type énumération, vous pouvez utiliser le nom de type des énumérations (comme opérateur de domaine de validité).

La même constante peut donc être reprise dans plusieurs énumérations.

Exemple

Définition de deux énumérations avec composants du même nom

TYPE COLORS_1: (red, blue);
END_TYPE
TYPE COLORS_2: (green, blue, yellow);
END_TYPE

Utilisation, dans un même bloc, de composants du même nom provenant de différentes énumérations

colorvar1 : COLORS_1;
colorvar2 : COLORS_2;

(* valid: *)
colorvar1 := COLORS_1.blue;
colorvar2 := COLORS_2.blue;

(* invalid: *)
colorvar1 := blue;
colorvar2 := blue;

Seconde extension de la norme IEC 61131-3

Le type de données de base de l'énumération peut être défini explicitement (INT par défaut).

Exemple de type de données de base défini explicitement pour une énumération

TYPE COLORS_2 : (yellow, blue, green:=16#8000)DINT;
END_TYPE

NOTE : l'attribut strict est attribué automatiquement à chaque énumération ajoutée à un projet, sur la ligne précédant la déclaration de TYPE. Cela génère des erreurs lors de la compilation dans les conditions suivantes :

oOpération arithmétique avec variables de type énumération

oAttribution d'une valeur constante à une variable de type énumération, dont la constante n'est pas une valeur d'énumération

oAttribution d'une valeur non constante à une variable de type énumération, dont la valeur non constante n'est pas de type énumération

L'attribut peut être ajouté ou supprimé de manière explicite.

Syntaxe : {attribute 'strict'}