データ構造: UNION
UNION
はユーザー定義のデータ構造で、そのメンバーのデータ型とサイズは通常異なります。
a のインスタンスのメンバー UNION
データ型はすべて同じメモリ空間を予約します。すべてのメンバーが同じアドレスオフセットを持ち、メモリを共有します。メモリ要件は、最も大きいメンバーによって決まります。
UNION
変数は、正確に1つのメンバーの値を格納します。メモリには最後に割り当てられた値が含まれています。つまり、メモリが効率的に使用されているということです。
詳細については、「オブジェクト:」を参照してください。 DUT
タイプ宣言
構文:
TYPE <identifier>
UNION
<member name> : <data type> := <initialization> ;
END_UNION
END_TYPE
| 基本データ型のメンバーの宣言 宣言はいくつでも構いませんが、少なくとも 2 つは必要です。 |
| [オプション] |
タイプ宣言: 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> ;
| [オプション] |
| 初期化の詳細: 代入演算子の後には、丸括弧で囲まれたメンバーへの初期値の代入が続きます。 |
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
での変数宣言 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
が変数のメンバーに書き込まれると、変数のすべてのメンバーに影響します。