Skip to main content

Attributo: init_on_onlchange

Nessun codice di inizializzazione durante una rapida modifica online

Poiché la versione del compilatore >= 3.5.0.0, viene eseguita una "modifica rapida online" per modifiche minori. Durante una rapida modifica online, solo i POU modificati vengono compilati e scaricati. In particolare, non viene generato alcun codice di inizializzazione.

Per le variabili con il init_on_onlchange attributo, questo si traduce anche in NO codice di inizializzazione generato. Nei soliti scenari, ciò non ha alcun impatto perché l'attributo viene solitamente utilizzato per inizializzare le variabili con gli indirizzi. Tuttavia, durante un rapido cambiamento online, non può accadere che una variabile cambi indirizzo.

Tuttavia, per assicurarsi dell'impatto del init_on_onlchange l'attributo viene applicato nell'intero codice dell'applicazione, in generale per l'applicazione è possibile utilizzare l' no_fast_online_change compiler define per disabilitare la modifica rapida online. Per fare ciò, selezionare l'oggetto dell'applicazione nell'albero dei dispositivi e fare clic su Proprietà nel menu contestuale. Sotto il Costruire scheda, aggiungere il no_fast_online_change definizione del compilatore.

Per ulteriori informazioni, vedere: Costruire

L'effetto di questo pragma è che la variabile a cui viene applicato il pragma viene inizializzata ad ogni modifica online.

Sintassi:

{attribute 'init_on_onlchange' }

Inserisci posizione: la riga sopra la riga con la dichiarazione delle variabili.

Esempio 273. Esempio
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;