ASSEMBLE_AD_FROM_AQ¶
Einleitung¶
Der Funktionsblock ASSEMBLE_AD_FROM_AQ dient dazu, sechzehn separate AQ-Adapter (Quarter) zu einem einzigen AD-Ausgangsadapter (DWORD) zusammenzusetzen. Die Bezeichnung "Quarter" deutet darauf hin, dass jeder AQ-Adapter einen Teil eines 32‑Bit-Wortes repräsentiert – konkret ein Byte (8 Bit). Der Baustein fasst diese 16 Bytes zu einem vollständigen DWORD zusammen und stellt es über einen AD-Plug bereit. Er eignet sich vor allem für Anwendungen, bei denen Daten in kleineren Einheiten eintreffen und erst auf der Empfängerseite zu einem größeren Datentyp vereinigt werden müssen.
Schnittstellenstruktur¶
Der Funktionsblock besitzt keine eigenständigen Ereignis- oder Dateneingänge/-ausgänge. Die gesamte Ein- und Ausgabe erfolgt ausschließlich über Adapter.
Ereignis-Eingänge¶
Keine.
Ereignis-Ausgänge¶
Keine.
Daten-Eingänge¶
Keine.
Daten-Ausgänge¶
Keine.
Adapter¶
| Richtung | Name | Typ | Beschreibung |
|---|---|---|---|
| Sockets (Eingänge) | QUARTER_BYTE_00 … QUARTER_BYTE_15 | adapter::types::unidirectional::AQ |
16 identische Adapter, die jeweils einen 8‑Bit-Datenwert (Quarter/Byte) sowie ein zugehöriges Ereignis (E1) liefern. |
| Plug (Ausgang) | OUT | adapter::types::unidirectional::AD |
Ausgangsadapter, der das aus den 16 Quarter-Werten zusammengesetzte DWORD (D1) und ein Ereignis (E1) bereitstellt. |
Funktionsweise¶
Der Baustein arbeitet vollständig ereignisgesteuert:
- Sobald einer der 16
QUARTER_BYTE-Sockets ein Ereignis (E1) empfängt, wird dieses an den internen FunktionsblockASSEMBLE_DWORD_FROM_QUARTERS(Typeclipse4diac::utils::assembling::ASSEMBLE_DWORD_FROM_QUARTERS) weitergeleitet. - Der interne Baustein kombiniert die aktuellen Daten aller 16 Quarter-Werte zu einem 32‑Bit-DWORD (bit‑0…7 = Quarter 0, bit‑8…15 = Quarter 1, … bit‑120…127 = Quarter 15).
- Das Ergebnis wird einem flankengesteuerten D‑Flip‑Flop (
E_D_FF_ANY) übergeben. - Der Flip‑Flop gibt bei der nächsten steigenden Flanke seines Takteingangs (
CLK) das zusammengesetzte DWORD an denOUT-Adapter aus und erzeugt ein Ereignis (EO), das wiederum das AusgangsereignisE1desOUT-Adapters auslöst.
Durch die Zwischenschaltung des Flip‑Flops wird sichergestellt, dass der Ausgang nur dann aktualisiert wird, wenn die Daten vollständig zusammengesetzt und stabil sind – selbst wenn mehrere Quarter‑Ereignisse quasi gleichzeitig eintreffen.
Technische Besonderheiten¶
- Keine eigenen Ein-/Ausgänge: Der Baustein kommuniziert ausschließlich über Adapter, was eine saubere Kapselung und Wiederverwendbarkeit in unterschiedlichen Projektkontexten ermöglicht.
- Synchrone Aktualisierung: Der D‑Flip‑Flop verhindert Dateninkonsistenzen, falls mehrere Quarter ihre Werte nahezu zeitgleich ändern. Der Ausgang ändert sich erst, nachdem alle Eingänge ausgewertet wurden.
- Autonome Triggerung: Jedes Quarter‑Ereignis (egal von welchem Socket) löst eine Neuberechnung aus. Der Baustein arbeitet immer mit den aktuell anliegenden Werten aller 16 Quarter‑Daten.
- Interne Indirektion: Die tatsächliche Assemblierung erfolgt durch einen spezialisierten Unterbaustein (
ASSEMBLE_DWORD_FROM_QUARTERS), was den Entwurf modular und wartbar hält.
Zustandsübersicht¶
Der Funktionsblock selbst besitzt keinen eigenen Zustandsautomaten. Er verhält sich wie eine kombinatorische Logik mit nachgeschalteter Synchronisation. Der innere Flip‑Flop E_D_FF_ANY verfügt jedoch über einen internen Zustand (den gespeicherten DWORD‑Wert). Dieser Zustand wird nur beim Eintreffen eines Ereignisses an CLK geändert.
Im Ruhezustand (kein Ereignis an einem Quarter‑Socket) bleibt der Ausgangswert des OUT-Adapters unverändert.
Anwendungsszenarien¶
- Verteiltes Messsystem: Mehrere Sensoren liefern je ein Byte; diese werden in einer Zentraleinheit zum Gesamt‑DWORD kombiniert.
- Datenpaket‑Rekonstruktion: Zerlegte Kommunikationsframes (z. B. 16‑Byte‑Nutzdaten) werden wieder zusammengesetzt.
- Mediatorenstrukturen: Als Bestandteil einer Adapter‑Kette zur Umwandlung von Datenbreiten in IEC 61499‑Anwendungen.
- Synthese von Steuerwörtern: Mehrere 8‑Bit‑Steuerkanäle werden zu einem 32‑Bit‑Befehlswort vereinigt.
Vergleich mit ähnlichen Bausteinen¶
| Baustein | Anzahl Eingänge | Ausgang | Synchronisation | Eigenschaften |
|---|---|---|---|---|
ASSEMBLE_AD_FROM_AQ |
16 (AQ‑Adapter) | 1 (AD‑Adapter) | Ja (Flip‑Flop) | Für ereignisgesteuerte Byte‑Sammlung. |
ASSEMBLE_DWORD_FROM_QUARTERS (intern) |
16 Daten‑Eingänge (keine Adapter) | 1 DWORD‑Ausgang | Nein | Reine Daten‑Assemblierung ohne Ereignissynchronisation. |
Einfacher MERGE‑Baustein (fiktiv) |
2 … n Daten‑Eingänge | 1 Daten‑Ausgang | Oft nein | Nur Daten‑Verknüpfung, keine Adapter‑Struktur. |
Der vorliegende Baustein zeichnet sich durch die Kapselung der Adapter‑Schnittstellen und die integrierte Synchronisation aus, wodurch er besonders für heterogene, ereignisgetriebene Umgebungen geeignet ist.
Fazit¶
ASSEMBLE_AD_FROM_AQ ist ein spezialisierter Adapter‑Baustein zur Zusammenführung von 16 Byte‑breiten Quarter‑Daten in ein DWORD. Seine rein adapterbasierte Schnittstelle macht ihn flexibel einsetzbar, während die interne Synchronisation durch einen Flip‑Flop die Datenkonsistenz bei asynchronen Ereignissen gewährleistet. Er eignet sich hervorragend für den Einsatz in modularen IEC 61499‑Anwendungen, bei denen Daten in kleineren Einheiten ankommen und erst auf Empfängerseite zu einem vollständigen Wort zusammengesetzt werden müssen.