Skip to main content

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();

での出力 メッセージ ビュー:

  • sa_icon_message.png SA0160: 再帰呼び出しが検出されました: 'PLC_PRG' -> 'FB_Test.Call' -> 'FB_Test.Call'