Skip to main content

命名規則を定義する

対話中 設定静的分析 タブの下 命名規則 コードで従う命名規則を定義します。スコープと修飾子に応じて、プログラミングブロック、変数、およびデータ型の識別子のプレフィックスを定義します。

次に、静的分析で命名規則への準拠を確認できます。

これへのガイド: 定義された命名規則への準拠を確認してください

プレフィックスを定義する

対話中 設定静的分析 タブの下 命名規則 列の入力フィールドで命名規則を定義します プレフィックス

  • 文字リテラル

    例:

    PRG_POUのプレフィックスPOUタイプのプレフィックスプログラム(102)

  • エントリごとに複数のリテラル、コンマで区切る

    構文: <prefix> ( , <next prefix> )*

    例:

    PRG_, PRGPOUのプレフィックスPOUタイプのプレフィックスプログラム(102)

  • 正規表現 正規表現、プレフィックスのセットを定義します

    構文: @ <expression>

    例:

    @x[a-dA-D] で始まるプレフィックスを定義します x 開始し、その後に範囲の1文字だけが続きます a-dA-D

    @[A-Za-z][A-Za-z][A-Za-z][A-Za-z0-9] 4文字で構成されるプレフィックスを定義します。最初の3文字は文字で、4番目の文字は数字にすることもできます

組み合わせ可能なデータ型のプレフィックスを定義する

以下のデータ型は、標準データ型、既存のデータ型、または機能ブロックに基づいています。

  • ポインタ: POINTER TO <basic type>

  • リファレンス: REFERENCE TO <basic type>

  • 配列: ARRAY[ <lower index bound> .. <upper index bound> ] OF <basic type>

これらのデータ型は、ネストして相互に組み合わせることができます。オプションの場合 組み合わせ可能なデータ型の再帰プレフィックス がアクティブ化されると、静的分析は、そのような組み合わせ可能なデータ型の変数に対して再帰的に構成されたプレフィックスを期待します。プレフィックスは宣言の後に続き、基本的なデータ型で合意されている命名規則に対応しています。

次の命名規則が設定されています。

  • i変数のプレフィックスINT(26)

  • p変数のプレフィックスポインター(26)

  • ref変数のプレフィックス参考文献(27)

  • struct変数のプレフィックス構造(32)

  • オプション 組み合わせ可能なデータ型の再帰プレフィックスstandard icon

次のコードは命名規則に違反しており、読みにくいものです。

PROGRAM plc1
VAR
        var1 : ARRAY[100..110] OF ARRAY[30..50] OF ARRAY[6..7] OF BOOL;
        var2 : ARRAY[1..3] OF INT;
        var3 : REFERENCE TO INT;
        iVar4 : INT;
        iVar5 : INT;
        var6 : ARRAY[1..3] OF INT := [11, 22, 33];
        var7 : POINTER TO ARRAY[1..3] OF INT;
        var8 : REFERENCE TO INT;
        var9 : S_POLYGONLINE := (aiStart:=[1,1], aiPoint1:=[5,2], aiPoint2:=[7,3], aiPoint3:=[8,5], aiPoint4:=[5,7], aiEnd:=[1,1]);
        var0 : ARRAY[0..3] OF S_POLYGONLINE; // S_POLYGONLINE is a already defined structure
END_VAR

iVar4 := iVar4 + 1;
var8 REF= iVar4;
var1[100][30][6] := TRUE;
var9.aiPoint1[1] := 99;
var7 := ADR(var6);
var6[2] := 44;
iVar5 := var7^[2];
var0[0] := var9;

静的分析は、命名規則の次の違反を報告します。

  • NC0102:無効な名前 'plc1':予期されるプレフィックス 'PRG_'

  • NC0014:無効な変数名 'var0':予期されるプレフィックス 'astruct'

  • NC0014:無効な変数名 'var1':予期されるプレフィックス 'aaax'

  • NC0014:無効な変数名 'var2':予期されるプレフィックス 'ai'

  • NC0014:無効な変数名 'var3':予期されるプレフィックス 'refi'

  • NC0014:無効な変数名 'var6':予期されるプレフィックス 'ai'

  • NC0014:無効な変数名 'var7':予期されるプレフィックス 'pai'

  • NC0014:無効な変数名 'var8':予期されるプレフィックス 'refi'

  • NC0014:無効な変数名 'var9':予期されるプレフィックス 'struct'

エイリアスの変数のプレフィックスを定義する

データ型変数にプレフィックスを使用できます エイリアス プレースホルダー付きのリテラルとして {datatype} 定義。次に、静的分析では、プレースホルダーではなく、基本データ型のプレフィックスが必要です。

オプション 名前空間プレフィックスとデータ型プレフィックスを組み合わせる プレフィックスの使用には影響しません {datatype}

次の命名規則が設定されています。

  • s変数のプレフィックスタイププレフィックスSTRING()19

  • A_{datatype}変数のプレフィックスエイリアス(33)

コード

TYPE A_MESSAGE : STRING[50]; // base data type is STRING
END_TYPE

VAR
        A_sMessage_N1 : A_MESSAGE := 'Robot is running.';
        A_s_Message_N2 : A_MESSAGE := 'Robot has been finished.';
        As_Message_N3 : A_MESSAGE := 'Robot has been stopped.';
        AsMessage_N4 : A_MESSAGE := 'Error 3 has been occured.';
END_VAR

静的分析は、命名規則の次の違反を報告します。

  • NC0033:無効な変数名 'As_Message_N3':予期されるプレフィックス 'A_s'

  • NC0033:無効な変数名 'AsMessage_N4':予期されるプレフィックス 'A_s' '

プロパティのプレフィックスを定義する

データ型のビルディングブロック(POU)にプレフィックスを使用できます PROPERTY ワイルドカードを使用したリテラルとして {datatype} 定義。次に、静的分析では、プレースホルダーではなく、プロパティの戻りデータ型のプレフィックスが必要です。

オプション 名前空間プレフィックスとデータ型プレフィックスを組み合わせる プレースホルダーの使用には影響しません {datatype}

次の命名規則が設定されています。

  • fb変数のプレフィックスタイププレフィックス機能ブロックインスタンス

  • FB_POUのプレフィックスPOUタイプのプレフィックス機能ブロック(103)

  • prop_{datatype}POUのプレフィックスPOUタイプのプレフィックスプロパティ(107)

コード

FUNCTION_BLOCK blocka // Invalid function block name
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    iA : INT;
END_VAR
iA := iA + 1;

PROPERTY PUBLIC vara : INT // Invalid property name, return data type is INT
Get
        vara := iA;
Set
iA := vara;

PROGRAM plc1
VAR
        var10 : blocka; // Invalid variable name of typ function block
        iVar11: INT;
END_VAR

var10();
IF var10.vara > 500 THEN
        var10.vara := 0;
END_IF
iVar11 := var10.vara;

静的分析は、命名規則の次の違反を報告します。

  • NC0102:無効な名前 '' plc1 ':予期されるプレフィックス' PRG_ ''

  • NC0031:無効な変数名 '' var10 ':予期されるプレフィックス' 'fb' '

  • NC0103:無効な変数名 '' blocka ':予期されるプレフィックス' FB_ ''

  • NC0107:無効な変数名 'blocka.vara':予期されるプレフィックス 'prop_i' '

命名規則に従ったコード

FUNCTION_BLOCK FB_A
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    iA : INT;
END_VAR
iA := iA + 1;

PROPERTY PUBLIC prop_iA : INT
Get
        prop_iA := iA;
Set
        iA := prop_iA;

PROGRAM PRG_PLC1
VAR
        fbA : FB_A;
        iVar11: INT;
END_VAR

fbA();
IF fbA.prop_iA > 500 THEN
        fbA.prop_iA := 0;
END_IF
iVar11 := fbA.prop_iA;

構造のプレフィックスを定義する

プロジェクト内の構造の一般的な接頭辞は、次の場所で設定できます。 DUTのプレフィックス構造(151) 定義。特別な接頭辞が付いた構造を提供することもできます。次に、特別なプレフィックスが一般的なプレフィックスをシャドウします。

特別なプレフィックスは、プラグマを使用した構造のデータ型宣言で指定されます {attribute 'nameprefix' := <special prefix> '} 定義されています。次に、この構造のすべての変数をこのプレフィックスで開始します <special prefix>

次の命名規則が設定されています。

  • struct変数のプレフィックス構造(32)

  • S_DUTのプレフィックス構造(151)

  • 組み合わせ可能なデータ型の再帰プレフィックスstandard icon

コード

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

{attribute 'nameprefix' := 'penta'} // Pragma to define a special prefix
TYPE S_PENTA EXTENDS S_POLYGONLINE :
STRUCT
        aiPoint5 : ARRAY[1..2] OF INT;
END_STRUCT
END_TYPE

PROGRAM PRG_Compute
VAR
        structPolygon : S_POLYGONLINE := (aiStart:=[1,1], aiPoint1:=[5,2], aiPoint2:=[7,3], aiPoint3:=[8,5], aiPoint4:=[5,7], aiEnd:=[1,1]);
        structPentagon : S_PENTAGON := (aiStart:=[0,0], aiPoint1:=[1,1], aiPoint2:=[2,2], aiPoint3:=[3,3], aiPoint4:=[4,4], aiPoint5:=[5,5]);
        structLine0 : S_PENTA;
        pentaLine1 : S_PENTA;
        iXPoint: INT;
        aPoint0: ARRAY [1..2] OF INT;
        aPoint1: ARRAY [1..2] OF INT;
END_VAR

iXPoint := structPolygon.aiPoint1[1];
aPoint0 := structLine0.aiEnd;
aiPoint1 := pentaLine1.aiEnd;

静的分析は、命名規則の次の違反を報告します。

  • 無効な変数名 'structLine0':予期されるプレフィックス 'penta'

さらに遠く CODESYS Static Analysis-プロジェクトに命名規則を提供する

命名規則をCSAファイルに保存します。このファイルは他の場所でも使用できます CODESYS Static Analysis-プロジェクトをロードして使用します。

手順. ファイルに保存
  1. コマンドを選択します ビルド→静的分析→設定

  2. ボタンを選択 コンピューターに保存

    ファイル選択ダイアログが開きます。そこで、ファイル拡張子がCSAの任意の名前のファイルに命名規則を保存できます。

手順. 命名規則を使用してファイルをロードする
  1. コマンドを選択します ビルド→静的分析→設定

  2. ボタンを選択 ロード

    ファイル選択ダイアログが開きます。表示されたCSAファイルから1つを選択します。