ASSEMBLE_AL_FROM_AB¶
Einleitung¶
Der Funktionsblock ASSEMBLE_AL_FROM_AB fasst acht einzelne Byte-Informationen aus Adaptern des Typs AB (unidirektional) zu einem zusammenhängenden 64-Bit-Datenwort (LWORD) zusammen. Das Ergebnis wird über einen Ausgangsadapter des Typs AL ausgegeben. Der Baustein dient als zentrale Sammelstelle für Byte-orientierte Daten und ermöglicht eine modulare und übersichtliche Datenstrukturierung.
Schnittstellenstruktur¶
Ereignis-Eingänge¶
Keine. Die Ereignissteuerung erfolgt ausschließlich über die angeschlossenen Adapter.
Ereignis-Ausgänge¶
Keine. Das Ausgangsereignis wird über den Adapter OUT bereitgestellt.
Daten-Eingänge¶
Keine. Die Dateneingänge werden über die Byte-Adapter eingespeist.
Daten-Ausgänge¶
Keine. Das zusammengesetzte LWORD wird über den Adapter OUT ausgegeben.
Adapter¶
Sockets (Eingangsadapter)
| Name | Datentyp | Beschreibung |
|---|---|---|
BYTE_00 |
adapter::types::unidirectional::AB |
Byte 0 (niederwertigstes Byte) |
BYTE_01 |
adapter::types::unidirectional::AB |
Byte 1 |
BYTE_02 |
adapter::types::unidirectional::AB |
Byte 2 |
BYTE_03 |
adapter::types::unidirectional::AB |
Byte 3 |
BYTE_04 |
adapter::types::unidirectional::AB |
Byte 4 |
BYTE_05 |
adapter::types::unidirectional::AB |
Byte 5 |
BYTE_06 |
adapter::types::unidirectional::AB |
Byte 6 |
BYTE_07 |
adapter::types::unidirectional::AD |
Byte 7 (höchstwertiges Byte) |
Jeder Byte-Adapter stellt ein Ereignis (E1) und ein Datenbyte (D1) bereit.
Plugs (Ausgangsadapter)
| Name | Datentyp | Beschreibung |
|---|---|---|
OUT |
adapter::types::unidirectional::AL |
Ausgang: zusammengesetztes LWORD; Ereignisausgang über E1, Datenwert über D1 |
Funktionsweise¶
Der Baustein ist als Composite-FB realisiert und enthält zwei interne Funktionsblöcke: ASSEMBLE_LWORD_FROM_BYTES und E_D_FF_ANY.
-
Datensammlung: Sobald einer der acht Byte-Adapter (
BYTE_00…BYTE_07) ein Ereignis an seinem AusgangE1liefert, wird dieses Ereignis an den EingangREQvonASSEMBLE_LWORD_FROM_BYTESweitergeleitet. Gleichzeitig werden die zugehörigen Byte-Werte von jedem Adapter an die entsprechenden Dateneingänge des Assembler-Blocks geführt (BYTE_00…BYTE_07). -
Zusammenfügung: Der interne Baustein
ASSEMBLE_LWORD_FROM_BYTESsetzt die acht Bytes in der ReihenfolgeBYTE_00bisBYTE_07zu einem 64-Bit-Wort (LWORD) zusammen.BYTE_00ist das niederwertigste Byte,BYTE_07das höchstwertige. Nach Abschluss der Operation wird ein Bestätigungsereignis (CNF) ausgegeben und das zusammengesetzte LWORD an seinem Datenausgang bereitgestellt. -
Pufferung und Ausgabe: Das Ereignis
CNFtriggert den flankengesteuerten Flip-FlopE_D_FF_ANY. Dieser übernimmt den aktuellen LWORD-Wert und speichert ihn zwischen. Bei jeder positiven Flanke am Takteingang (CLK) wird der Wert am DatenausgangQaktualisiert. Der AusgangQist mit dem DatenausgangD1des Adapter-PlugsOUTverbunden. Das gespeicherte EreignisEOdes Flip-Flops wird als AusgangsereignisE1des Adapter-PlugsOUTbereitgestellt.
Somit wird bei jeder Aktualisierung eines der acht Byte-Eingänge der gesamte LWORD neu berechnet und über den Ausgangsadapter ausgegeben.
Technische Besonderheiten¶
- Adapter-basierte Schnittstellen: Der Baustein verwendet ausschließlich Adapter für die Ein- und Ausgabe. Dies ermöglicht eine flexible und lose Kopplung mit anderen Komponenten, die denselben Adaptertyp nutzen.
- Komposit-Architektur: Die interne Struktur ist aus bewährten Standardbausteinen aufgebaut (
ASSEMBLE_LWORD_FROM_BYTESundE_D_FF_ANY). Dadurch wird die Komplexität verborgen und die Wartbarkeit erhöht. - Pufferung durch Flip-Flop: Der
E_D_FF_ANYpuffert den assemblierten Wert und gibt ihn erst nach Abschluss der Assemblierung weiter. Dies vermeidet inkonsistente Ausgaben während der Aktualisierung einzelner Bytes und stellt sicher, dass immer ein vollständiger Datenwert anliegt. - Ereignissynchronisation: Alle Byte-Adaptersignale werden auf einen gemeinsamen
REQ-Eingang geführt. Dadurch wird jede Änderung eines beliebigen Bytes sofort verarbeitet. Die Zusammenführung aller Bytes erfolgt jedoch stets auf Basis der aktuell anliegenden Werte.
Zustandsübersicht¶
Da es sich um einen Composite-FB handelt, besitzt er keinen eigenen Zustandsautomaten. Der innerliegende E_D_FF_ANY besitzt einen internen Zustand: den gespeicherten LWORD-Wert. Dieser ändert sich nur bei positiven Flanken am Takteingang, also nach jeder erfolgreichen Assemblierung. Der Zustand bleibt erhalten, bis eine erneute Assemblierung ausgelöst wird.
Anwendungsszenarien¶
- Datenaggregation in Sensornetzwerken: Mehrere Byte-orientierte Sensoren (z. B. Temperatur, Druck, Feuchte) werden über separate Adapter angebunden. Der Baustein setzt sie zu einem 64-Bit-Datentelegramm zusammen, das an eine zentrale Steuerung weitergeleitet wird.
- Protokollkonvertierung: Ein Byte-Stream, der über mehrere Adapter eingeht (z. B. serielle Schnittstelle mit 8 Nutzbytes), wird in ein einzelnes LWORD umgewandelt, das für weitere Verarbeitungsschritte einfacher zu handhaben ist.
- Modulare E/A-Erweiterungen: In einer modularen Automatisierungslösung können acht digitale/analoge Byte-Eingänge (z. B. über I/O-Module) zu einer gemeinsamen 64-Bit-Variablen zusammengefasst werden.
Vergleich mit ähnlichen Bausteinen¶
ARRAY_TO_LWORD-Bausteine: Diese Bausteine arbeiten meist mit Arrays als Eingang und haben eine andere Schnittstelle (keine Adapter). DerASSEMBLE_AL_FROM_ABbietet eine adapterbasierte, ereignisgesteuerte Alternative, die besser in modulare, typisierte Adapterstrukturen passt.- Multiplexer (MUX): Ein Multiplexer wählt einen von mehreren Eingängen aus, während dieser Baustein alle Eingänge gleichzeitig zu einem größeren Datenwort kombiniert.
- Direkte Bitverkettung: Ohne diesen Baustein müsste die Byte-Zusammenführung manuell durch bitweise Verschiebung und Oder-Verknüpfung erfolgen. Der
ASSEMBLE_AL_FROM_ABkapselt diese Logik und reduziert den Entwicklungs- und Testaufwand.
Fazit¶
Der ASSEMBLE_AL_FROM_AB ist ein spezialisierter Funktionsblock für die modulare und ereignisgesteuerte Zusammenführung von acht Byte-Daten zu einem LWORD. Durch seine ausschließliche Verwendung von Adaptern eignet er sich hervorragend für den Einsatz in adapterbasierten Architekturen und fördert eine klare Trennung von Datenquellen und -senken. Die integrierte Pufferung über den Flip-Flop und die Auslösung über jedes eingehende Ereignis stellen sicher, dass stets ein konsistenter, vollständiger Datenwert ausgegeben wird. Der Baustein vereinfacht die Datenaggregation erheblich und trägt zu einer wartbaren und wiederverwendbaren Steuerungslogik bei.