Skip to main content

データ構造: STRUCT

構造体はユーザー定義のデータ型で、任意のデータ型の複数の変数を 1 つの論理ユニットにまとめます。構造体内で宣言された変数はメンバーと呼ばれます

構造体の型宣言は DUT で作成したオブジェクトプロジェクト[オブジェクトを追加]ダクト メニューまたはアプリケーションのコンテキストメニューにあります。

詳細については、以下を参照してください。 DUT

構文

TYPE <structure name>

STRUCT

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

END_STRUCT

END_TYPE

<structure name>

この識別子はプロジェクト全体で有効であるため、標準データ型のように使用できます。

<member name> : <data type> ;

メンバーの宣言

宣言はいくつでも構いませんが、少なくとも 2 つは必要です。

構造はネストすることもできます。つまり、構造体メンバーを既存の構造型で宣言することになります。その場合、唯一の制限は、変数 (構造体のメンバー) にアドレスを割り当ててはいけないということです。は AT ここでは宣言は許可されていません。

:= <initialization>

[オプション]

タイプ宣言

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

223.

タイプ宣言: S_PENTAGON

TYPE S_PENTAGON EXTENDS S_POLYGONLINE :
STRUCT
    aiPoint5 : ARRAY[1..2] OF INT;
END_STRUCT
END_TYPE


構造変数の宣言と初期化

224.
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>

225.
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>

226.

タイプ宣言

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