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