Skip to main content

SA0160:递归调用

检测功能块的动作、方法和属性中的递归调用。还检测来自虚拟函数调用和接口调用的可能递归。

理由:递归会导致不确定的行为,因此是错误的来源。

重要性:中等

PLCopen规则:CP13

118. 例子

下面的方法 Call 分配给功能块 FB_Test

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”