Skip to main content

Struttura dei dati: UNION

UNION è una struttura di dati definita dall'utente i cui membri di solito hanno tipi e dimensioni di dati diversi.

I membri dell'istanza di a UNION tutti i tipi di dati riservano lo stesso spazio di memoria. Tutti i membri hanno lo stesso offset di indirizzo e condividono la memoria. Il requisito di memoria è determinato dal membro più grande

A UNION variabile memorizza il valore di esattamente un membro. La memoria contiene l'ultimo valore assegnato. Ciò significa che la memoria viene utilizzata in modo efficiente.

Per ulteriori informazioni, vedere: Oggetto: DUT

Dichiarazione del tipo

Sintassi:

TYPE <identifier>

UNION

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

END_UNION

END_TYPE

<member name> : <data type> ;

Dichiarazione di un membro di un tipo di dati elementare

Può seguire un numero qualsiasi di dichiarazioni, ma almeno 2.

:= <initialization>

Opzionale

Esempio 238. Esempio

Dichiarazione del tipo: U_VAR_12

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

Dichiarazione del tipo: U_INT_ID

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

Dichiarazione del tipo: U_EFFICIENT

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


Dichiarazione variabile

Istanziazione/dichiarazione di una variabile di a UNION tipo di dati:

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

:= <initialization>

Opzionale

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

Inizializzazione in dettaglio:

L'operatore di assegnazione è seguito dall'assegnazione del valore iniziale all'asta tra parentesi tonde.

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

Dichiarazione di variabili con inizializzazione

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


Esempio 240. Esempio

Dichiarazione variabile in PLC_PRG con tipo di dati U_EFFICIENT

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

Implementazione: PLC_PRG

uefficient_1.wMember := 16#000A;

Quando uefficient_1 viene scritto su un membro della variabile, ciò influisce su tutti i membri della variabile.