Skip to main content

Attribut : init_on_onlchange

Pas de code d'initialisation lors d'un changement en ligne rapide

Depuis la version du compilateur >= 3.5.0.0, une "modification rapide en ligne" est effectuée pour les modifications mineures. Lors d'un changement en ligne rapide, seules les POU modifiées sont compilées et téléchargées. En particulier, aucun code d'initialisation n'est généré.

Pour les variables avec le init_on_onlchange attribut, cela se traduit également par Non code d'initialisation en cours de génération. Dans les scénarios habituels, cela n'a aucun impact car l'attribut est généralement utilisé pour initialiser des variables avec des adresses. Cependant, lors d'un changement en ligne rapide, il ne peut pas arriver qu'une variable change d'adresse.

Cependant, pour s'assurer de l'impact de la init_on_onlchange L'attribut est appliqué dans tout le code de l'application, en général pour l'application, vous pouvez utiliser l'attribut no_fast_online_change définition du compilateur pour désactiver le changement en ligne rapide. Pour ce faire, sélectionnez votre objet d'application dans l'arborescence des appareils et cliquez sur Propriétés dans le menu contextuel. Sous le Construire onglet, ajoutez le no_fast_online_change définition du compilateur.

Pour plus d'informations, consultez : Construire

L'effet de ce pragma est que la variable à laquelle le pragma est appliqué est initialisée à chaque changement en ligne.

Syntaxe:

{attribute 'init_on_onlchange' }

Emplacement d'insertion : La ligne au-dessus de la ligne avec la déclaration des variables.

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