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_VAR
FUNCTION Fun : INT VAR_INPUT END_VAR VAR funafb: AFB; END_VAR
METHOD METH : INT VAR_INPUT END_VAR VAR methafb: AFB; // SA0167 END_VAR
Salida en el Mensajes vista:
SA0167: Instancia de bloque de función temporal: 'methafb'