Structure des données : UNION
UNION est une structure de données définie par l'utilisateur dont les membres ont généralement des types et des tailles de données différents.
Les membres de l'instance d'un UNION les types de données réservent tous le même espace mémoire. Tous les membres ont le même décalage d'adresse et partagent la mémoire. La mémoire requise est déterminée par le membre le plus volumineux.
A. UNION variable stocke la valeur d'exactement un membre. La mémoire contient la dernière valeur attribuée. Cela signifie que la mémoire est utilisée efficacement.
Pour plus d'informations, voir : Objet : DUT
Déclaration de type
Syntaxe :
TYPE <identifier>
UNION
<member name> : <data type> := <initialization> ;
END_UNION
END_TYPE
| Déclaration d'un membre d'un type de données élémentaire Un certain nombre de déclarations peuvent suivre, mais au moins 2. |
| Facultatif |
Déclaration de type : U_VAR_12
TYPE U_VAR_12:
UNION
wVar1: WORD;
byVar2 : BYTE;
END_UNION
END_TYPEDéclaration de type : U_INT_ID
TYPE U_INT_ID:
UNION
iVar: INT;
dVar : DINT;
END_UNION
END_TYPEDéclaration de type : U_EFFICIENT
TYPE U_EFFICIENT
UNION
wMember : WORD;
dwMember : DWORD;
strMember : STRING := 'A';
END_UNION
END_TYPEDéclaration de variables
Instanciation ou déclaration d'une variable d'un UNION type de données :
<variable name> : <name UNION type> := <initialization> ;
| Facultatif |
| Initialisation en détail : L'opérateur d'affectation est suivi de l'attribution de la valeur initiale au membre entre parenthèses. |
TYPE U_AB:
UNION
lrA : LREAL;
liB : LINT;
END_UNION
END_TYPEDéclaration de variables avec initialisation
PLC_PRG PROGRAM
VAR
uabVAR_1 : U_AB := (lrA := LREAL#1.5);
uabVAR_2 : U_AB := (liB := LINT#1);
END_VARDéclaration de variables dans PLC_PRG avec type de données U_EFFICIENT
PLC_PRG PROGRAM VAR uefficient_1 : U_EFFICIENT := (strMember := 'A'); END_VAR
Mise en œuvre : PLC_PRG
uefficient_1.wMember := 16#000A;
Quand uefficient_1 est écrit dans un membre de la variable, cela affecte tous les membres de la variable.