SA0167: Instancias de bloques de funciones temporales
La comprobación detecta instancias de bloques de funciones que se declaran como variables temporales. Esto afecta a las instancias que se declaran en un método o función o como VAR_TEMP, y por lo tanto se reinicializan en cada ciclo de procesamiento o para cada llamada de POU.
Justificación:
Los bloques de funciones tienen un estado que normalmente se mantiene durante múltiples ciclos del PLC. Una instancia en la pila existe solo mientras dura la llamada a la función. Por lo tanto, rara vez tiene sentido crear una instancia como variable temporal.
En segundo lugar, las instancias de bloques de funciones suelen ser grandes y necesitan mucho espacio en la pila (que normalmente está restringido a los controladores).
En tercer lugar, la inicialización y, a menudo, también la programación de un bloque de funciones puede llevar mucho tiempo.
Importancia: Media
PROGRAM PLC_PRG
VAR
END_VAR
VAR_TEMP
yafb: AFB;
END_VARFUNCTION Fun : INT
VAR_INPUT
END_VAR
VAR
funafb: AFB;
END_VAR
METHOD METH : INT
VAR_INPUT
END_VAR
VAR
methafb: AFB; // SA0167
END_VARSalida en el Mensajes vista:
SA0167: Instancia de bloque de función temporal: 'methafb'