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'