ALI_TO_ADI¶
Einleitung¶
Dieser Composite-Funktionsblock dient der Umwandlung eines ALI-Adaptertyps (LINT, 64‑Bit‑Integer) in einen ADI-Adaptertyp (DINT, 32‑Bit‑Integer). Er ermöglicht die nahtlose Integration von Komponenten, die unterschiedliche Adapter-Formate verwenden, indem er die Datenkonvertierung kapselt und über Ereignissteuerung synchronisiert.
Schnittstellenstruktur¶
Ereignis-Eingänge¶
Keine direkten Ereignis-Eingänge vorhanden. Die Steuerung erfolgt über den eingehenden Adapter ALI_IN.
Ereignis-Ausgänge¶
Keine direkten Ereignis-Ausgänge vorhanden. Die Ausgabe wird über den ausgehenden Adapter ADI_OUT getaktet.
Daten-Eingänge¶
Keine direkten Daten-Eingänge vorhanden. Die Eingangsdaten werden über den Adapter ALI_IN (vom Typ ALI) bereitgestellt.
Daten-Ausgänge¶
Keine direkten Daten-Ausgänge vorhanden. Die umgewandelten Daten werden über den Adapter ADI_OUT (vom Typ ADI) ausgegeben.
Adapter¶
| Name | Typ | Richtung | Beschreibung |
|---|---|---|---|
| ALI_IN | adapter::types::unidirectional::ALI |
Socket (Eingang) | Liefert den LINT-Wert sowie ein zugehöriges Ereignis (E1). |
| ADI_OUT | adapter::types::unidirectional::ADI |
Plug (Ausgang) | Gibt den konvertierten DINT-Wert sowie ein Bestätigungsereignis (E1) aus. |
Funktionsweise¶
Der Baustein enthält im Inneren die Instanz Convert vom Typ iec61131::conversion::F_LINT_TO_DINT.
Die Ereignis- und Datenverbindungen sind wie folgt geschaltet:
- Das Ereignis
ALI_IN.E1triggert die Umwandlung überConvert.REQ. - Der Datenwert
ALI_IN.D1wird anConvert.INübergeben. - Nach erfolgreicher Konvertierung signalisiert
Convert.CNFdas EreignisADI_OUT.E1. - Der Ergebniswert
Convert.OUTwird anADI_OUT.D1weitergeleitet.
Somit wird bei jedem Ereignis am Eingangsadapter der LINT-Wert in einen DINT-Wert umgerechnet und synchron über den Ausgangsadapter bereitgestellt.
Technische Besonderheiten¶
- Composite-Baustein: Der FB kapselt die Konvertierung in einem wiederverwendbaren Adapter-zu-Adapter-Wandler.
- Datentypumwandlung: Es findet eine 64‑Bit‑ zu 32‑Bit‑Integer‑Konvertierung statt. Bei Werten außerhalb des DINT-Bereichs (−2³¹ … 2³¹−1) kommt es zu einem Überlauf oder einer Begrenzung (implementierungsabhängig).
- Ereignissynchronisation: Die Umwandlung erfolgt streng getaktet durch die Ereigniskette; ein neuer Wert wird nur nach einem vorherigen Ereignis verarbeitet.
Zustandsübersicht¶
Der Baustein besitzt keine eigene Zustandsmaschine (ECC). Seine gesamte Logik wird durch den internen Funktionsblock F_LINT_TO_DINT realisiert, der als einfacher Umwandlungsbaustein ohne Zustandsverhalten arbeitet.
Anwendungsszenarien¶
- Anbindung einer Komponente, die einen 64‑Bit‑Zähler oder Zeitstempel (LINT) liefert, an ein System, das nur 32‑Bit‑DINT‑Adapter unterstützt.
- Migration von Altsystemen mit 32‑Bit‑Arithmetik auf neuere 64‑Bit‑Sensoren, ohne die gesamte Adapterlandschaft zu ändern.
- Zwischenschicht in einer Hierarchie, in der unterschiedliche Integer-Breiten aufeinandertreffen.
Vergleich mit ähnlichen Bausteinen¶
Es existieren separate Konvertierungsbausteine wie F_LINT_TO_DINT für direkte Datenumwandlungen. Der ALI_TO_ADI-Baustein hebt sich dadurch ab, dass er die Konvertierung vollständig in die Adapter-Schnittstelle integriert. Statt mehrerer diskreter Funktionsblöcke und manueller Adapterverkabelung wird die gesamte Logik in einem wiederverwendbaren Composite-Baustein zusammengefasst, der die Ereignis- und Datenströme automatisch behandelt.
Fazit¶
Der ALI_TO_ADI-Funktionsblock bietet eine saubere, gekapselte Lösung für die Umwandlung von LINT- in DINT‑Adapter. Durch die Verwendung eines Composite-Bausteins reduziert er die Komplexität in der Applikation und sorgt für eine standardisierte, ereignisgesteuerte Konvertierung zwischen unterschiedlichen Integer-Breiten in der IEC 61499‑Umgebung.