Was sind Funktionsblöcke?
Die Aufgabe von einem Funktionsblock ist die Kapselung der Daten und der Algorithmen. Der Algorithmus definiert wie die Eingangsdaten zu den Ausgangsdaten unter Berücksichtigung der lokalen Daten verarbeitet werden sollen. Ein einzelner Funktionsblock oder eine Anordnung von Funktionsblöcken bildet dabei das Automatisierungsprogramm.
Der Funktionsblock stellt eine Komponente der Anlagensoftware dar. Eine Komponente ist ein Modell, das vom Hardware-Design übernommen worden ist: Eine Komponente wird einmal definiert und kann dann in unterschiedlichen Anwendungen immer wieder eingesetzt werden.
Bei einem Funktionsblock werden darum zwei Paradigmen unterschieden: Die Typendeklaration und die Instanz. Bei der Typendeklaration werden die Schnittstellen und Algorithmen des Funktionsblockes beschrieben. Zu den Schnittstellen gehören die Grösse und Bedeutung der Ein- und Ausgangsdaten. In einem Funktionsblock gibt es zusätzlich lokale Daten. Die Algorithmen beschreiben, wie aus den Eingangsdaten, unter Berücksichtigung der lokalen Daten die Ausgangsdaten bestimmt werden. Funktionsblock Typen werden in einer Bibliothek abgelegt, damit Sie später einfach eingesetzt werden können.
Bei Einsatz eines Funktionsblockes wird nun der Speicher für den lokalen Datensatz des Funktionsblocks reserviert, der Programmierer erzeugt eine Instanz. Ein Funktionsblock Typ, d.h. eine Beschreibung eines Funktionsblockes kann somit beliebig oft als Instanz erzeugt werden, indem jedes Mal ein neuer Speicher reserviert wird. Mit diesem Speicher und der Funktionsblock Typenbeschreibung ist die Instanz des Funktionsblockes eindeutig bezeichnet. Die Abbildung zeigt einen einfachen Funktionsblock PON (Puls ON) der zweimal instanziert wird.

Struktur der Funktionsblöcke
Funktionsblöcke sind nicht zu verwechseln mit Funktionen oder Prozeduren, wie Sie aus der Programmierung bekannt sind. Funktionen und Prozeduren haben keinen lokalen Speicher, d.h. wenn eine Prozedur verlassen wird, wird dem Betriebssystem auch aller Speicher für Daten zurückgegeben und es bleiben keine Daten über die Lebensdauer einer Prozedur hinaus bestehen. Ein Funktionsblock kann am besten noch mit einem Objekt der modernen Softwaretechnologie verglichen werden. Doch ein Funktionsblock kann in der Regel seine Eigenschaften nicht vererben um neue Funktionsblocktypen zu erstellen und somit gibt es auch keine Klassenstrukturen. Die Tabelle 1 fasst diese Unterschiede etwas zusammen.
Vergleich der Funktionsblöcke mit Software-Objekten
Eigenschaft |
Objekte |
Funktionsblöcke |
Kapselung der Daten |
Ja, Objekte können auch Instanzen von anderen Objekten enthalten. |
Ja, Funktionsblöcke können auch Instanzen von anderen Funktionsblöcken enthalten. |
Externe Schnittstellen |
Ja |
Ja, es wird nicht zwischen privaten und offenen Schnittstellen unterschieden. |
Aufruf |
Objekte haben Methoden mit Argumenten und Rückgabewerte. |
Funktionsblöcke haben Ein- und Ausgabe Daten und Ereignisse. |
Vererbung |
Ja |
In IEC 61499 ist keine Vererbung vorgesehen. |
Polymorphismus |
Ja |
Ein spezielles Adapterkonzept in IEC 61499 erlaubt Funktionsblöcke gemeinsame Schnittstellen zu teilen. |
Instanzierung |
Objektklassen und Funktionsblock Typen sind vergleichbare Konstrukte. |
Funktionsblock Instanzen werden von Funktionsblock Typen abgeleitet. |