データ構造: STRUCT
構造体はユーザー定義のデータ型で、任意のデータ型の複数の変数を 1 つの論理ユニットにまとめます。構造体内で宣言された変数はメンバーと呼ばれます
構造体の型宣言は DUT で作成したオブジェクトプロジェクト → [オブジェクトを追加] → ダクト メニューまたはアプリケーションのコンテキストメニューにあります。
詳細については、以下を参照してください。 DUT
構文
TYPE <structure name>
STRUCT
<member name> : <data type> := <initialization> ;
END_STRUCT
END_TYPE
| この識別子はプロジェクト全体で有効であるため、標準データ型のように使用できます。 |
| メンバーの宣言 宣言はいくつでも構いませんが、少なくとも 2 つは必要です。 構造はネストすることもできます。つまり、構造体メンバーを既存の構造型で宣言することになります。その場合、唯一の制限は、変数 (構造体のメンバー) にアドレスを割り当ててはいけないということです。は |
| [オプション] |
タイプ宣言
TYPE S_POLYGONLINE : STRUCT aiStart : ARRAY[1..2] OF INT := [-99, -99]; aiPoint1 : ARRAY[1..2] OF INT; aiPoint2 : ARRAY[1..2] OF INT; aiPoint3 : ARRAY[1..2] OF INT; aiPoint4 : ARRAY[1..2] OF INT; aiEnd : ARRAY[1..2] OF INT := [99, 99]; END_STRUCT END_TYPE
型宣言の拡張
既存の構造体から追加の構造が宣言されます。拡張構造には、独自のメンバーに加えて、基本構造体と同じ構造体メンバーもあります。
構文
TYPE <structure name> EXTENDS <base structure>
STRUCT
<member declaration>
END_STRUCT
END_TYPE
タイプ宣言: S_PENTAGON
TYPE S_PENTAGON EXTENDS S_POLYGONLINE : STRUCT aiPoint5 : ARRAY[1..2] OF INT; END_STRUCT END_TYPE
構造変数の宣言と初期化
PROGRAM progLine VAR sPolygon : S_POLYGONLINE := (aiStart:=[1,1], aiPoint1:=[5,2], aiPoint2:=[7,3], aiPoint3:=[8,5], aiPoint4:=[5,7], aiEnd:=[1,1]); sPentagon : S_PENTAGON := (aiStart:=[0,0], aiPoint1:=[1,1], aiPoint2:=[2,2], aiPoint3:=[3,3], aiPoint4:=[4,4], aiPoint5:=[5,5], aiEnd:=[0,0]); END_VAR
変数には初期化を使用しないでください。構造体の配列を初期化する例については、そのデータ型のヘルプページを参照してください ARRAY OF。
構造体メンバーへのアクセス
構造体メンバーには、次の構文でアクセスします。
<variable name> . <member name>
PROGRAM prog_Polygon VAR sPolygon : S_POLYGONLINE := (aiStart:=[1,1], aiPoint1:=[5,2], aiPoint2:=[7,3], aiPoint3:=[8,5], aiPoint4:=[5,7], aiEnd:=[1,1]); iPoint : INT; END_VAR
// Assigs 5 to aiPoint iPoint := sPolygon.aiPoint1[1];
結果: iPoint = 5
構造体変数のシンボリックビットアクセス
データ型の変数を使用して構造体を宣言できます BIT
個々のビットを 1 つの論理ユニットにまとめること。そうすれば、(ビットインデックスの代わりに) 名前で個々のビットをシンボリックにアドレス指定できます
シンタックス宣言
TYPE <structure name> :
STRUCT
<member name> : BIT;
END_STRUCT
END_TYPE
ビットアクセスの構文
<structure name> . <member name>
タイプ宣言
TYPE S_CONTROL : STRUCT bitOperationEnabled : BIT; bitSwitchOnActive : BIT; bitEnableOperation : BIT; bitError : BIT; bitVoltageEnabled : BIT; bitQuickStop : BIT; bitSwitchOnLocked : BIT; bitWarning : BIT; END_STRUCT END_TYPE
ビットアクセス
FUNCTION_BLOCK FB_Controller VAR_INPUT xStart : BOOL; END_VAR VAR_OUTPUT END_VAR VAR ControlDriveA : S_CONTROL; END_VAR IF xStart = TRUE THEN // Symbolic bit access ControlDriveA.bitEnableOperation := TRUE; END_IF PROGRAM PLC_PRG fbController : FB_Controller; END_VAR fbController(); fbController.xStart := TRUE;
詳細については、以下を参照してください。 変数のビットアクセス
ヒント
への参照とポインタ BIT
変数は 無効 宣言、および基本型の配列要素 BIT
。