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();
输出在 留言 看法:
SA0160:检测到递归调用:“PLC_PRG”->“FB_Test.Call”->“FB_Test.Call”