Navigation:  SPS > Programm >

Funktionsbausteine

Vorherige SeiteKapitelübersichtNächste Seite

 

1        Aufgabe

Funktionsbausteine gleichen in vielem den Funktionen. Der Unterschied zwischen diesen beiden besteht darin, dass beim Aufruf eines Funktionsbausteines (fast) immer ein Datenbaustein angegeben wird, in dem die Daten stehen, mit denen der Baustein arbeiten soll. Dieser Datenbaustein wird Instanz-Datenbaustein genannt. Seine Struktur wird bei der Programmierung des FB’s festgelegt und auf seine Daten kann innerhalb des FB’s besonders komfortabel zugegriffen werden.

 

In Funktionsbausteinen gibt es eine weitere Art von Variablen: die statischen Variablen. Diese Variablen behalten von einem Aufruf des Funktionsbausteines zum Nächsten ihren Wert.

 

2        Instanz-Datenbaustein-Modell

Nachdem Sie die Parameter und Variablen eines Funktionsbaustein deklariert haben und den Baustein programmiert haben, müssen Sie ihn irgendwo aufrufen, sonst wird er ja nicht bearbeitet. Wenn Sie den Aufruf programmieren, müssen Sie eine Datenbaustein-Nummer angeben. Das Entwicklungssystem wird nun einen Datenbaustein mit dieser Nummer erzeugen und ihn genauso groß machen, dass alle Parameter und (statischen) Variablen darin Platz finden. Auch die Namen, Datentypen und die Kommentare werden aus dem Deklarationsteil des Funktionsbausteins übernommen. Die Werte der Datenwörter (-bits, ‑bytes, ‑doppelwörter) werden bei der Erzeugung auf die im Kopf des Funktionsbausteines angegebenen Anfangswerte gesetzt.

 

Bei der Programmbearbeitung wird dieser Datenbaustein automatisch aufgeschlagen, wenn der Funktionsbaustein aufgerufen wird. Er ist jetzt der Instanz-Datenbaustein. Die Werte der Aktual-Operanden die als In- oder In‑Out-Parameter deklariert sind, werden in den Datenbaustein kopiert. Alle Schreib- und Lesezugriffe im Funktionsbaustein, die Sie unter Verwendung der Parameternamen programmiert haben, beziehen sich jetzt auf die Daten im Instanz-Datenbaustein. Bei der Rückkehr zum aufrufenden Baustein werden die In-Out- und die Out-Parameter vom Instanz-Datenbaustein in die angeschlossenen Operanden kopiert.

  Der Nutzen dieses Verfahren wird dann ersichtlich, wenn man für den gleichen Funktionsbaustein mehrere Aufrufe programmiert und zwar mit verschiedenen Datenbausteinen. Jeder dieser DB wird dann nach der Maske des Funktionsbaustein-Kopfes erzeugt.

 

Ein Standardbeispiel für die Anwendung des Instanz-Datenbaustein-Modells ist ein Betriebszeitzähler für mehrere Motoren. Sie programmieren den Betriebszeitzähler in einem FB, in dessen Kopf Sie einen In-BOOL-Parameter mit der Bedeutung “Motor läuft” und eine Stat-INT-Variable mit der Bedeutung “Betriebsminuten” deklariert haben. Diesen FB rufen Sie dann für Motor 1 mit dem DB 1, für Motor 2 mit DB 2 usw. auf. Bei jeder Bearbeitung des FB werden dann automatisch die dem Motor zugeordneten Daten bearbeitet.

 

 

Siehe auch: Lokale Instanz

 

 

3        Temporäre Variablen

Die temporären Variablen in Funktionsbausteinen werden genau wie die von Funktionen auf dem Stack gespeichert, sie sind nicht Bestandteil des Instanz-Datenbausteins.