Skip to main content

Estructura de datos: UNION

UNION es una estructura de datos definida por el usuario cuyos miembros suelen tener diferentes tipos y tamaños de datos.

Los miembros de la instancia de un UNION todos los tipos de datos reservan el mismo espacio de memoria. Todos los miembros tienen el mismo desplazamiento de direcciones y comparten la memoria. El requisito de memoria lo determina el miembro más grande.

A UNION variable almacena el valor de exactamente un miembro. La memoria contiene el último valor asignado. Esto significa que la memoria se usa de manera eficiente.

Para obtener más información, consulte: Objeto: DUT

Tipo de declaración

Sintaxis:

TYPE <identifier>

UNION

   <member name> : <data type> := <initialization> ;

END_UNION

END_TYPE

<member name> : <data type> ;

Declaración de un miembro de un tipo de datos elemental

Pueden seguir cualquier número de declaraciones, pero al menos 2.

:= <initialization>

Opcional

ejemplo 238. Ejemplo

Tipo de declaración: U_VAR_12

TYPE U_VAR_12:
UNION
    wVar1: WORD;
    byVar2 : BYTE;
END_UNION
END_TYPE

Tipo de declaración: U_INT_ID

TYPE U_INT_ID:
UNION
    iVar: INT;
    dVar : DINT;
END_UNION
END_TYPE

Tipo de declaración: U_EFFICIENT

TYPE U_EFFICIENT
UNION
    wMember : WORD;
    dwMember : DWORD;
    strMember : STRING := 'A'; 
END_UNION
END_TYPE


Declaración de variables

Instanciación/declaración de una variable de UNION tipo de datos:

<variable name> : <name UNION type> := <initialization> ;

:= <initialization>

Opcional

:= ( <member name> := <literal> )

Inicialización en detalle:

Al operador de asignación le sigue la asignación del valor inicial al miembro entre corchetes.

ejemplo 239. Ejemplo
TYPE U_AB:
UNION
    lrA : LREAL;
    liB : LINT;
END_UNION
END_TYPE

Declaración de variables con inicialización

PLC_PRG PROGRAM
VAR
    uabVAR_1 : U_AB := (lrA := LREAL#1.5);
    uabVAR_2 : U_AB := (liB := LINT#1);
END_VAR


ejemplo 240. Ejemplo

Declaración de variables en PLC_PRG con tipo de datos U_EFFICIENT

PLC_PRG PROGRAM
VAR
 uefficient_1 : U_EFFICIENT := (strMember := 'A');
END_VAR

Implementación: PLC_PRG

uefficient_1.wMember := 16#000A;

Cuándo uefficient_1 se escribe en un miembro de la variable, esto afecta a todos los miembros de la variable.