Aufrufen eines Funktionsbausteins
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:
<Instanzname>.<Variablenname>
oVon außerhalb der Funktionsbausteininstanz kann nur auf die Ein- und Ausgangsvariablen eines Funktionsbausteins, nicht jedoch auf die internen Variablen zugegriffen werden.
oDer Zugriff auf eine Funktionsbausteininstanz ist auf die POU begrenzt, in der sie deklariert ist, außer sie ist global deklariert.
oBeim Aufruf der Instanz können den Funktionsbausteinparametern die gewünschten Werte zugewiesen werden. Siehe folgenden Abschnitt Zuweisung von Parametern beim Aufruf.
oDie Eingangs-/Ausgangsvariablen (VAR_IN_OUT) eines Funktionsbausteins werden als Zeiger übergeben.
oIn AS können Funktionsbausteinaufrufe nur in Schritten erfolgen.
oDer Name einer Funktionsbausteininstanz kann als Eingabeparameter für eine Funktion oder einen anderen Funktionsbaustein verwendet werden.
oAlle 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.
HINWEIS: Wenn mindestens eine der Funktionsbausteinvariablen eine remanente Variable ist, wird die gesamte Instanz im Bereich für Retain-Daten gespeichert.
Beispiele für Zugriffe auf Funktionsbausteinvariablen
Annahme: Funktionsbaustein fb hat eine Eingangsvariable in1 vom Typ INT. Im Folgenden wird der Aufruf dieser Variable aus dem Programm prog heraus 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:
Zuweisen von Parametern beim Aufruf
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, genauso wie bei der Initialisierung von Variablen im Deklarationsteil. Für Ausgabeparameter wird => verwendet.
Beispiel für einen Aufruf mit Zuweisungen
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 Variable A zugewiesen. Die Ergebnisvariable wird mit dem Namen der Funktionsbausteininstanz, gefolgt von einem Punkt und dem Variablennamen angesprochen:
CMD_TMR(IN := %IX5, PT := 300);
A:=CMD_TMR.Q
Beispiel für das Einfügen über die Eingabehilfe, mit Argumenten
Wenn die Instanz mit der Eingabehilfe und Option Mit Argumenten im Implementierungsfenster eines ST oder einer AWL-POU eingefügt wird, wird sie automatisch gemäß der unten beschriebenen Syntax mit allen Parametern dargestellt. Sie können dann, müssen aber nicht, diese Parameter zuweisen.
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);