SA0160:再帰呼び出し
ファンクションブロックのアクション、メソッド、およびプロパティでの再帰呼び出しを決定します。また、仮想関数呼び出しとインターフェース呼び出しを介して可能な再帰を検出します。
理由:再帰は非決定論的な動作につながるため、エラーの原因になります。
重要性:中
PLCopenルール:CP13
例 118. 例
機能ブロック FB_Test 次の方法です Call 割り当て:
FUNCTION_BLOCK FB_Test
VAR
bParameter: BOOL;
END_VAR
METHOD Call : BOOL VAR_INPUT END_VAR
Call := THIS^.Call(); //SA0160
プログラム PLC_PRG 呼び出し FB_Test の上:
PROGRAM PLC_PRG
VAR
fbTest : FB_Test;
bValue : BOOL;
END_VAR
bValue := fbTest.bParameter; fbTest.Call();
での出力 メッセージ ビュー:
SA0160: 再帰呼び出しが検出されました: 'PLC_PRG' -> 'FB_Test.Call' -> 'FB_Test.Call'