检测功能块的操作、方法和属性中的递归调用。还能检测虚拟函数调用和接口调用中可能出现的递归。
理由递归导致非确定性行为,因此是错误的根源。
重要性:中型
PLCopen 规则:CP13
示例
以下方法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: Recursive call detected: 'PLC_PRG -> FB_Test.Call -> FB_Test.Call