QUARTER_TO_E
🎧 Podcast
Einleitung
Der Funktionsblock QUARTER_TO_E dient dazu, einen 2-Bit-Zustandswert (ein sogenanntes „Quarter Byte“) in vier verschiedene, eindeutige Ereignisse zu übersetzen. Er ist ein Hilfsbaustein, der häufig in Verbindung mit Bausteinen verwendet wird, die mehr als die üblichen zwei Zustände (EIN/AUS) melden, wie z.B. Statusmeldungen von Geräten, die auch Fehler- oder Nicht-Verfügbarkeitszustände anzeigen können.
Schnittstellenstruktur
Ereignis-Eingänge
REQ: Startet die Verarbeitung. Bei diesem Ereignis wird der aktuelle Wert am Daten-Eingang
IBausgewertet.
Ereignis-Ausgänge
CNF: Signalisiert die erfolgreiche Beendigung der Verarbeitung, unabhängig vom erkannten Zustand. Wird immer nach der Ausgabe eines der spezifischen Ereignisse generiert.
S (Enabled): Wird ausgelöst, wenn der Zustand „aktiviert“ oder „eingeschaltet“ erkannt wird.
R (Disabled): Wird ausgelöst, wenn der Zustand „deaktiviert“ oder „ausgeschaltet“ erkannt wird.
ERR (Error): Wird ausgelöst, wenn ein Fehlerzustand erkannt wird.
NONE (Not available): Wird ausgelöst, wenn der Zustand „nicht verfügbar“ oder „nicht installiert“ erkannt wird.
Daten-Eingänge
IB (BYTE): Enthält den zu interpretierenden 2-Bit-Zustandswert. Der Initialwert ist auf
quarter::COMMAND_DISABLEgesetzt. Die tatsächliche Interpretation erfolgt anhand der definierten Konstanten aus demquarter-Paket.
Daten-Ausgänge
Q (BOOL): Ein boolescher Ausgang, dessen Wert je nach erkanntem Zustand gesetzt wird. Er dient als einfache, binäre Repräsentation des Hauptzustands (aktiviert/deaktiviert).
Adapter
Dieser Funktionsblock verwendet keine Adapter.
Funktionsweise
Der QUARTER_TO_E ist ein Basic Function Block mit einem internen Zustandsautomaten (ECC). Bei Eintreffen des REQ-Ereignisses wird der Wert am Eingang IB mit vordefinierten Konstanten verglichen. Abhängig vom Vergleich springt der Automat in einen der vier Zustände SET, RESET, Error oder none. In jedem dieser Zustände wird ein entsprechender Algorithmus ausgeführt, der den booleschen Ausgang Q setzt (oder nicht ändert) und das zugehörige spezifische Ereignis (S, R, ERR, NONE) auslöst. Anschließend wechselt der Automat in den Zustand ok, von wo aus das Bestätigungsereignis CNF ausgegeben wird, bevor der Automat in den Ausgangszustand START zurückkehrt und auf das nächste REQ wartet.
Technische Besonderheiten
Der Block nutzt Konstanten aus dem Paket
logiBUS::utils::quarter::const::quarter(STATUS_ENABLED,STATUS_DISABLED,STATUS_ERROR,STATUS_NOT_AVAILABLE). Diese müssen im Projekt verfügbar sein.Der Ausgang
Qwird nur in den ZuständenSET(auf TRUE),RESET(auf FALSE) undERROR(auf FALSE) verändert. Im ZustandNONEwirdQexplizit nicht verändert („Don’t care“).Die Ausgabe des
CNF-Ereignisses erfolgt immer, unabhängig davon, welcher spezifische Zustand erkannt wurde. Dies ermöglicht eine einheitliche Ablaufsteuerung in der Applikation.
Zustandsübersicht
START: Wartezustand. Bei
REQerfolgt die Auswertung vonIBund der Übergang zu einem Verarbeitungszustand.SET: Wird bei
IB = STATUS_ENABLEDerreicht. SetztQ:=TRUEund löstSaus.RESET: Wird bei
IB = STATUS_DISABLEDerreicht. SetztQ:=FALSEund löstRaus.Error: Wird bei
IB = STATUS_ERRORerreicht. SetztQ:=FALSEund löstERRaus.none: Wird bei
IB = STATUS_NOT_AVAILABLEerreicht. LöstNONEaus (Q bleibt unverändert).ok: Zwischenzustand, der das
CNF-Ereignis auslöst und zurück zumSTART-Zustand führt.
Anwendungsszenarien
Interpretation von Gerätestatus: Ein Antriebsmeldet seinen Status nicht nur als EIN/AUS, sondern auch als „Fehler“ oder „Nicht bereit“. Dieser Block wandelt den Gerätestatus in separate, leicht verarbeitbare Ereignisse um.
Vereinfachung der Logik: Anstatt in nachfolgenden Blöcken ständig den Byte-Wert abfragen zu müssen, können direkt auf die spezifischen Ereignisse (
S,R,ERR) reagiert werden.Abstraktion: Dient als Adapter zwischen Bausteinen, die einen Quarter-Byte-Status liefern, und einer Logik, die mit klassischen Ereignis-/Boolsignalen arbeitet.
Vergleich mit ähnlichen Bausteinen
E_DEMUX / E_SELECT: Diese Blöcke leiten ein Eingangsereignis basierend auf einem Steuerwert an einen von mehreren Ausgängen weiter.
QUARTER_TO_Eist spezialisierter: Er übersetzt einen spezifischen Datenwert (IB) nicht nur in eine Auswahl, sondern löst auch unterschiedliche inhaltliche Ereignisse aus und berechnet zusätzlich einen booleschen Wert (Q).BYTE_TO_E: Ein generischer Block, der jedes Bit eines Bytes in ein separates Ereignis umwandeln könnte.
QUARTER_TO_Eist semantisch reicher, da er spezifische, vordefinierte Zustände (Enabled, Disabled, Error, None) und deren Bedeutung kennt und ausgibt.
Fazit
Der QUARTER_TO_E ist ein nützlicher und spezialisierter Baustein für die strukturierte Verarbeitung von 4-Zustands-Signalen (Quad-State). Er entlastet die Applikationslogik, indem er die Rohdateninterpretation übernimmt und klare, semantische Ereignisse sowie einen vereinfachten booleschen Status bereitstellt. Seine Stärke liegt in der Kombination aus Datenverarbeitung und ereignisbasierter Ausgabe gemäß der IEC 61499.