Skip to main content

Objekt: Funktionsbaustein

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:

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>

Wichtig

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 512. 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:

_cds_img_fb_call_fup.png


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 513. 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;


Tipp

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=> ).

Tipp

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.