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.