Objekt Funktionsbaustein

Ein Funktionsbaustein ist eine POU, die bei der Ausführung einen oder mehrere Werte liefert. 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.

Im SPS-Projektbaum haben Funktionsbaustein-POUs das Suffix (FB). Der Editor eines Funktionsbausteins besteht aus dem Deklarationsteil und dem Implementierungsteil.

Sie rufen einen Funktionsbaustein immer über eine Instanz auf, die eine Kopie des Funktionsbausteins ist.

Zusätzlich zu der in der IEC 61131-3 beschriebenen Funktionalität können Sie Funktionsbausteine in TwinCAT 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>

Objekt Funktionsbaustein 1:

8-Byte-Alignment

Mit TwinCAT 3 wurde ein 8-Byte-Alignment eingeführt. Achten Sie auf ein passendes Alignment, wenn Daten als gesamter Speicherblock mit anderen Steuerungen oder Softwarekomponenten ausgetauscht werden (siehe Alignment).

Automatisches Anlegen von Schnittstellenelementen in einem Funktionsbaustein

Es gibt zwei Möglichkeiten, wie Sie die Elemente einer Schnittstelle, die ein Funktionsbaustein implementiert, automatisch in diesem Funktionsbaustein erzeugen lassen können.

  1. Wenn Sie beim Anlegen eines neuen Funktionsbausteins in dem Feld Implementiert des Dialogs Hinzufügen eine Schnittstelle angeben, fügt TwinCAT diesem Funktionsbaustein auch automatisch die Methoden und Eigenschaften der Schnittstelle hinzu.
  2. Wenn ein bestehender Funktionsbaustein eine Schnittstelle implementiert, können Sie den Befehl Schnittstellen implementieren verwenden, um die Schnittstellenelemente in dem Funktionsbaustein erzeugen zu lassen. Den Befehl Schnittstellen implementieren finden Sie im Kontextmenü eines Funktionsbausteins im Projektbaum.

Siehe auch:

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>

Beispiel:

Der Funktionsbaustein FB_SampleA hat die Eingabevariable nVar1 vom Typ INT und die Ausgabevariable nOut1. Im Folgenden wird die Variable nVar1 aus dem Programm MAIN aufgerufen.

ST:

PROGRAM MAIN
VAR
    fbSampleA : FB_SampleA;
END_VAR
fbSampleA.nVar1 := 33; (* FB_SampleA is called and the value 33 is assigned to the variable nVar1 *)
fbSampleA(); (* FB_SampleA is called, that's necessary for the following access to the output variable *)
nRes := fbSampleA.nOut1 (* the output variable nOut1 of the FB1 is read *)

FUP:

Objekt Funktionsbaustein 2:

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 fbTimer des Timer-Funktionsbausteins wird mit Zuweisungen für die Eingabevariable IN und PT aufgerufen. Anschließend wird die Ausgabevariable Q des Timers der Variablen bVarA zugewiesen

PROGRAM MAIN
VAR
    fbTimer : TOF;
    bIn     : BOOL;
    bVarA   : BOOL;
END_VAR
fbTimer(IN := bIn, PT := t#300ms);
bVarA := fbTimer.Q;
Objekt Funktionsbaustein 3:

Wenn Sie eine Funktionsbaustein-Instanz über die Eingabehilfe einfügen und im Dialog Eingabehilfe die Option Mit Argumenten einfügen aktiviert ist, fügt TwinCAT den Aufruf mit allen Eingabe- und Ausgabevariablen ein. Sie müssen dann nur die gewünschten Wertzuweisungen einfügen. Im obigen Beispiel fügt TwinCAT den Aufruf wie folgt ein: CMD_TMR (IN:= , PT:= , Q=> ).

Objekt Funktionsbaustein 4:

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.