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