Skip to main content

SA0160: Chiamate ricorsive

Rileva le chiamate ricorsive nelle azioni, nei metodi e nelle proprietà dei blocchi funzione. Rileva anche possibili ricorsioni da chiamate di funzioni virtuali e chiamate di interfaccia.

Motivazione: Le ricorsioni portano a comportamenti non deterministici e sono quindi fonte di errori.

Importanza: Media

Regola PLCopen: CP13

Esempio 118. Esempio

Il seguente metodo Call è assegnato al blocco funzione FB_Test:

FUNCTION_BLOCK FB_Test
VAR
    bParameter: BOOL;
END_VAR
METHOD Call : BOOL
VAR_INPUT
END_VAR
Call := THIS^.Call();    //SA0160

Il programma PLC_PRG chiamate FB_Test:

PROGRAM PLC_PRG
VAR
    fbTest : FB_Test;
    bValue : BOOL;
END_VAR
bValue := fbTest.bParameter;
fbTest.Call();

Uscita in Messaggi vista:

  • sa_icon_message.png SA0160: Chiamata ricorsiva rilevata: 'PLC_PRG' -> 'FB_Test.Call' -> 'FB_Test.Call'