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”