Skip to main content

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:

  • sa_icon_message.png SA0160: Rekursiver Aufruf gefunden: 'PLC_PRG' -> 'FB_Test.Call' -> 'FB_Test.Call'