StringValue_IWS¶
Einleitung¶
Der Funktionsblock StringValue_IWS ist ein Service-Interface-Funktionsblock (SIFB), der für den Empfang breiter Zeichenketten (Wide String, WSTRING) als Eingabedaten aus einer ressourcenseitigen Quelle (z. B. Hardware‑Schnittstelle, Bussystem) zuständig ist. Er stellt eine standardisierte Schnittstelle zur Verfügung, um Initialisierung und zyklische/anforderungsgesteuerte Datenabrufe sowie asynchrone Indikationen zu verwalten. Der Baustein ist typischerweise in ISOBUS-basierten Steuerungsumgebungen oder anderen Feldbussystemen anzutreffen, die Unicode‑kodierte Textdaten verarbeiten.
Schnittstellenstruktur¶
Ereignis-Eingänge¶
| Ereignis | Kommentar | Mitgeführte Daten |
|---|---|---|
INIT |
Service-Initialisierung | QI, PARAMS, u16ObjId |
REQ |
Service-Anforderung | QI |
Ereignis-Ausgänge¶
| Ereignis | Kommentar | Mitgeführte Daten |
|---|---|---|
INITO |
Bestätigung der Initialisierung | QO, STATUS |
CNF |
Bestätigung der angeforderten Aktion | QO, STATUS, IN |
IND |
Asynchrone Indikation von der Ressource | QO, STATUS, IN |
Daten-Eingänge¶
| Name | Typ | Initialwert | Kommentar |
|---|---|---|---|
QI |
BOOL |
– | Ereigniseingangs-Qualifier |
PARAMS |
STRING |
– | Dienstparameter (z. B. Port-/Gerätekonfiguration) |
u16ObjId |
UINT |
ID_NULL |
Objekt‑ID zur Identifikation der Datenquelle |
Daten-Ausgänge¶
| Name | Typ | Kommentar |
|---|---|---|
QO |
BOOL |
Ereignisausgangs-Qualifier |
STATUS |
STRING |
Status- oder Fehlermeldung |
IN |
WSTRING |
Empfangene Eingabedaten (breite Zeichenkette) |
Adapter¶
Keine.
Funktionsweise¶
Der StringValue_IWS folgt dem typischen Verhalten eines Service-Interface-Funktionsblocks:
-
Initialisierung (
INIT→INITO)
Durch Auslösen desINIT-Ereignisses wird der Dienst gestartet. Der QualifierQIbestimmt, ob die Initialisierung aktiv (TRUE) oder deaktivierend (FALSE) ist. MitPARAMSwerden notwendige Konfigurationsparameter übergeben (z. B. Busadresse, Protokoll‑Optionen). Die Objekt-IDu16ObjIdlegt fest, welche Datenquelle (z. B. ein bestimmtes ISOBUS‑Objekt) angesprochen werden soll. Nach erfolgreicher Initialisierung wirdINITOausgegeben;QOundSTATUSgeben den Ausgangszustand an. -
Anforderung (
REQ→CNF)
Mit demREQ-Ereignis wird eine explizite Datenabfrage ausgelöst. Der Baustein holt (z. B. über einen Treiber) einen neuen Wert vom angeschlossenen Gerät. Die Antwort wird über den AusgangIN(alsWSTRING) und den StatusSTATUSbereitgestellt. Gleichzeitig wird dasCNF-Ereignis gesendet. -
Asynchrone Indikation (
IND)
Falls die Ressource unaufgefordert neue Daten liefert (z. B. bei Änderung einer Eingabe), wird dasIND-Ereignis ausgelöst.INenthält dann die aktuellen Daten,STATUSden zugehörigen Zustand. Dieser Ausgang kann parallel zumCNF-Ereignis genutzt werden.
Die Ereignisausgänge QO liefern immer den aktuellen Qualifier‑Wert (in der Regel Übernahme von QI bei erfolgreicher Operation, sonst FALSE). Der Status STATUS enthält menschenlesbare Fehler‑ oder Erfolgsmeldungen.
Technische Besonderheiten¶
-
Breite Zeichenketten (
WSTRING)
Der Baustein verwendetWSTRING(UTF‑16‑kodiert), um internationale Zeichensätze, Sonderzeichen und Emojis korrekt zu übertragen. Dies ist besonders in der ISOBUS‑Landtechnik wichtig, wenn z. B. Bedienterminals Unicode‑Texte anzeigen. -
Objekt‑ID
u16ObjId
Der InitialwertID_NULLwird aus der importierten Konstantenisobus::UT::Q::const::IDs::ID_NULLübernommen. Eine gültige Objekt‑ID muss vor derINIT‑Aktion gesetzt werden, um die korrekte Datenquelle zu adressieren. -
Service-Interface-Charakter
Der Baustein ist als SIFB realisiert und erwartet eine ressourcenseitige Implementierung (Treiber). Die eigentliche Kommunikation mit der Hardware oder dem Bussystem erfolgt außerhalb des Funktionsblocks und wird über die Ereignis‑/Datenschnittstellen abstrahiert. -
Verwendung von
eclipse4diac::core::TypeHash
Das Attribut dient der Laufzeit-Identifikation des Typs und wird für dynamische Funktionsblock‑Instanzen verwendet.
Zustandsübersicht¶
Eine explizite Zustandsmaschine ist im XML nicht definiert, jedoch ergibt sich aus der Semantik des SIFB folgender impliziter Ablauf:
- IDLE – Warten auf
INIToder ersteREQ. - INIT – Initialisierungsphase, nach erfolgreicher Ausführung Wechsel in READY.
- READY – Bereit für
REQoderIND. BeiREQkurzzeitig in BUSY, dann zurück zu READY. - INDICATION – Asynchrone Datenindikation, nach Verarbeitung Rückkehr zu READY.
- ERROR – Bei Fehlern (z. B. Kommunikationsabbruch) wird
STATUSgesetzt und der Block verharrt, bis ein erneutesINIT(mitQI=FALSEggf. als Reset) erfolgt.
Anwendungsszenarien¶
-
ISOBUS‑Terminal (UT) – Eingabe von Unicode-Text
Empfang von Benutzereingaben wie Maschinenbezeichnungen, Adressen oder Diagnosetexten von einem Bedienterminal über den ISOBUS. -
Universal‑Interface für Zeicheneingabe
Anbindung externer Sensoren oder Eingabegeräte, die Zeichenketten im UTF‑16‑Format liefern (z. B. Barcode‑Scanner, RFID‑Leser mit Textausgabe). -
Diagnose‑ und Logging‑Schnittstelle
Aufnahme von Statusmeldungen, Warnungen oder Fehlertexten aus einer Steuerungseinheit zur Weiterleitung an ein HMI oder eine Cloud‑Anbindung.
Vergleich mit ähnlichen Bausteinen¶
| Funktionsblock | Typ | Unterschied |
|---|---|---|
StringValue_IWS (vorliegend) |
WSTRING |
Empfängt UTF‑16‑kodierte Zeichenketten. |
StringValue_IWS (normale Variante) |
STRING |
Empfängt ASCII‑/UTF‑8‑Strings, geringere Zeichenabdeckung. |
AnalogInput_IWS |
REAL |
Empfängt analoge Messwerte, keine Zeichenketten. |
EventInput_IWS |
– | Nur Ereignis‑Schnittstelle, keine Daten. |
Der StringValue_IWS ist speziell für die Verarbeitung von Unicode‑Text konzipiert und eignet sich daher für internationale oder zeichensatzlastige Anwendungen.
Fazit¶
Der StringValue_IWS ist ein essenzieller Baustein für die Integration von Text‑Eingaben in IEC 61499‑basierten Steuerungssystemen, insbesondere im ISOBUS‑Umfeld. Seine Unterstützung von WSTRING, die saubere Trennung von Initialisierung, Anforderung und asynchroner Indikation sowie die flexible Objekt‑ID‑Adressierung machen ihn zu einer robusten Lösung für den Empfang breiter Zeichenketten aus verteilten Ressourcen.