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:
SA0160: Chiamata ricorsiva rilevata: 'PLC_PRG' -> 'FB_Test.Call' -> 'FB_Test.Call'