sequence_E_05_loop
Einleitung
Der Funktionsblock sequence_E_05_loop implementiert eine zyklische Sequenz mit fünf Zuständen. Der Übergang zwischen den einzelnen Zuständen erfolgt ausschließlich über externe Ereignisse. Der Baustein ist für Anwendungen konzipiert, in denen ein Prozessschritt erst nach Abschluss eines vorherigen Schritts und dem Eintreffen eines spezifischen Freigabesignals beginnen darf. Die Sequenz kann von jedem Zustand aus in den initialen Startzustand zurückgesetzt werden.
Schnittstellenstruktur
Ereignis-Eingänge
START_S1: Wechselt vom Startzustand (START) in den ersten aktiven Zustand (State_01).S1_S2: Wechselt vonState_01zuState_02.S2_S3: Wechselt vonState_02zuState_03.S3_S4: Wechselt vonState_03zuState_04.S4_S5: Wechselt vonState_04zuState_05.S5_S1: Wechselt vonState_05zurück zuState_01(Zyklus).RESET: Setzt die Sequenz von jedem beliebigen Zustand in den initialen Startzustand (START) zurück.
Ereignis-Ausgänge
CNF: Allgemeines Bestätigungsereignis, das bei jedem Zustandswechsel ausgelöst wird. Es liefert die aktuelle Zustandsnummer (STATE_NR) mit.EO_S1: Wird beim Eintritt inState_01ausgelöst und liefert den zugehörigen DatenausgangDO_S1mit.EO_S2: Wird beim Eintritt inState_02ausgelöst und liefert den zugehörigen DatenausgangDO_S2mit.EO_S3: Wird beim Eintritt inState_03ausgelöst und liefert den zugehörigen DatenausgangDO_S3mit.EO_S4: Wird beim Eintritt inState_04ausgelöst und liefert den zugehörigen DatenausgangDO_S4mit.EO_S5: Wird beim Eintritt inState_05ausgelöst und liefert den zugehörigen DatenausgangDO_S5mit.
Daten-Eingänge
Dieser Funktionsblock besitzt keine Dateneingänge.
Daten-Ausgänge
STATE_NR(SINT): Gibt die Nummer des aktuell aktiven Zustands aus. Die Kodierung lautet: START = 0, State_01 = 1, State_02 = 2, …, State_05 = 5.DO_S1(BOOL): IstTRUE, wennState_01aktiv ist.DO_S2(BOOL): IstTRUE, wennState_02aktiv ist.DO_S3(BOOL): IstTRUE, wennState_03aktiv ist.DO_S4(BOOL): IstTRUE, wennState_04aktiv ist.DO_S5(BOOL): IstTRUE, wennState_05aktiv ist.
Adapter
Dieser Funktionsblock verwendet keine Adapter.
Funktionsweise
Der FB ist als Basic Function Block (BFB) mit einer Execution Control Chart (ECC) implementiert. Die interne Logik basiert auf sieben Zuständen: einem initialen Startzustand (xSTART), fünf aktiven Zuständen (sState_01 bis sState_05) und einem separaten Reset-Zustand (sRESET).
Bei Eintritt in einen aktiven Zustand werden drei Aktionen nacheinander ausgeführt:
Exit-Aktion des vorherigen Zustands: Der entsprechende
State_XX_X-Algorithmus setzt den zugehörigen Datenausgang (DO_Sx) aufFALSE.Confirmation-Aktion: Der
State_XX_C-Algorithmus setzt die ZustandsnummerSTATE_NRund löst dasCNF-Ereignis aus.Entry-Aktion des neuen Zustands: Der
State_XX_E-Algorithmus setzt den zugehörigen Datenausgang (DO_Sx) aufTRUEund löst das entsprechende EreignisEO_Sxaus.
Ein RESET-Ereignis führt in den sRESET-Zustand. Hier werden alle potenziell aktiven Ausgänge (DO_S1 bis DO_S5) über die jeweiligen Exit-Algorithmen deaktiviert, die Zustandsnummer auf 0 (START) gesetzt und ein CNF-Ereignis ausgelöst. Anschließend wechselt der FB automatisch (Bedingung = 1, also immer wahr) zurück in den initialen xSTART-Zustand.
Technische Besonderheiten
Ereignisgesteuerte Transitionen: Jeder Zustandsübergang muss explizit durch das entsprechende Eingangsereignis ausgelöst werden. Es gibt keine zeit- oder datengesteuerten automatischen Übergänge.
Entkoppelte Signale: Die booleschen Zustandsausgänge (
DO_Sx) und die zugehörigen Ereignisausgänge (EO_Sx) werden synchron gesetzt und ausgelöst. Dies erlaubt eine flexible Anbindung an nachfolgende Logik.Explizite Reset-Logik: Der Reset-Vorgang deaktiviert systematisch alle Ausgänge, bevor der Startzustand wiederhergestellt wird, was ein sauberes und definiertes Verhalten gewährleistet.
Konstanten für Zustandsnummern: Die Zustandsnummern werden über den importierten Namensraum
sequence::(z.B.sequence::State_01) zugewiesen, was die Wartbarkeit und Lesbarkeit des Codes erhöht.
Zustandsübersicht
Die ECC besteht aus folgenden Zuständen und möglichen Übergängen:
xSTART: Initialer, inaktiver Zustand. Übergang zu
sState_01viaSTART_S1.sState_01: Erster aktiver Zustand. Übergänge zu
sState_02viaS1_S2oder zusRESETviaRESET.sState_02: Zweiter aktiver Zustand. Übergänge zu
sState_03viaS2_S3oder zusRESETviaRESET.sState_03: Dritter aktiver Zustand. Übergänge zu
sState_04viaS3_S4oder zusRESETviaRESET.sState_04: Vierter aktiver Zustand. Übergänge zu
sState_05viaS4_S5oder zusRESETviaRESET.sState_05: Fünfter aktiver Zustand. Übergänge zu
sState_01viaS5_S1(Zyklus) oder zusRESETviaRESET.sRESET: Reset-Zustand. Führt Reset-Aktionen aus und wechselt anschließend bedingungslos zurück zu
xSTART.
Anwendungsszenarien
Schrittkettensteuerungen: Steuerung von Maschinenabläufen, bei denen jeder Schritt manuell oder durch ein Sensorsignal freigegeben werden muss (z.B. Handarbeitsplatz mit Freigabetaster).
Batch-Prozesse: Durchführung von Rezeptschritten, bei denen der Operator oder ein übergeordnetes System den nächsten Schritt bestätigen muss.
Sicherheitskritische Sequenzen: Prozesse, bei denen ein unkontrollierter automatischer Wechsel vermieden werden soll.
Test- und Inbetriebnahmesequenzen: Manuelles Durchschalten von einzelnen Funktionen eines Systems.
⚖️ Vergleich mit ähnlichen Bausteinen
Im Gegensatz zu zyklisch ablaufenden Sequenzern (z.B. E_CYCLE) oder zeitgesteuerten Sequenzern (mit DELAY-Blöcken) verharrt dieser Baustein in jedem Zustand, bis das spezifische Wechselereignis eintrifft. Er bietet damit maximale externe Kontrolle. Im Vergleich zu einem generischen Zähler (CTU) mit nachgelagerter Dekodierlogik bietet dieser FB eine vollständig gekapselte, zustandsbasierte Lösung mit klaren Entry/Exit-Aktionen und einem integrierten Reset-Mechanismus.
Fazit
Der sequence_E_05_loop ist ein robuster und einfach zu konfigurierender Funktionsblock für ereignisgesteuerte Schrittketten mit fünf Zuständen. Seine klare Schnittstelle, die saubere Trennung von Entry-/Exit-Logik und der zuverlässige Reset-Mechanismus machen ihn ideal für Anwendungen, bei denen jeder Prozessschritt explizit freigegeben werden muss. Die mitgeführten Datenausgänge und Bestätigungsereignisse ermöglichen eine einfache Integration in übergeordnete Steuerungs- und Visualisierungssysteme.