Funktionsbausteine FB oder SFB in S7

Funktionsbausteine FB oder Systemfunktionsbausteine SFB sind wie die Funktionen (FC, SFC) Unterprogramme. Sie können ebenfalls spezifische Teilaufgaben übernehmen und man behält so die Übersichtlichkeit über sein Programm. Es gibt jedoch Unterschiede zwischen Funktionen und Funktionsbausteine.

FB's besitzen eine Gedächtnisfunktion. Während in FC's die Daten, die in TEMP deklariert werden, nur für den Bausteinaufruf gültig sind, besitzen FB's zusätzlich den bausteininternen Variablentypen STAT. Die hier abgelegten Daten sind auch außerhalb des Bausteinaufrufs gültig. So kann man z.B. die Umgebungstemperatur, Prüfwerte etc. in diesen Datenbereich ablegen und jederzeit auslesen. Ansonsten haben FB's genauso wie Funktionen die Deklarationstypen für lokale Variablen IN, OUT und IN_OUT. FB's werden immer dann benutzt, wenn ein speicherndes Verhalten der bausteininternen Variablen benötigt wird.

Die Variablendeklaration in FB's erfolgt genauso wie beim FC, nur mit dem Unterschied dass hier der Deklarationstyp STAT hinzugekommen ist. Bei Graph ist die Sache etwas anders. Da Schrittkettenprogramme in Graph anders aufgebaut sind, befindet sich der Deklarationsteil an einer anderen Stelle. Hinzu kommt, dass im Deklarationsteil einer Schrittkette bereits viele vordefinierte Variablen vom Deklarationstyp IN, OUT und STAT vorhanden sind. Eine Übersicht über die bereits vorhandenen Variablen finden Sie unter Variablen in Graph.

Variablendeklaration
Variablendeklaration in Graph

Man kann zusätzlich noch eigene Variablen definieren und diese auch mit Anfangswerten versehen. Die Möglichkeit, Variablen mit Anfangswerten zu versehen ist optional und bei FC's gibt es diese Möglichkeit nicht.

Es gibt aber noch weitere Unterschiede zwischen FC's und FB's. Beim Aufruf von einem FC müssen den deklarierten Variablen vom Deklarationstyp IN, OUT und IN_OUT entsprechende Operanden oder andere Variablen zugewiesen werden. Bei FB's können sie zugewiesen werden, müssen es jedoch nicht. Wenn die Zuweisung nicht erfolgt, werden genau die hier vorgegebenen Anfangswerte benutzt.

Instanzdatenbaustein für ein FB

Beim Aufruf eines FB's muss ein Instanzdatenbaustein (z.B. DB1) angegeben werden. So wird dem FB beim Aufruf ein interner Speicherbereich zugewiesen, in dem Daten abgelegt werden können. Das Besondere dabei ist, dass dem FB für jeden Aufruf ein anderer Datenbaustein angegeben werden kann. So kann der FB mehrmals benutzt und bei jedem Aufruf mit unterschiedlichen Daten versorgt werden.