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'