Skip to main content

数据结构: UNION

UNION 是用户定义的数据结构,其成员通常具有不同的数据类型和大小。

实例的成员 UNION 所有数据类型都保留相同的内存空间。所有成员具有相同的地址偏移量并共享内存。内存需求由最大的成员决定。

A UNION 变量存储的恰好是一个成员的值。内存包含上次分配的值。这意味着内存得到有效利用。

有关更多信息,请参阅:对象: DUT

类型声明

语法:

TYPE <identifier>

UNION

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

END_UNION

END_TYPE

<member name> : <data type> ;

声明基本数据类型的成员

随后可以发表任意数量的声明,但至少 2 个。

:= <initialization>

可选

238. 示例

类型声明: U_VAR_12

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

类型声明: U_INT_ID

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

类型声明: U_EFFICIENT

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


变量声明

a 的变量的实例化/声明 UNION 数据类型:

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

:= <initialization>

可选

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

初始化详情:

赋值运算符之后是将初始值赋给圆括号中的成员。

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

带初始化的变量声明

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


240. 示例

中的变量声明 PLC_PRG 使用数据类型 U_EFFICIENT

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

实施: PLC_PRG

uefficient_1.wMember := 16#000A;

什么时候 uefficient_1 写入变量的成员,这会影响变量的所有成员。