Atributo: init_on_onlchange
Sin código de inicialización durante un cambio rápido en línea
Desde la versión del compilador >= 3.5.0.0, se realiza un "cambio rápido en línea" para cambios menores. Durante un cambio en línea rápido, solo se compilan y descargan las POU modificadas. En particular, no se genera ningún código de inicialización.
Para variables con la init_on_onlchange atributo, esto también resulta en No código de inicialización que se está generando. En los escenarios habituales, eso no tiene impacto porque el atributo generalmente se usa para inicializar variables con direcciones. Sin embargo, durante un cambio rápido en línea, no puede suceder que una variable cambie su dirección.
Sin embargo, para asegurarse del impacto de la init_on_onlchange atributo se aplica en todo el código de la aplicación, en general para la aplicación se puede utilizar el no_fast_online_change el compilador define para deshabilitar el cambio rápido en línea. Para hacer esto, seleccione su objeto de aplicación en el árbol de dispositivos y haga clic en Propiedades en el menú contextual. Bajo el Construir pestaña, agregue el no_fast_online_change definición del compilador.
Para más información, ver: Construir
El efecto de este pragma es que la variable a la que se aplica el pragma se inicializa con cada cambio en línea.
Sintaxis:
{attribute 'init_on_onlchange' }
Insertar ubicación: La línea arriba de la línea con la declaración de las variables.
VAR_GLOBAL    
    {attribute 'init_on_onlchange'}    
    g_fastOnlineChange : BOOL := FALSE;
END_VAR
{attribute 'call_after_online_change_slot' := '4567'}
FUNCTION FUNC_OnlineChangeDetection : BOOL
VAR_INPUT
END_VAR
VAR
END_VAR 
IF GVL_OnlineChangeDetection.g_fastOnlineChange THEN    
    // here you know that you are inside a FastOnlineChange
END_IF
// reset for next detection
GVL_OnlineChangeDetection.g_fastOnlineChange := TRUE;