Ein Funktionsbaustein ist eine POU, die bei der Ausführung einen oder mehrere Werte liefert.
Sie fügen das Objekt der Applikation oder dem Projekt über den Befehl „Projekt Objekt hinzufügen POU“ hinzu. Im Gerätebaum oder in der Ansicht „POUs“ haben Funktionsbaustein-POUs das Suffix „(FB)“.
Sie rufen einen Funktionsbaustein immer über eine Instanz auf, die eine Kopie des Funktionsbausteins ist.
Der Editor eines Funktionsbausteins besteht aus dem Deklarationsteil und dem Implementierungsteil.
Die Werte der Ausgabevariablen und der internen Variablen bleiben nach einer Ausführung bis zur nächsten erhalten. Dies bedeutet, dass der Funktionsbaustein bei mehrmaligem Aufruf mit denselben Eingabevariablen nicht unbedingt dieselben Ausgabewerte liefert.
Zusätzlich zu der in der IEC 61131-3 beschriebenen Funktionalität können Sie Funktionsbausteine in CODESYS auch für folgende Funktionalitäten der objektorientierten Programmierung verwenden:
-
Erweitern eines Funktionsbausteins
-
Implementieren von Schnittstellen
-
Methoden
-
Eigenschaften
Die oberste Zeile des Deklarationsteils enthält folgende Deklaration:
FUNCTION_BLOCK <access specifier> <function block> | EXTENDS <function block> | IMPLEMENTS <comma-separated list of interfaces>
Einen Funktionsbaustein aufrufen
Der Aufruf erfolgt immer über eine Instanz des Funktionsbausteins. Beim Aufruf eines Funktionsbausteins ändern sich nur die Werte der jeweiligen Instanz
Deklaration der Instanz:
<instance> : <function block>;
Auf eine Variable des Funktionsbausteins greifen Sie im Implementierungsteil wie folgt zu:
<instance> . <variable>




HINWEIS

Beachten Sie Folgendes:
-
Sie können nur auf Eingabe- und Ausgabevariablen eines Funktionsbausteins von außerhalb der Funktionsbaustein-Instanz zugreifen, nicht auf die internen Variablen.
-
Der Zugriff auf eine Funktionsbaustein-Instanz ist auf den Baustein begrenzt, in der die Instanz deklariert ist, außer Sie haben die Instanz global deklariert.
-
Sie können beim Aufruf der Instanz den Funktionsbausteinvariablen die gewünschten Werte zuweisen.
Beispiel
Zugriff auf Funktionsbausteinvariablen:
Der Funktionsbaustein FB1
hat die Eingabevariable iVar1
vom Typ INT
und die Ausgabevariable out1
. Im Folgenden wird die Variable iVar1
aus dem Programm Prog
aufgerufen.
PROGRAM Prog VAR inst1 : FB1; END_VAR inst1.iVar1 := 33; (* FB1 is called and the value 33 is assigned to the variable iVar1 *) inst1(); (* FB1 is called, that's necessary for the following access to the output variable *) ires := inst1.out1 (* the output variable out1 of the FB1 is read *)
In FUP:

Variablenwerte beim Aufruf zuweisen:
In den textuellen Sprachen AWL und ST können Sie Werte beim Aufruf des Funktionsbausteins direkt an Eingabe- und/oder Ausgabevariablen zuweisen.
Die Zuweisung eines Werts an einen Eingabevariable erfolgt mit :=
.
Die Zuweisung eines Wert an eine Ausgabevariable erfolgt mit =>
.
Beispiel
Die Instanz CMD_TMR
des Timer-Funktionsbausteins wird mit Zuweisungen für die Eingabevariable IN
und PT
aufgerufen. Anschließend wird die Ausgabevariable Q
des Timers der Variablen A
zugewiesen
PROGRAM PLC_PRG VAR CMD_TMR : TOF; END_VAR CMD_TMR(IN := %IX5.1, PT := T#100MS); A := CMD_TMR.Q;
Wenn Sie eine Funktionsbaustein-Instanz über die „Eingabehilfe“ einfügen und im Dialog „Eingabehilfe“ die Option „Mit Argumenten einfügen“ aktiviert ist, fügt CODESYS den Aufruf mit allen Eingabe- und Ausgabevariablen ein. Sie müssen dann nur die gewünschten
Wertzuweisung einfügen. Im obigen Beispiel fügt CODESYS den Aufruf wie folgt ein: CMD_TMR (IN:= ,PT:= , Q=> )
.
Mit Hilfe des Attributs 'is_connected'
auf einer lokalen Variablen können Sie zur Zeit des Aufrufs in der Funktionsbaustein-Instanz
feststellen, ob ein bestimmter Eingang eine Zuweisung von außen erhält.