Auf die Eingangs- und Ausgangsvariablen eines Funktionsbausteins kann von einer anderen POU aus zugegriffen werden, indem man eine Instanz des Funktionsbausteins einrichtet und die gewünschte Variable mit folgender Syntax angibt:⮫ „Funktionsbaustein-Instanzen“:
<Instanzname>.<Variablenname>
Zuweisung von Parametern beim Aufruf
Möchten Sie beim Aufruf des Funktionsbausteins Ein- und/oder Ausgangsparameter setzen, so können Sie dies in den unterstützten Textsprachen tun, indem Sie den Parametern nach dem Instanznamen des Funktionsbausteins in Klammern Werte zuweisen (für Eingangsparameter erfolgt diese Zuweisung mit ":=" wie bei der Initialisierung von Variablen an der Deklarationsstelle, für Ausgangsparameter ist "=>" zu verwenden)⮫ „Erklärung der Variablen“.
Beispiel
FBINST ist eine lokale Variable vom Typ eines Funktionsbausteins, die die Eingangsvariable xx und die Ausgangsvariable yy enthält. Wenn FBINST über den Eingabeassistenten in ein ST-Programm eingefügt wird, wird der Aufruf wie folgt angezeigt und kann dann mit den gewünschten Werten ergänzt werden: FBINST1(xx:= , yy=> );
InOutVariablen bei Aufruf:
Bitte beachten Sie, dass die InOutVariablen (VAR_IN_OUT) eines Funktionsbausteins als Zeiger übergeben werden. Aus diesem Grund können bei einem Aufruf eines Funktionsbausteins keine Konstanten an VAR_IN_OUTs zugewiesen werden und es gibt keinen lesenden oder schreibenden Zugriff von außen auf sie.
Beispiel
Aufruf einer VAR_IN_OUT-Variable inout1 des Funktionsbausteins fubo in einem ST-Modul:
VAR fuboinst:fubo; iVar1:int; END_VAR iVar1:=2; fuboinst(iInOut1:=iVar1);
in diesem Fall nicht zulässig: "fuboinst(iInOut1:=2);" oder "fuboinst.iInOut1:=2;"
Beispiele für den Aufruf des Funktionsbausteins FUB
Teil der Erklärung
FUNCTION_BLOCK FUB VAR_INPUT iPAR1:INT; iPAR2:INT; END_VAR VAR_OUTPUT iMELERG:INT; xVERGL:BOOL; END_VAR
Implementierungsteil in AWL
LD iPar1 MUL iPar2 ST iMulErg LD iPar1 EQ iPar2 ST xVergl
Das Ergebnis der Multiplikation wird in der Variablen ERG gespeichert, das Ergebnis des Vergleichs in QUAD. Eine Instanz von FUB mit dem Namen INSTANCE wird deklariert.
Beispiele für den Aufruf von FUB
Erklärung für alle Beispiele
PROGRAM AWLaufruf VAR xQuad : BOOL; fubinstanz : FUB; iErg: INT:=0; END_VAR
FUB in ST anrufen
PROGRAM STaufruf fubinstanz(iPar1:=5;iPar2:=5); bzw. fubinstanz; QUAD:=fubinstanz.xVergl; ERG:=funbinstanz.iMulErg;
Aufruf von FUB in FBD