Ermittelt rekursive Aufrufe in Aktionen, Methoden und Eigenschaften von Funktionsbausteinen. Ermittelt auch mögliche Rekursionen durch virtuelle Funktionsaufrufe und Schnittstellenaufrufe.
Begründung: Rekursionen führen zu nicht-deterministischem Verhalten und sind daher eine Fehlerquelle.
Wichtigkeit: Mittel
PLCopen-Regel: CP13
Beispiel
Dem Funktionsbaustein FB_Test
ist folgende Methode Call
zugewiesen:
FUNCTION_BLOCK FB_Test VAR bParameter: BOOL; END_VAR METHOD Call : BOOL VAR_INPUT END_VAR Call := THIS^.Call(); //SA0160
Das Programm PLC_PRG
ruft FB_Test
auf:
PROGRAM PLC_PRG VAR fbTest : FB_Test; bValue : BOOL; END_VAR bValue := fbTest.bParameter; fbTest.Call(); --> SA0160: Rekursiver Aufruf gefunden: 'PLC_PRG -> FB_Test.Call -> FB_Test.Call