SA0160: Rekursive Aufrufe
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 118. 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();
Ausgabe unter Ansicht Meldungen:
SA0160: Rekursiver Aufruf gefunden: 'PLC_PRG' -> 'FB_Test.Call' -> 'FB_Test.Call'