Skip to main content

Atributo: call_after_init

Importante

VAR_INPUT las declaraciones en funciones o métodos que usan este atributo conducen a errores de compilación. Motivo: las variables de entrada son desconocidas en este caso en el momento de la llamada, lo que ocurre implícitamente durante el cambio en línea.

Importante

Las funciones marcadas con este atributo se ejecutarán solo si se han compilado y descargado en el controlador.

Si tu función no se llama en ningún otro lugar del proyecto, el compilador puede excluirla de la compilación. Para asegurarte de que la función esté siempre compilada y disponible para su ejecución, agrega el pragma {attribute 'linkalways'} a la declaración de la función.

Como alternativa, también puede habilitar la Enlaza siempre opción en el cuadro de diálogo de propiedades de la función en Construir pestaña.

Sin esta opción, es posible que la función de inicialización no se ejecute, aunque parezca estar configurada correctamente.

Nota

Esta funcionalidad es compatible con la versión del compilador 3.4.1.0.

El efecto de este pragma es que se llama implícitamente a un método después de la inicialización de una instancia de bloque de funciones. Por razones de rendimiento, debe agregar el atributo tanto al bloque de funciones como al método en su propia primera línea sobre la parte de la declaración.

Un método con este pragma se llama después de la FB_Init y después de que el valor de la variable de una expresión de inicialización haya sido válido en la declaración de la instancia.

Sintaxis:

{attribute 'call_after_init'}

Llamada: primera línea sobre la parte de declaración del método y el bloque de función

ejemplo 259. Ejemplo

Definición

{attribute 'call_after_init'}
FUNCTION_BLOCK FB_DoIt
... <functionblock definition>

{attribute 'call_after_init'}
METHOD FB_AfterInit
... <method definition>

La declaración implementa la siguiente declaración en el procesamiento de código posterior:

fbDoIt : FB_DoIt := (in1 := 99);

Procesamiento de código

fbDoIt.FB_Init();
fbDoIt.in1 := 99;
fbDoIt.FB_AfterInit();

Esto permite una reacción a la inicialización definida por el usuario en FB_AfterInit.