Skip to main content

変数宣言

変数宣言:どこでどのように?

変数は以下の場所で宣言できます。

  • POU のデクラレーション部分

    ザル 変数を宣言する これにはダイアログが役立ちます。

  • 変数リスト (GVL エディター、NVL エディター)

  • I/O デバイスオブジェクトの I/O マッピング設定

    詳細については、以下を参照してください。 デバイスとI / Oマッピングの構成

詳細については、以下を参照してください。 変数宣言のショートカット

構文

<pragma>

<scope> <type qualifier>

    <identifier> AT <address> : <data type> := <initial value> ;

END_VAR

<pragma>

繰り返し(任意)(なし、1回、または複数回)

プラグマ

プラグマはコンパイラステートメントです(たとえば、メモリ要件やランタイムの改善などの最適化を行うための)。

<scope>

必須

スコープ

  • VAR

  • VAR_CONFIG

    メモ:アドレス情報が不完全な変数が関数ブロックで宣言されている場合 (たとえば、 AT %I*)、次に変数宣言内の変数 VAR_CONFIG 完全に宣言されている必要があります。ローカルインスタンスでこれらの変数にアクセスできるのは、これが完了した場合だけです。

  • VAR_EXTERNAL

  • VAR_GLOBAL

  • VAR_INPUT

  • VAR_INST

  • VAR_IN_OUT

  • VAR_OUTPUT

  • VAR_STAT

  • VAR_TEMP

<type qualifier>

[オプション]

タイプ修飾子

  • CONSTANT

  • RETAIN

  • PERSISTENT

<identifier>

必須

識別子、変数名

注:識別子を割り当てるときは、「識別子の指定」の章に記載されている規則に例外なく従う必要があります。さらに、統一命名に関する推奨事項も記載されています

AT %<address>

[オプション]

アドレスは次のように構成されています。

<メモリ領域> <任意サイズの接頭辞> <メモリ位置>

メモリ領域は、入力メモリ領域、出力メモリ領域、またはフラグメモリ領域に細分されます (IQ または M)。

  • AT %I* // Incomplete address

  • AT %I7.5

  • AT %IW0

  • AT %QX7.5

  • AT %MD48

<data type>

必須

データタイプ

  • 基本データ型

  • カスタムデータタイプ

  • ファンクションブロック

<initial value>

[オプション]

初期値、リテラル、変数、または式としての初期化

12.

グローバル変数リスト GVL

{attribute 'qualified_only'}
{attribute 'linkalways'}
VAR_GLOBAL CONSTANT
    g_ciMAX_A : INT := 100;
    g_ciSPECIAL : INT := g_ciMAX_A - 10;
END_VAR

設定変数 GVL_CONFIG

{attribute 'qualified_only'}
VAR_CONFIG
    // Generated instance path of variable at incomplete address
    PLC_PRG.fbDoItNow.XLOCINPUT AT %I*: BOOL := TRUE;
END_VAR

ファンクションブロック FB_DoIt

METHOD METH_Last : INT
VAR_INPUT
    iVar : INT;
END_VAR
VAR_INST
    iLast : INT := 0;
END_VAR

METH_Last := iLast;
iLast := iVar;

FUNCTION_BLOCK FB_DoIt
VAR_INPUT
    wInput AT %IW0 : WORD; (* Input variable *)
END_VAR
VAR_OUTPUT
    wOutput AT %QW0 : WORD; (* Output variable *)
END_VAR
VAR_IN_OUT
    aData_A : ARRAY[0..1] OF DATA_A; // Formal variable
END_VAR
VAR_EXTERNAL
        GVL.g_ciMAX_A : INT; // Declared in object GVL
END_VAR
VAR_STAT
    iNumberFBCalls : INT;
END_VAR
VAR
    iCounter: INT;
    xLocInput AT %I* : BOOL := TRUE; // VAR_CONFIG
END_VAR

iNumberFBCalls := iNumberFBCalls + 1;

IEC プログラム PLC_PRG

PROGRAM PLC_PRG
VAR
    iLoop: INT;
    iTest: INT;
    fbDoItNow : FB_DoIt;
    iTest_200: INT;
    aData_Now : ARRAY[0..1] OF DATA_A := [(iA_1 := 1, iA_2 := 10, dwA_3 := 16#00FF),(iA_1 := 2, iA_2 := 20, dwA_3 := 16#FF00)];
END_VAR

iTest := GVL.g_ciMAX_A;
iTest_200 :=  2 * GVL.g_ciMAX_A;
fbDoItNow(aData_A := aData_Now);
FOR iLoop := 0 TO GVL.g_ciSPECIAL DO
    ;
END_FOR