ADI_TO_AI¶
Einleitung¶
Der Funktionsbaustein ADI_TO_AI ist ein Composite FB, der einen DINT-Adapter (ADI) in einen INT-Adapter (AI) umwandelt. Er dient als unidirektionale Konvertierungsschnittstelle zwischen zwei Adapter-Typen und nutzt intern den Baustein F_DINT_TO_INT zur Typumwandlung der Datenwerte.
Schnittstellenstruktur¶
Ereignis-Eingänge¶
Der FB besitzt keine separaten Ereignis-Eingänge. Die ereignisgesteuerte Verarbeitung erfolgt über den Socket ADI_IN:
- ADI_IN.E1 – Ereignis zur Anforderung der Konvertierung (wird intern an den Convert.REQ weitergeleitet).
Ereignis-Ausgänge¶
Der FB besitzt keine separaten Ereignis-Ausgänge. Die Ergebnis-Rückmeldung erfolgt über den Plug AI_OUT:
- AI_OUT.E1 – Ereignis, das nach erfolgreicher Konvertierung ausgelöst wird (entspricht Convert.CNF).
Daten-Eingänge¶
Der FB besitzt keine separaten Daten-Eingänge. Die Eingangsdaten werden über den Socket ADI_IN bereitgestellt: - ADI_IN.D1 – DINT-Wert (32-Bit-Ganzzahl), der in einen INT-Wert umgewandelt werden soll.
Daten-Ausgänge¶
Der FB besitzt keine separaten Daten-Ausgänge. Die Ergebnisdaten werden über den Plug AI_OUT ausgegeben: - AI_OUT.D1 – INT-Wert (16-Bit-Ganzzahl), das Ergebnis der Konvertierung.
Adapter¶
- Socket:
ADI_IN(Typadapter::types::unidirectional::ADI) – DINT-Adapter-Eingang. - Plug:
AI_OUT(Typadapter::types::unidirectional::AI) – INT-Adapter-Ausgang.
Funktionsweise¶
Der Baustein verbindet die Adapter-Schnittstellen direkt mit einer internen Instanz des Konvertierungsbausteins F_DINT_TO_INT:
1. Ein Ereignis an ADI_IN.E1 triggert den Convert.REQ.
2. Der Wert von ADI_IN.D1 wird an Convert.IN übergeben.
3. Die Konvertierung DINT → INT wird durchgeführt.
4. Nach Abschluss signalisiert Convert.CNF das Ereignis an AI_OUT.E1 und der konvertierte Wert von Convert.OUT wird an AI_OUT.D1 weitergeleitet.
Technische Besonderheiten¶
- Keine eigene Zustandsmaschine: Der FB ist ein reines Composite (Netzwerk) ohne ECC. Das Verhalten wird ausschließlich durch die interne Verbindung und den verwendeten Konvertierungsbaustein bestimmt.
- Typkonvertierung: Die Umwandlung von DINT nach INT erfolgt gemäß IEC 61131-3 (Überlauf bei Wertebereichsüberschreitung wird nicht abgefangen; INT-Bereich: -32768 … 32767).
- Paket: Der FB ist im Paket
adapter::conversion::unidirectionalorganisiert.
Zustandsübersicht¶
Der FB besitzt keine explizite Zustandsmaschine. Das Verhalten ist rein datenflussgesteuert: Auf jedes eingehende Ereignis erfolgt genau eine Konvertierung und eine Ausgabe.
Anwendungsszenarien¶
- Integration von DINT-basierten Komponenten in eine Umgebung, die ausschließlich INT-Adapter unterstützt (z. B. ältere Steuerungen oder standardisierte Schnittstellen).
- Typanpassung in heterogenen Automatisierungssystemen, bei denen unterschiedliche Datenbreiten verwendet werden.
Vergleich mit ähnlichen Bausteinen¶
- AI_TO_ADI: Die umgekehrte Konvertierung (INT → DINT). Während
ADI_TO_AIden Wertebereich verkleinert (potenzieller Datenverlust), erweitertAI_TO_ADIden Wertebereich ohne Informationsverlust. - Direkte Adapter-Kopplung: Ohne Konvertierung müssten die Adapter-Typen exakt übereinstimmen.
ADI_TO_AIermöglicht die Kommunikation zwischen inkompatiblen Typen.
Fazit¶
Der Baustein ADI_TO_AI ist ein einfacher, aber nützlicher Konverter, der die Lücke zwischen DINT- und INT-Adapter-Schnittstellen schließt. Durch seine Composite-Struktur ist er leicht verständlich und wartbar. Die Verwendung des standardisierten F_DINT_TO_INT stellt die korrekte Umwandlung sicher.