# BOOL_TO_QUARTER ## 🎧 Podcast * [QUARTER](https://podcasters.spotify.com/pod/show/iec-61499-grundkurs-de/episodes/QUARTER-e36741d) ---- ```{index} single: BOOL_TO_QUARTER ``` image * * * * * * * * * * ## Einleitung Der Funktionsblock `BOOL_TO_QUARTER` dient der Konvertierung eines binĂ€ren BOOL-Signals in ein spezielles, vordefiniertes Quartal-Byte (quarter byte). Er ĂŒbersetzt die logischen ZustĂ€nde `TRUE` und `FALSE` in entsprechende, semantisch bedeutungsvolle Byte-Konstanten, die typischerweise fĂŒr Steuerbefehle (z. B. ENABLE/DISABLE) verwendet werden. Dieser Baustein ist Teil der `logiBUS::utils::quarter`-Bibliothek. ## Schnittstellenstruktur ### **Ereignis-EingĂ€nge** * **REQ**: Dieses Ereignis löst die Konvertierungsfunktion aus. Bei seinem Eintreffen wird der aktuelle Wert am Daten-Eingang `I` gelesen und verarbeitet. ### **Ereignis-AusgĂ€nge** * **CNF**: Dieses Ereignis signalisiert den Abschluss der Konvertierung. Es wird zusammen mit dem berechneten Ausgangswert `QB` ausgegeben. ### **Daten-EingĂ€nge** * **I** (BOOL, Initialwert: `FALSE`): Der binĂ€re Eingangswert, der konvertiert werden soll. ### **Daten-AusgĂ€nge** * **QB** (BYTE, Initialwert: `quarter::COMMAND_DISABLE`): Der Ausgangswert als Byte. Der Block nutzt ein sogenanntes "Quarter Byte" (2 Bit), das vier ZustĂ€nde reprĂ€sentieren kann, von denen in dieser Implementierung nur zwei genutzt werden. Der konkrete Wert wird aus den Konstanten der importierten Bibliothek abgeleitet. ### **Adapter** Dieser Funktionsblock verfĂŒgt ĂŒber keine Adapterschnittstellen. ## Funktionsweise Bei Auslösung durch das `REQ`-Ereignis wertet der Block den Wert am Eingang `I` aus. Die Verarbeitung erfolgt ĂŒber eine `CASE`-Anweisung: * Wenn `I` den Wert `BOOL#TRUE` hat, wird der Ausgang `QB` auf die Konstante `quarter::COMMAND_ENABLE` gesetzt. * In allen anderen FĂ€llen (standardmĂ€ĂŸig also bei `FALSE`) wird der Ausgang `QB` auf die Konstante `quarter::COMMAND_DISABLE` gesetzt. Unmittelbar nach der Zuweisung wird das `CNF`-Ereignis zusammen mit dem neuen Wert von `QB` ausgegeben. ## Technische Besonderheiten * **BibliotheksabhĂ€ngigkeit**: Der Block importiert und nutzt Konstanten (`quarter::COMMAND_ENABLE`, `quarter::COMMAND_DISABLE`) aus dem Paket `logiBUS::utils::quarter::const::quarter`. Die tatsĂ€chlichen Byte-Werte sind somit dort definiert und zentral Ă€nderbar. * **Quarter Byte Konzept**: Der Ausgang ist als `BYTE` deklariert, nutzt konzeptionell aber nur die unteren 2 Bit (ein "Quarter Byte"). Dies ermöglicht eine spĂ€tere Erweiterung um weitere ZustĂ€nde, ohne die Schnittstelle Ă€ndern zu mĂŒssen. * **Initialwerte**: Sowohl der Eingang `I` als auch der Ausgang `QB` haben definierte Initialwerte (`FALSE` bzw. `COMMAND_DISABLE`), was ein deterministisches Startverhalten gewĂ€hrleistet. ## ZustandsĂŒbersicht Der Block besitzt keinen internen Zustand im Sinne eines Speichers. Er verhĂ€lt sich rein kombinatorisch in Bezug auf die Eingangsdaten bei Auftreten des `REQ`-Ereignisses. Der Ausgang `QB` behĂ€lt seinen zuletzt zugewiesenen Wert bis zum nĂ€chsten AusfĂŒhrungszyklus. ## Anwendungsszenarien * **Steuerung von Aktoren**: Umwandlung eines einfachen Freigabe-Signals (`BOOL`) in einen gerĂ€tespezifischen Enable/Disable-Befehl, der als Byte ĂŒber ein Feldbusprotokoll versendet wird. * **Schnittstellenanpassung**: Anbindung von Logikbausteinen, die mit BOOL-Werten arbeiten, an Steuerungskomponenten, die Befehle im Quarter-Byte-Format erwarten. * **Code-Vereinheitlichung**: Sicherstellung, dass in einem Projekt immer die gleichen, zentral definierten Konstanten fĂŒr Enable-/Disable-Befehle verwendet werden. ## ⚖ Vergleich mit Ă€hnlichen Bausteinen * **`BOOL_TO_BYTE`**: Ein generischer Konverter, der `TRUE` typischerweise auf `1` und `FALSE` auf `0` abbildet. `BOOL_TO_QUARTER` ist spezialisierter und verwendet projektspezifische, semantische Konstanten anstelle numerischer Werte. * **Direkte Zuweisung**: Die FunktionalitĂ€t könnte auch durch direkte Zuweisung in ST-Code (`QB := I`) nachgebildet werden, dabei gingen jedoch die Vorteile der zentralen Konstantendefinition und der klaren Schnittstelle (Events) verloren. ## đŸ› ïž Zugehörige Übungen * [Uebung_055](../../../../../training1/Ventilsteuerung/4diacIDE-workspace/test_B/Uebungen_doc/Uebung_055.md) * [Uebung_056](../../../../../training1/Ventilsteuerung/4diacIDE-workspace/test_B/Uebungen_doc/Uebung_056.md) ## Fazit Der `BOOL_TO_QUARTER`-Funktionsblock ist ein spezialisierter, aber nĂŒtzlicher Konverter fĂŒr Steueranwendungen. Er bietet eine saubere Schnittstelle mit Ereignissteuerung, verwendet zentral verwaltete Konstanten fĂŒr eine einheitliche Semantik und ist durch das Quarter-Byte-Konzept potentiell erweiterbar. Seine StĂ€rke liegt in der Verbindung von einfacher binĂ€rer Logik mit gerĂ€tespezifischen Steuerprotokollen.