Uebung_012l: String Input und Speichern NVS¶
Einleitung¶
Diese Übung demonstriert das Einlesen eines Strings von einer ISOBUS-Variablen (InputString_S1) und das Speichern dieses Wertes im nichtflüchtigen Speicher (NVS) eines ESP32. Beim Starten der Applikation wird der zuletzt gespeicherte String automatisch aus dem NVS geladen und an die entsprechende ISOBUS-Variable zurückgeschrieben. Somit bleibt der Wert auch nach einem Neustart erhalten.
Verwendete Funktionsbausteine (FBs)¶
StringValue_IS¶
- Typ:
isobus::UT::io::StringValue::StringValue_IS - Parameter:
QI=TRUEu16ObjId=InputString_S1- Funktionsweise: Der Baustein empfängt den aktuellen Stringwert der ISOBUS‑Objektvariablen
InputString_S1. Wann immer sich dieser Wert ändert (z. B. durch eine Eingabe am Terminal), wird am EreignisausgangINDein Signal erzeugt und der neue String am DatenausgangINbereitgestellt.
NVS¶
- Typ:
logiBUS::storage::esp32_nvs::NVS - Parameter:
QI=TRUEKEY=KEY_S1_STOREDEFAULT_VALUE=STRING#'Test'- Funktionsweise: Der Baustein verwaltet den nichtflüchtigen Speicher auf dem ESP32.
- Bei einem Ereignis an
SETspeichert er den anVALUEanliegenden String unter dem SchlüsselKEY_S1_STOREab. - Bei einem Ereignis an
GETlädt er den gespeicherten String und stellt ihn am DatenausgangVALUEObereit. - Nach der Initialisierung (
INITO) löst er automatisch einenGETaus.
Q_StringValue¶
- Typ:
isobus::UT::Q::Q_StringValue - Parameter:
u16ObjId=InputString_S1- Funktionsweise: Dieser Baustein schreibt („qualifiziert“) einen empfangenen String zurück in die ISOBUS‑Variable
InputString_S1. Ein Ereignis anREQübernimmt den Wert vonpau8Stringund aktualisiert die ISOBUS‑Variable.
Programmablauf und Verbindungen¶
Initialisierung (Start)¶
- Nach dem Start des Controllers erhält der
NVS-Baustein das EreignisINITO. - Dieses Ereignis wird intern mit dem Ausgang
GETverbunden (im XML alsConnection Source="NVS.INITO" Destination="NVS.GET" …sichtbar). Somit wird sofort ein Lesevorgang ausgelöst. - Der
NVS-Baustein lädt den unterKEY_S1_STOREgespeicherten String (oder den Default‑Wert"Test", falls noch kein Wert gespeichert wurde) und gibt ihn am AusgangVALUEOaus. - Gleichzeitig erzeugt der
NVSam AusgangGETOein Ereignis, das mit demREQ-Eingang vonQ_StringValueverbunden ist. Q_StringValueübernimmt den String vonNVS.VALUEO(viapau8String) und schreibt ihn in die ISOBUS‑VariableInputString_S1.
Änderung des Strings (z. B. durch Terminaleingabe)¶
- Sobald der Wert von
InputString_S1von außen geändert wird (z. B. über ein Bedienterminal), erzeugtStringValue_ISein Ereignis anIND. - Dieses Ereignis ist mit dem
SET-Eingang desNVS-Bausteins verbunden. NVSspeichert den aktuellen String (vonStringValue_IS.INüber die Datenverbindung anNVS.VALUE) unter dem SchlüsselKEY_S1_STORE.- Hinweis: Nach dem Speichern wird nicht automatisch der
Q_StringValueaktualisiert. Die Rückschreibung in die ISOBUS‑Variable erfolgt nur beim Start. Das ist beabsichtigt, da der Wert ja bereits im Terminal sichtbar ist.
Datenverbindungen im Überblick¶
- Ereignisse:
NVS.INITO→NVS.GET(initialer Lesevorgang)NVS.GETO→Q_StringValue.REQ(Ausgabe des geladenen Strings)StringValue_IS.IND→NVS.SET(Speicherung bei Änderung)- Daten:
NVS.VALUEO→Q_StringValue.pau8String(zu ladender String)StringValue_IS.IN→NVS.VALUE(zu speichernder String)
Wichtige Konstanten¶
KEY_S1_STORE: Der NVS‑Schlüssel, unter dem der String gespeichert wird.InputString_S1: Die ID der ISOBUS‑Stringvariablen, die als Quelle und Ziel dient.
Lernziele¶
- Verständnis der nichtflüchtigen Speicherung (NVS) auf ESP32‑Systemen.
- Umgang mit ISOBUS‑Stringvariablen in 4diac.
- Ereignisgesteuerte Abläufe: Initialisierung und reaktive Speicherung.
- Verwendung von vordefinierten Konstanten (Schlüssel, Objekt‑IDs).
Benötigte Vorkenntnisse¶
- Grundlegende Bedienung der 4diac‑IDE.
- Grundlagen der ISOBUS‑Kommunikation (Objekt‑IDs, Werte lesen/schreiben).
- Einfaches Verständnis von ereignisgesteuerten Systemen.
Zusammenfassung¶
Die Übung Uebung_012l zeigt, wie ein ISOBUS‑String in den NVS‑Speicher des ESP32 geschrieben und beim Systemstart wieder ausgelesen wird. Der Wert bleibt dauerhaft erhalten, auch nach einem Neustart oder Spannungsausfall. Die Applikation besteht aus drei Funktionsbausteinen, die über Ereignis- und Datenverbindungen zusammenarbeiten und demonstriert einen typischen Anwendungsfall für persistenten Variablenzugriff in der Landtechnik‑Automatisierung.