UNION

Eine UNION ist eine Datenstruktur, die meist unterschiedliche Datentypen enthält. In einer Union haben alle Komponenten den gleichen Offset, wodurch sie denselben Speicherplatz belegen.

Die Deklaration einer Union nehmen Sie in einem DUT-Objekt vor, das Sie über den Befehl Hinzufügen > DUT im Kontextmenü des SPS-Projektbaums im Projekt anlegen.

Syntax:

TYPE <Unionname>:
UNION
    <Variablendeklaration 1>
    ...
    <Variablendeklaration n>
END_UNION
END_TYPE

Beispiel 1:

In der folgenden Beispieldeklaration einer Union betrifft eine Zuweisung auf uName.fA auch uName.nB und uName.nC.

Deklaration:

TYPE U_Name:
UNION
    fA : LREAL;
    nB : LINT;
    nC : WORD;
END_UNION
END_TYPE

Instanziierung:

VAR
    uName : U_Name;
END_VAR

Zuweisung:

uName.fA := 1;

Ergebnis:

fA = 1
nB = 16#3FF0000000000000
nC = 0

Beispiel 2:

In der folgenden Beispieldeklaration einer Union betrifft eine Zuweisung auf u2Byte.nUINT auch u2Byte.a2Byte und u2Byte.aBits.

Deklaration der Struktur ST_Bits:

TYPE ST_Bits :
STRUCT
    bBit1  : BIT;
    bBit2  : BIT;
    bBit3  : BIT;
    bBit4  : BIT;
    bBit5  : BIT;
    bBit6  : BIT;
    bBit7  : BIT;
    bBit8  : BIT;
END_STRUCT
END_TYPE

Deklaration der Union U_2Byte:

TYPE U_2Byte :
UNION
    nUINT  : UINT;
    a2Byte : ARRAY[1..2] OF BYTE;
    aBits  : ARRAY[1..2] OF ST_Bits;
END_UNION
END_TYPE

Instanziierung der Union:

VAR
    u2Byte : U_2Byte;
END_VAR

Zuweisung 1:

u2Byte.nUINT := 5;

Ergebnis 1:

UNION 1:

Zuweisung 2:

u2Byte.nUINT := 255;

Ergebnis 2:

UNION 2:

Zuweisung 3:

u2Byte.nUINT := 256;

Ergebnis 3:

UNION 3:

Siehe auch: