Skip to main content

Attribut: init_on_onlchange

Kein Initialisierungscode bei schnellem Online-Change

Seit Compilerversion >= 3.5.0.0 wird für kleine Änderungen ein „schneller Online-Change“ durchgeführt. Bei schnellem Online-Change wird nur der jeweils geänderte Baustein übersetzt und nachgeladen. Insbesondere wird kein Initialisierungscode erzeugt.

Bei Variablen mit dem Attribut init_on_onlchange führt das ebenfalls dazu, dass kein Initialisierungscode erzeugt wird. In den üblichen Szenarien wird das keine Auswirkungen haben: Das Attribut wird üblicherweise verwendet, um Variablen mit Adressen zu initialisieren. Beim schnellen Online-Change kommt es jedoch nicht dazu, dass eine Variable ihre Adresse ändert.

Um dennoch die Wirkung des Attributs init_on_onlchange auf den gesamten Applikationscode sicherzustellen, können Sie generell für die Applikation den schnellen Online-Change mit Hilfe der Compiler-Define no_fast_online_change ausschalten. Selektieren Sie dafür im Gerätebaum Ihr Applikationsobjekt und wählen Sie den Kontextbefehl Eigenschaften. Fügen Sie dort unter der Registerkarte Build die Compiler-Define no_fast_online_change hinzu.

Für weitere Informationen siehe: Build

Das Pragma bewirkt, dass die Variable, auf die das Pragma angewendet wird, bei jedem Online-Change initialisiert wird.

Syntax:

{attribute 'init_on_onlchange' }

Einfügeort: Die Zeile oberhalb der Zeile mit der Deklaration der Variablen.

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