Attribut: call_after_init
Wichtig
VAR_INPUT-Deklarationen in Funktionen oder Methoden, die dieses Attribut verwenden, führen zu Übersetzungsfehlern. Grund: Eingabevariablen sind in diesem Fall zum Zeitpunkt des Aufrufs, der implizit während des Online-Change erfolgt, nicht bekannt.
Wichtig
Funktionen, die mit diesem Attribut gekennzeichnet sind, werden nur ausgeführt, wenn sie kompiliert und auf die Steuerung heruntergeladen wurden.
Wenn Ihre Funktion an keiner anderen Stelle in Ihrem Projekt aufgerufen wird, kann der Compiler die Funktion aus dem Build ausschließen. Um sicherzustellen, dass die Funktion immer kompiliert und zur Ausführung verfügbar ist, fügen Sie der Funktionsdeklaration das Pragma {attribute 'linkalways'} hinzu.
Alternativ dazu, können Sie im Eigenschaftendialog der Funktion in der Registerkarte Build die Option Immer binden aktivieren.
Ohne diese Option wird Ihre Initialisierungsfunktion möglicherweise nicht ausgeführt, obwohl sie ordnungsgemäß konfiguriert zu sein scheint.
Anmerkung
Diese Funktionalität wird ab Compilerversion 3.4.1.0 unterstützt.
Das Pragma bewirkt, dass eine Methode implizit nach der Initialisierung einer Funktionsbaustein-Instanz aufgerufen wird. Aus Performanzgründen müssen Sie das Attribut sowohl dem Funktionsbaustein als auch der Methode in einer eigenen ersten Zeile über dem Deklarationsteil hinzufügen.
Eine Methode mit diesem Pragma wird nach der Methode FB_Init und nachdem die Variablenwerte eines Initialisierungsausdrucks in der Instanzdeklaration gültig wurden, aufgerufen
Syntax:
{attribute 'call_after_init'}
Aufruf: Erste Zeile über dem Deklarationsteil der Methode und des Funktionsbausteins.
Definition
{attribute 'call_after_init'}
FUNCTION_BLOCK FB_DoIt
... <functionblock definition>
{attribute 'call_after_init'}
METHOD FB_AfterInit
... <method definition>Die Deklaration setzt folgende Deklaration in die nachfolgende Codeabarbeitung um:
fbDoIt : FB_DoIt := (in1 := 99);
Codeabarbeitung
fbDoIt.FB_Init(); fbDoIt.in1 := 99; fbDoIt.FB_AfterInit();
So kann in FB_AfterInit auf die benutzerdefinierte Initialisierung reagiert werden.