NVS_AIS¶
Einleitung¶
Der Funktionsblock NVS_AIS dient zum Speichern und Laden von Zeichenketten (STRING) im nichtflüchtigen Speicher (NVS – Non‑Volatile Storage) eines ESP32‑Mikrocontrollers. Die Daten werden über einen Schlüssel (KEY) adressiert und über AIS‑Adapter (Acyclic Information Service) ausgetauscht. Der Baustein kapselt die Initialisierung des NVS sowie die grundlegenden Lese‑ und Schreiboperationen und stellt eine standardisierte Schnittstelle für die Einbindung in industrielle Steuerungsanwendungen bereit.
Schnittstellenstruktur¶
Ereignis-Eingänge¶
| Ereignis | Typ | Beschreibung | Mitgeführte Daten |
|---|---|---|---|
| INIT | EInit | Service Initialization – Startet den Baustein und die Kommunikation mit dem NVS. | QI, KEY, DEFAULT_VALUE |
Ereignis-Ausgänge¶
| Ereignis | Typ | Beschreibung | Mitgeführte Daten |
|---|---|---|---|
| INITO | EInit | Initialization Confirm – Bestätigt die erfolgreiche Initialisierung oder signalisiert einen Fehler. | QO, STATUS |
Daten-Eingänge¶
| Name | Datentyp | Beschreibung |
|---|---|---|
| QI | BOOL | Event Input Qualifier – Steuert das Verhalten während der INIT‑Phase (z. B. Aktivierung). |
| KEY | STRING | Key name – Der Schlüssel, unter dem der Wert im NVS gespeichert/abgerufen wird. |
| DEFAULT_VALUE | STRING | Default value – Wert, der gelesen wird, falls im NVS kein Eintrag zum angegebenen KEY existiert. |
Daten-Ausgänge¶
| Name | Datentyp | Beschreibung |
|---|---|---|
| QO | BOOL | Event Output Qualifier – Gibt den Erfolg der letzten Operation an. |
| STATUS | STRING | Service Status – Rückmeldung des NVS‑Treiberstatus (z. B. Fehlertexte). |
Adapter¶
| Adapter | Typ | Beschreibung |
|---|---|---|
| AIS_IN | adapter::types::unidirectional::AIS (Socket) |
Value to store (SET) – Empfängt einen zu speichernden STRING‑Wert über das AIS‑Protokoll. |
| AIS_OUT | adapter::types::unidirectional::AIS (Plug) |
Stored value output (GETO) – Sendet den gelesenen STRING‑Wert aus dem NVS über das AIS‑Protokoll. |
Funktionsweise¶
-
Initialisierung
Ein Ereignis amINIT-Eingang startet die interne Logik. Der Baustein ruft den eingebettetenNVS‑Funktionsblock auf, der den nichtflüchtigen Speicher vorbereitet. Die mitgelieferten Daten (QI,KEY,DEFAULT_VALUE) werden an den internen Baustein weitergeleitet. -
Lesevorgang
Nach erfolgreicher INIT‑Phase (EreignisINITOdes internen NVS) wird automatisch derGET‑Ereigniseingang des internen NVS aktiviert. Der gelesene Wert (oder derDEFAULT_VALUE, falls kein Eintrag existiert) wird über denAIS_OUT‑Adapter alsE1‑Ereignis undD1‑Daten ausgegeben. -
Schreibvorgang
Über denAIS_IN‑Adapter kann ein neuer Wert empfangen werden. Das assoziierteSET‑Ereignis (E1) wird auf den internen NVS‑Baustein geleitet, der den empfangenen Wert (D1) unter dem zuvor gesetztenKEYspeichert. Die Bestätigung (SETO) wird wiederum über denAIS_OUT‑Adapter gesendet. -
Rückmeldung
Sowohl nach dem Lesen als auch nach dem Schreiben gibt der Baustein den Status (QO,STATUS) sowie dasINITO-Ereignis aus. Der Status kann für Fehlerdiagnosen genutzt werden.
Technische Besonderheiten¶
- NVS für ESP32 – Der Baustein ist speziell für den nichtflüchtigen Speicher des ESP32 ausgelegt und verwendet die entsprechende Treiber‑API.
- Adapter‑Schnittstelle – Die Kommunikation mit der Außenwelt erfolgt ausschließlich über AIS‑Adapter (unidirektional). Dies entkoppelt den Baustein von konkreten Bus‑ oder Applikationsprotokollen.
- Automatische Leseoperation nach INIT – Nach der Initialisierung wird unverzüglich ein Lesevorgang gestartet, sodass der gespeicherte Wert sofort am Ausgang bereitsteht.
- Einheitlicher Status – Alle relevanten Zustandsinformationen werden über die Ausgänge
QOundSTATUSzurückgemeldet.
Zustandsübersicht¶
Der Baustein NVS_AIS selbst besitzt keine explizite Zustandsmaschine. Sein Verhalten wird vollständig durch den eingebetteten NVS‑Funktionsblock gesteuert, der die typischen Zustände eines NVS‑Treibers durchläuft (z. B. Initialisierung, Bereit, Fehler). Die Ereignisse INIT und INITO bilden den Start‑Stopp‑Zyklus ab; die Adapter‑Ereignisse E1 leiten die Schreib‑/Leseanforderungen ein.
Anwendungsszenarien¶
- Konfigurationsspeicher – Persistentes Ablegen von Geräteeinstellungen (z. B. Netzwerk‑Parameter, Betriebsmodi) als Zeichenketten.
- Datenaustausch mit anderen Bausteinen – Verwendung der AIS‑Adapter zur einfachen Einbindung in eine IEC‑61499‑Anwendung, ohne direkte Bus‑ oder Speicherzugriffe programmieren zu müssen.
- Wiederherstellung nach Neustart – Die Kombination aus INIT, automatischem Lesen und Default‑Werten stellt sicher, dass ein defnitiert initialisierter Zustand erreicht wird.
Vergleich mit ähnlichen Bausteinen¶
NVS(direkt): Der direkte NVS‑Baustein bietet detailliertere Steuerungsmöglichkeiten (eigene Ereignisse für GET/SET), erfordert aber eine manuelle Verbindung der Schnittstellen.NVS_AISvereinfacht die Anwendung durch die Einbettung der Lese‑/Schreiblogik und die standardisierten Adapter.- Weitere Speicher‑Bausteine (z. B. für SD‑Karte): Diese arbeiten meist mit anderen Protokollen (SPI, I²C) und bieten unterschiedliche Speicherschemata.
NVS_AISist auf die spezifischen Eigenschaften des ESP32‑NVS optimiert (Schlüssel‑Wert‑Paare, geringe Latenz).
Fazit¶
NVS_AIS ist ein praktischer Funktionsblock, der das Speichern und Laden von Zeichenketten im nichtflüchtigen Speicher des ESP32 kapselt und über eine saubere Adapter‑Schnittstelle bereitstellt. Durch die automatisierte Initialisierung und die Integration von Lese‑ und Schreibvorgängen eignet er sich besonders für Anwendungen, die eine einfache, zuverlässige Persistenz von Konfigurationsdaten benötigen. Die Adapter‑Anbindung ermöglicht eine lose Kopplung mit anderen Bausteinen und erhöht die Wiederverwendbarkeit in verschiedenen IEC‑61499‑Projekten.