Skip to main content

SA0160: Llamadas recursivas

Detecta llamadas recursivas en acciones, métodos y propiedades de bloques de funciones. También detecta posibles recurrencias de llamadas de funciones virtuales y llamadas de interfaz.

Justificación: Las recurrencias conducen a un comportamiento no determinista y, por lo tanto, son una fuente de errores.

Importancia: Media

Regla PLCopen: CP13

ejemplo 118. Ejemplo

El siguiente método Call está asignado al bloque de función FB_Test:

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

El programa PLC_PRG llamadas FB_Test:

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

Salida en el Mensajes vista:

  • sa_icon_message.png SA0160: Llamada recursiva detectada: 'PLC_PRG' -> 'FB_Test.Call' -> 'FB_Test.Call'