Uebung_012j: String Input und Speichern INI¶
Einleitung¶
Diese Übung demonstriert die Verarbeitung und Speicherung eines String-Werts mittels eines INI-Funktionsbausteins.
Ziel ist es, einen von einem Feldbusobjekt (ISOBUS) eingelesenen String in einer INI-Datenstruktur persistent zu speichern und anschließend wieder abzurufen.
Die Konfiguration verwendet vordefinierte Konstanten für den Speicherabschnitt (SECTION_S1_STORE), den Schlüssel (KEY_S1_STORE) sowie die Objekt-ID des Eingabe-Strings (InputString_S1).
Verwendete Funktionsbausteine (FBs)¶
FB: StringValue_IS¶
- Typ:
isobus::UT::io::StringValue::StringValue_IS - Parameter:
QI=TRUE(aktiv)u16ObjId=InputString_S1(Objekt-ID des ISOBUS-String-Objekts)- Ereignisse:
- Ereignisausgang:
IND(wird ausgelöst, wenn ein neuer Stringwert empfangen wird) - Daten:
- Datenausgang:
IN(der gelesene String-Wert) - Funktionsweise:
Liest bei Aktivierung den Stringwert von der spezifizierten ISOBUS-Objekt-ID (InputString_S1) und gibt diesen über den AusgangINsowie ein EreignisINDaus.
FB: INI¶
- Typ:
eclipse4diac::storage::INI - Parameter:
QI=TRUE(aktiv)SECTION=SECTION_S1_STORE(Abschnitt in der INI-Datei)KEY=KEY_S1_STORE(Schlüssel innerhalb des Abschnitts)DEFAULT_VALUE=STRING#'Test'(Standardwert, falls noch kein Eintrag existiert)- Ereignisse:
- Ereigniseingänge:
SET(speichert den anliegenden Wert),GET(liest den gespeicherten Wert) - Ereignisausgänge:
INITO(nach erfolgreicher Initialisierung),GETO(nach erfolgreichem Lesevorgang) - Daten:
- Dateneingang:
VALUE(der zu speichernde String) - Datenausgang:
VALUEO(der ausgelesene String) - Funktionsweise:
Der FB verwaltet einen persistenten String-Wert im INI-Format. Beim EreignisSETwird der anliegendeVALUEunter dem angegebenen Schlüssel und Abschnitt gespeichert. Beim EreignisGETwird der gespeicherte Wert aufVALUEOausgegeben und das EreignisGETOgesendet. Bei Initialisierung (INITO) wird automatisch einGETausgeführt.
FB: Q_StringValue¶
- Typ:
isobus::UT::Q::Q_StringValue - Parameter:
u16ObjId=InputString_S1(Objekt-ID – wird hier nicht direkt verwendet, aber als Kontext)- Ereignisse:
- Ereigniseingang:
REQ(Anforderung zur Ausgabe) - Daten:
- Dateneingang:
pau8String(der auszugebende String) - Funktionsweise:
Nimmt einen String entgegen und stellt ihn auf dem ISOBUS-Objekt mit der angegebenen ID zur Verfügung (z. B. zur Anzeige auf einem Terminal).
Programmablauf und Verbindungen¶
Der Programmablauf gliedert sich in zwei Phasen: Initialisierung und zyklische Verarbeitung.
Ereignisverbindungen¶
- Initialisierung:
Der FBINIerzeugt nach erfolgreicher Initialisierung das EreignisINITO. Dieses wird direkt mit demGET-Eingang vonINIverbunden. Dadurch wird unmittelbar nach dem Start der gespeicherte Wert gelesen. - Lesen des gespeicherten Werts:
Nach dem Lesevorgang gibtINIdas EreignisGETOaus. Dieses triggert denREQ-Eingang vonQ_StringValue, sodass der ausgelesene String an das ISOBUS-Objekt übergeben wird. - Speichern eines neuen Werts:
WennStringValue_ISeinen neuen String vom ISOBUS-Objekt empfängt, sendet es das EreignisIND. Dieses ist mit demSET-Eingang vonINIverbunden, sodass der neue Wert gespeichert wird.
Datenverbindungen¶
- Der Ausgang
INvonStringValue_ISwird mit dem DateneingangVALUEvonINIverbunden – der gelesene String wird zum Speichern weitergegeben. - Der Ausgang
VALUEOvonINIwird mit dem Dateneingangpau8StringvonQ_StringValueverbunden – der ausgelesene String wird für die Ausgabe bereitgestellt.
Ablaufdiagramm (vereinfacht)¶
- Start:
INIinitialisiert →INITO→GET→ liest gespeicherten Wert →GETO→Q_StringValue.REQ→ Ausgabe des gespeicherten Strings. - Neuer Eingang:
StringValue_ISempfängt neuen String →IND→INI.SET→ speichert den neuen Wert. - Nach einem erneuten
GET(z. B. durch zyklischen Trigger) wird der aktuell gespeicherte Wert ausgegeben.
Zusammenfassung¶
Die Übung Uebung_012j vermittelt den Umgang mit:
- Einlesen eines String-Werts von einem ISOBUS-Objekt (
StringValue_IS) - Persistenter Speicherung des Werts mittels
INI-Funktionsbaustein (Abschnitt, Schlüssel, Standardwert) - Rückgabe des gespeicherten Werts an ein ISOBUS-Objekt (
Q_StringValue)
Durch die Verwendung von Konstanten (SECTION_S1_STORE, KEY_S1_STORE, InputString_S1) wird eine klare Trennung zwischen Konfiguration und Logik erreicht. Der Ablauf zeigt eine typische Initialisierungs- und Update-Strategie für dezentrale Steuerungssysteme mit Speicherbedarf.