# 🧩 Funktionsbausteine in IEC 61499 Die Norm IEC 61499 definiert ein Modell für verteilte industrielle Leitsysteme. Der zentrale Baustein dieses Modells ist der Funktionsbaustein (Function Block, FB). Im Gegensatz zur IEC 61131-3 kapselt ein FB in IEC 61499 nicht nur Daten und Algorithmen, sondern auch die **Steuerung seiner Ausführung**. ## Aufbau eines Funktionsbausteins Ein Funktionsbaustein besteht immer aus zwei Teilen: 1. **Schnittstelle (Interface):** Die "Hülle" des Bausteins. 2. **Rumpf (Body):** Das Innere des Bausteins (die Implementierung). ### Schnittstelle (Interface) Die Schnittstelle ist in zwei Bereiche unterteilt: * **Kopf (Head):** Hier befinden sich die **Ereignis-Eingänge** (Event Inputs) und **Ereignis-Ausgänge** (Event Outputs). * **Rumpf-Schnittstelle (Body Interface):** Hier befinden sich die **Daten-Eingänge** (Data Inputs) und **Daten-Ausgänge** (Data Outputs). **Wichtig:** Daten werden immer mit Ereignissen synchronisiert. Die Verbindung zwischen einem Ereignis und den zugehörigen Daten wird durch den **WITH-Qualifier** definiert. Das bedeutet: "Wenn Ereignis X eintritt, sind die Daten A und B gültig/aktualisiert." --- ## Typen von Funktionsbausteinen Es gibt drei Haupttypen von Funktionsbausteinen in IEC 61499: ### 1. Basis-Funktionsbaustein (Basic Function Block) Dies ist der elementare Baustein, in dem **Algorithmen** (Code in ST, C, etc.) ausgeführt werden. * Die Steuerung *wann* welcher Algorithmus ausgeführt wird, übernimmt eine **Zustandsmaschine**, das sogenannte **ECC** (siehe unten). * Er hat keinen internen parallelen Ablauf; er befindet sich immer in genau einem Zustand. ### 2. Zusammengesetzter Funktionsbaustein (Composite Function Block) Dieser Baustein enthält keine Algorithmen oder ECCs. Stattdessen besteht sein Rumpf aus einem **Netzwerk** von anderen Funktionsbausteinen (Basis- oder zusammengesetzte FBs), die miteinander verschaltet sind. Er dient zur Strukturierung und Kapselung komplexer Logik. ### 3. Dienstschnittstellen-Baustein (Service Interface Function Block - SIFB) Dieser Baustein stellt die Schnittstelle zur Hardware oder zum Betriebssystem dar. * Beispiele: Lesen/Schreiben von digitalen E/As, Netzwerkkommunikation (UDP/TCP), Zugriff auf Systemzeit. * Die interne Implementierung ist meist nicht in IEC 61499 sichtbar (Black Box). --- ## ⚙️ ECC (Execution Control Chart) Das **ECC (Execution Control Chart)**, auf Deutsch *Plan der Ausführungssteuerung*, ist das Herzstück eines jeden **Basis-Funktionsbausteins**. Es ist eine Zustandsmaschine, die steuert, wie der Baustein auf eingehende Ereignisse reagiert. Das ECC besteht aus drei Elementen: ### 1. EC-Zustände (EC States) Ein Zustand repräsentiert eine Situation, in der sich der Baustein befindet (z. B. `START`, `INIT`, `RUN`, `ERROR`). * Der Baustein ist immer in genau einem Zustand aktiv. * Jedem Zustand können eine oder mehrere **EC-Aktionen** zugeordnet sein. ### 2. EC-Transitionen (EC Transitions) Transitionen sind die Verbindungen zwischen den Zuständen. Sie definieren, wann der Baustein von einem Zustand in den nächsten wechselt. Eine Transition schaltet (feuert), wenn: * Das zugehörige **Ereignis** (Event Input) eintrifft (z. B. `REQ`). * **UND** eine optionale **Wächterbedingung** (Guard Condition) wahr ist (z. B. `x > 10`). *Beispiel:* `REQ [x > 10]` -> Wechsle den Zustand nur, wenn Ereignis `REQ` kommt UND `x` größer 10 ist. ### 3. EC-Aktionen (EC Actions) Aktionen werden ausgeführt, sobald ein Zustand aktiv wird. Eine Aktion besteht aus zwei Teilen (beide optional): 1. **Algorithmus:** Ein Stück Programmcode (z. B. in Strukturiertem Text), der Berechnungen durchführt. 2. **Ausgabe-Ereignis:** Ein Ereignis (Event Output), das nach Abarbeitung des Algorithmus nach außen gesendet wird (z. B. `CNF`). ### Ablauf im ECC 1. Der Baustein befindet sich in einem Zustand (z. B. `START`) und wartet. 2. Ein Ereignis trifft am Eingang ein. 3. Das ECC prüft alle vom aktuellen Zustand ausgehenden Transitionen. 4. Wenn eine Transition gültig ist (Ereignis passt + Bedingung wahr), wechselt das ECC in den neuen Zustand. 5. Im neuen Zustand werden nacheinander alle zugeordneten **Algorithmen** ausgeführt. 6. Danach werden die zugeordneten **Ausgabe-Ereignisse** gefeuert. 7. Das ECC wartet im neuen Zustand auf das nächste Ereignis.