Attribut 'initialize_on_call'

Das Pragma kann auf Eingangsvariablen angewendet werden. Es bewirkt, dass Eingangsvariablen eines Funktionsbausteins bei jedem Aufruf des Funktionsbausteins initialisiert werden. Wenn eine Eingangsvariable betroffen ist, die einen Pointer erwartet und dieser Pointer im Zuge eines Online-Change entfernt wurde, wird die Variable mit Null initialisiert.

Syntax: {attribute 'initialize_on_call'}

Einfügeort: Immer in der ersten Zeile im Deklarationsteil für den gesamten Funktionsbaustein und zusätzlich in einer Zeile oberhalb der Deklaration der einzelnen Eingangsvariablen

Beispiel:

Wenn ein Eingang einen Zeiger erwartet und dieser Eingang mit dem Attribut versehen ist, so wird dieser Zeiger bei jedem Aufruf des Funktionsbausteins neu initialisiert. Hierdurch kann verhindert werden, dass ein im Zuge eines Online-Change ungültig gewordener Zeiger verwendet wird.

{attribute 'initialize_on_call'}
FUNCTION_BLOCK FB_Test
VAR_INPUT
    {attribute 'initialize_on_call'}
    pSetpoint : POINTER TO LREAL := 0;
END_VAR
VAR_OUTPUT
END_VAR

Der Bausteinaufruf sollte mit Zuweisung des Zeigers geschehen.

fbTest(pSetpoint := ADR(fSetpoint));