Attribut : call_after_init
Important
VAR_INPUT les déclarations dans les fonctions ou les méthodes qui utilisent cet attribut conduisent à des erreurs de compilation. Raison : Les variables d'entrée sont dans ce cas inconnues au moment de l'appel, qui se produit implicitement lors du changement en ligne.
Important
Les fonctions marquées avec cet attribut ne seront exécutées que si elles ont été compilées et téléchargées sur le contrôleur.
Si votre fonction n'est appelée nulle part ailleurs dans votre projet, le compilateur peut exclure la fonction de la compilation. Pour vous assurer que la fonction est toujours compilée et disponible pour l'exécution, ajoutez le pragma {attribute 'linkalways'} à la déclaration de fonction.
Vous pouvez également activer le Lien toujours option dans la boîte de dialogue des propriétés de la fonction sur le Construisez onglet.
Sans cette option, votre fonction d'initialisation risque de ne pas fonctionner, même si elle semble être correctement configurée.
Note
Cette fonctionnalité est prise en charge à partir de la version 3.4.1.0 du compilateur.
L'effet de ce pragma est qu'une méthode est appelée implicitement après l'initialisation d'une instance de bloc fonction. Pour des raisons de performances, vous devez ajouter l'attribut à la fois au bloc fonction et à la méthode dans sa propre première ligne au-dessus de la partie déclaration.
Une méthode avec ce pragma est appelée après le FB_Init méthode et après que la valeur de la variable d'une expression d'initialisation a été valide dans la déclaration d'instance.
Syntaxe:
{attribute 'call_after_init'}
Appel : première ligne au-dessus de la partie déclaration de la méthode et du bloc fonction
Définition
{attribute 'call_after_init'}
FUNCTION_BLOCK FB_DoIt
... <functionblock definition>
{attribute 'call_after_init'}
METHOD FB_AfterInit
... <method definition>La déclaration implémente la déclaration suivante dans le traitement de code suivant :
fbDoIt : FB_DoIt := (in1 := 99);
Traitement des codes
fbDoIt.FB_Init(); fbDoIt.in1 := 99; fbDoIt.FB_AfterInit();
Ceci permet une réaction à l'initialisation définie par l'utilisateur dans FB_AfterInit.