命名規則を定義する
対話中 設定静的分析 タブの下 命名規則 コードで従う命名規則を定義します。スコープと修飾子に応じて、プログラミングブロック、変数、およびデータ型の識別子のプレフィックスを定義します。
次に、静的分析で命名規則への準拠を確認できます。
これへのガイド: 定義された命名規則への準拠を確認してください
プレフィックスを定義する
対話中 設定静的分析 タブの下 命名規則 列の入力フィールドで命名規則を定義します プレフィックス。
文字リテラル
例:
PRG_の POUのプレフィックス、 POUタイプのプレフィックス、 プログラム(102)エントリごとに複数のリテラル、コンマで区切る
構文:
<prefix> ( , <next prefix> )*例:
PRG_, PRGの POUのプレフィックス、 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)オプション 組み合わせ可能なデータ型の再帰プレフィックス:

次のコードは命名規則に違反しており、読みにくいものです。
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()19A_{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)組み合わせ可能なデータ型の再帰プレフィックス:

コード
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-プロジェクトをロードして使用します。
コマンドを選択します 。
ボタンを選択 。
ファイル選択ダイアログが開きます。そこで、ファイル拡張子がCSAの任意の名前のファイルに命名規則を保存できます。
コマンドを選択します 。
ボタンを選択 。
ファイル選択ダイアログが開きます。表示されたCSAファイルから1つを選択します。