# ⚖️ Unterschied zwischen IEC 61131-3 und IEC 61499 Die Normen **IEC 61131-3** und **IEC 61499** definieren beide Standards für die Programmierung von industriellen Steuerungssystemen, verfolgen jedoch unterschiedliche Ansätze in Bezug auf Architektur und Ausführung. ## 1. Architekturmodell ### IEC 61131-3: Zentrale Steuerung Die IEC 61131-3 wurde primär für **speicherprogrammierbare Steuerungen (SPS)** entwickelt. Das Modell geht von einer zentralen Recheneinheit aus, die ein Programm ausführt. * **Struktur:** Konfiguration -> Ressource -> Task -> Programm -> Funktionsbausteine/Funktionen. * **Fokus:** Ein einzelnes Gerät steuert einen Prozess. ### IEC 61499: Verteilte Systeme Die IEC 61499 erweitert die Konzepte der IEC 61131-3 für **verteilte Systeme**. Eine Applikation kann auf mehrere Geräte (Devices) und Ressourcen verteilt werden, ohne dass die Funktionalität neu programmiert werden muss. * **Struktur:** System -> Gerät -> Ressource -> Applikation -> Funktionsbausteine. * **Fokus:** Funktionale Einheiten (Software-Bausteine) kommunizieren über Ereignisse und Daten, unabhängig davon, auf welcher Hardware sie laufen. ## 2. Ausführungsmodell Der wohl wichtigste Unterschied liegt in der Art und Weise, wie Code ausgeführt wird. ### IEC 61131-3: Zyklisch (Scan-basiert) In der klassischen SPS-Welt folgt die Ausführung meist einem starren Zyklus: 1. **Eingänge lesen:** Alle physikalischen Eingänge werden in das Prozessabbild eingelesen. 2. **Programm ausführen:** Der Code wird von oben nach unten (oder nach Task-Priorität) abgearbeitet. 3. **Ausgänge schreiben:** Die berechneten Werte werden auf die physikalischen Ausgänge geschrieben. Dieser Zyklus wiederholt sich ständig (z. B. alle 10 ms). Ein Funktionsbaustein wird in jedem Zyklus aufgerufen, unabhängig davon, ob sich seine Eingangsdaten geändert haben. ### IEC 61499: Ereignisgesteuert (Event-driven) Die Ausführung in IEC 61499 basiert auf **Ereignissen (Events)**. * Ein Funktionsbaustein tut **nichts**, solange kein Ereignis an einem seiner Ereignis-Eingänge (Event Inputs) eintrifft. * Wenn ein Ereignis eintrifft (z. B. `REQ` für Request), wird der Baustein "geweckt". * Die **Ausführungssteuerung (ECC)** entscheidet dann, welche Algorithmen ausgeführt und welche Ausgangs-Ereignisse (z. B. `CNF` für Confirmation) gefeuert werden. * Es gibt keinen globalen Zyklus; die Ausführungskette wird durch den Fluss von Ereignissen bestimmt. ## 3. Funktionsbausteine im Vergleich | Merkmal | IEC 61131-3 FB | IEC 61499 FB | | :--- | :--- | :--- | | **Schnittstelle** | Nur Daten (VAR_INPUT, VAR_OUTPUT) | Ereignisse (Events) und Daten | | **Ausführung** | Wird durch den Aufruf im Programm (Zyklus) getriggert | Wird durch eingehende Ereignisse getriggert | | **Interne Logik** | Code-Rumpf (in ST, KOP, FBS, etc.) | Explizite Zustandsmaschine (**ECC**) oder verschaltetes Netzwerk | | **Datensynchronisation**| Implizit (beim Aufruf) | Explizit durch **WITH-Qualifier** (verbindet Daten mit Ereignissen) | ## Zusammenfassung * Nutzen Sie **IEC 61131-3**, wenn Sie eine einzelne SPS programmieren und eine zyklische, deterministische Abarbeitung benötigen. * Nutzen Sie **IEC 61499**, wenn Sie verteilte Systeme entwerfen, komponentenbasierte Softwarekapselung benötigen oder ereignisgesteuerte Prozesse abbilden wollen.