SA0013:同じ変数名の宣言
他の変数によって既に使用されている名前を持つ変数を検出します (たとえば、同じ名前を持つグローバル変数とローカル変数)。同じアクセス範囲内で関数名、アクション名、メソッド名、またはプロパティ名が使用されている変数も検出されます。の GVL で宣言された変数も検出されます。 デバイス ビューまたは POU プール内で。ただし、この場合、 POU ビューはアプリケーション プログラムで使用する必要があります。
理論的根拠:同じ名前はコードを読み取るときに混乱する可能性があり、間違ったオブジェクトに誤ってアクセスするとエラーが発生する可能性があります。このような状況を回避する命名規則を使用することをお勧めします。
PLCopenルール:N5 / N9
重要性:中
例 25. 例
VAR_GLOBAL
xVar1 : BOOL;
iVar3 : INT;
END_VARPROGRAM PLC_PRG
VAR
xVar1 : BOOL; // SA0013
iVar3 : INT; // SA0013
END_VAR
xVar1 := NOT GVL.xVar1; iVar3 := iVar3 + INT#2; iVar3 := GVL.iVar3;
での出力 メッセージ ビュー:
SA0013: 'iVar1' の宣言によりシンボル 'GVL.iVar1' が非表示になります
SA0013: 'xVar3' の宣言によりシンボル 'GVL.xVar3' が非表示になります
例 26. 例
の FB_Pou ファンクションブロックには ACT アクション、 METH メソッドと同じ名前のローカル変数。
![]() |
FUNCTION_BLOCK FB_Pou
VAR
ACT : UINT; // SA0013
METH : BYTE; // SA0013
END_VARPROGRAM PLC_PRG
VAR
fbPou : FB_Pou;
END_VAR
fbPou();
での出力 メッセージ ビュー:
SA0013: 'ACT' の宣言によりシンボル 'FB_Pou.ACT' が非表示になります
SA0013: 「METH」の宣言によりシンボル「FB_Pou.METH」が非表示になります
