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:
- Erweitern eines Funktionsbausteins (Erweitern eines Funktionsbausteins)
- Implementieren von Schnittstellen (Implementieren einer Schnittstelle)
- Methoden (Objekt Methode)
- Eigenschaften (Objekt Eigenschaft)
Die oberste Zeile des Deklarationsteils enthält folgende Deklaration:
FUNCTION_BLOCK <access specifier> <function block> | EXTENDS <function block> | IMPLEMENTS <comma-separated list of interfaces>
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.
- 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.
- 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:
- Dokumentation TC3 User Interface: Befehl Schnittstellen implementieren
- Implementieren einer Schnittstelle: Implementieren einer Schnittstelle
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>
- Sie können von außerhalb der Funktionsbaustein-Instanz nur auf Eingabe- und Ausgabevariablen eines Funktionsbausteins zugreifen, nicht auf die internen Variablen.
- Der Zugriff auf eine Funktionsbaustein-Instanz ist auf die POU 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:
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:
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;
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=> ). |
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. |