Funktionsbausteine werden über eine Funktionsbausteininstanz aufgerufen. Die Instanz eines Funktionsbausteins muss lokal oder global deklariert werden. Im Kapitel Funktionsbausteininstanz erfahren Sie, wie diese zu deklarieren ist.
Auf die gewünschte Funktionsbausteinvariable kann anschließend gemäß der folgenden Syntax zugegriffen werden:
Von außerhalb der Funktionsbausteininstanz kann nur auf die Ein- und Ausgangsvariablen eines Funktionsbausteins, nicht jedoch auf die internen Variablen zugegriffen werden.
Der Zugriff auf eine Funktionsbausteininstanz ist auf die POU begrenzt, in der sie deklariert ist, außer sie ist global deklariert.
Beim Aufruf der Instanz können den Funktionsbausteinparametern die gewünschten Werte zugewiesen werden. Siehe folgenden Abschnitt Zuweisung von Parametern beim Aufruf.
Die Ein-/Ausgangsvariablen (VAR_IN_OUT
) eines Funktionsbausteins werden als Zeiger übergeben.
In AS können Funktionsbausteinaufrufe nur in Schritten erfolgen.
Der Name einer Funktionsbausteininstanz kann als Eingabeparameter für eine Funktion oder einen anderen Funktionsbaustein verwendet werden.
Alle Werte eines Funktionsbausteins bleiben bis zur nächsten Ausführung des Bausteins erhalten. Deshalb liefern Funktionsbausteinaufrufe nicht immer dieselben Ausgabewerte, auch wenn identische Argumente verwendet werden.
Annahme: Der Funktionsbaustein fb
hat eine Eingangsvariable in1
vom Typ INT. Im Folgenden wird der Aufruf dieser Variablen aus dem Programm prog
dargestellt. Siehe Deklaration und Implementierung in ST:
PROGRAM prog
VAR
inst1:fb;
END_VAR
inst1.in1:=22; (* fb is called and input variable in1 gets assigned value 22 *)
inst1(); (* fb is called, this is needed for the following access on the output variable *)
res:=inst1.outl; (* output variable of fb is read *)
Beispiel für einen Funktionsbausteinaufruf in FBD:
In den textuellen Sprachen AWL und ST können Eingabe- und/oder Ausgabeparameter direkt beim Aufruf des Funktionsbausteins festgelegt werden. Die Werte können den Parametern innerhalb einer Klammer direkt nach dem Instanznamen des Funktionsbausteins zugewiesen werden. Für Eingabeparameter wird die Zuweisung mit :=
angegeben, wie bei der Initialisierung von Variablen im Deklarationsteil. Für Ausgabeparameter wird =>
verwendet.
In diesem Beispiel wird ein Timer-Funktionsbaustein (Instanz CMD_TMR
) mit Zuweisungen für die Parameter IN
und PT
aufgerufen. Anschließend wird die Ergebnisvariable Q
der Variablen A
zugewiesen. Die Ergebnisvariable wird mit dem Namen der Funktionsbausteininstanz, gefolgt von einem Punkt und dem Variablennamen angesprochen:
CMD_TMR(IN := %IX5, PT := T#100MS);
A:=CMD_TMR.Q;
Wenn die Instanz über die
mit der Option im Implementierungsfenster einer ST- oder AWL-POU eingefügt wird, wird sie automatisch gemäß der im folgenden Beispiel beschriebenen Syntax mit allen Parametern dargestellt. Sie können diese Parameter dann zuweisen, das ist allerdings nicht erforderlich.Für das oben beschriebene Beispiel würde der Aufruf dann folgendermaßen dargestellt:
CMD_TMR(in:=, pt:=, q=>)
-> fill in, e.g.:
CMD_TMR(in:=bvar, pt:=t#200ms, q=>bres);