NVS_AX2¶
Einleitung¶
Der Funktionsblock NVS_AX2 dient dem Laden und Speichern von REAL-Daten im nichtflüchtigen Speicher (NVS) eines ESP32 über einen Adapter. Er kapselt die Initialisierung und den Zugriff auf einen einzelnen NVS-Eintrag, der über einen Schlüssel (KEY) identifiziert wird. Der FB bietet eine initialisierende Ereignisschnittstelle und eine bidirektionale Adapter-Schnittstelle, über die extern auf den gespeicherten Wert zugegriffen werden kann. Der Baustein ist nach IEC 61499 modelliert und für den Einsatz in verteilten Automatisierungssystemen optimiert.
Schnittstellenstruktur¶
Ereignis-Eingänge¶
| Ereignis | Typ | Kommentar | Mitgeführte Variablen |
|---|---|---|---|
INIT |
EInit | Service Initialization | QI, KEY, DEFAULT_VALUE |
Ereignis-Ausgänge¶
| Ereignis | Typ | Kommentar | Mitgeführte Variablen |
|---|---|---|---|
INITO |
EInit | Initialization Confirm | QO, STATUS |
Daten-Eingänge¶
| Name | Typ | Kommentar |
|---|---|---|
QI |
BOOL | Event Input Qualifier (Freigabe der Initialisierung) |
KEY |
STRING | Schlüsselname für den NVS-Eintrag |
DEFAULT_VALUE |
BOOL | Standardwert, falls der Schlüssel im NVS nicht existiert (Voreinstellung: FALSE) |
Daten-Ausgänge¶
| Name | Typ | Kommentar |
|---|---|---|
QO |
BOOL | Event Output Qualifier |
STATUS |
STRING | Dienststatus |
Adapter¶
| Adapter | Typ | Kommentar |
|---|---|---|
VAL |
adapter::types::bidirectional::AX2 (Socket) |
Wert (REAL) |
Der Adapter VAL stellt eine bidirektionale Verbindung zu einem externen Baustein her. Über diesen Adapter kann der gespeicherte REAL-Wert gelesen und geschrieben werden. Der Adaptertyp AX2 definiert ein Ereignis- und Datenprotokoll für den Datentransfer.
Funktionsweise¶
-
Initialisierung: Ein Ereignis am Eingang
INITlöst die Initialisierung des internen NVS-Bausteins aus. Dabei werdenQI,KEYundDEFAULT_VALUEübergeben. Nach erfolgreicher Initialisierung wird das EreignisINITOam Ausgang gesendet. Gleichzeitig wird automatisch ein Lesevorgang (GET) für den angegebenen Schlüssel angestoßen. -
Wert auslesen: Der gelesene Wert wird über den Adapter
VALalsDI1(Datenausgang des Adapters) ausgegeben und ein EreignisEI1am Adapter ausgelöst. Der AusgangQOundSTATUSspiegeln das Ergebnis des Lesevorgangs wider. -
Wert speichern: Ein externer Baustein kann über den Adapter
VALein EreignisEO1senden, um einen neuen Wert (bereitgestellt alsDO1) in den NVS zu schreiben. Der interne NVS-Baustein führt dann einen SET-Vorgang durch und bestätigt überSETO. Anschließend wird das EreignisEI1am Adapter ausgelöst, um dem Sender den Abschluss zu signalisieren. -
Statussignalisierung: Die Ausgänge
QOundSTATUSwerden nach jedem Lese- oder Schreibvorgang aktualisiert und mit dem EreignisINITOausgegeben.
Technische Besonderheiten¶
- Persistenz auf ESP32: Der FB nutzt den NVS (Non-Volatile Storage) des ESP32-Mikrocontrollers, um Daten dauerhaft zu speichern. Die Daten bleiben auch nach einem Neustart erhalten.
- Adapter-basierte Kommunikation: Die Schnittstelle zum Anwender erfolgt über einen bidirektionalen Adapter (AX2), der eine flexible und standardisierte Anbindung an andere Bausteine ermöglicht. Der Datentyp ist auf REAL festgelegt.
- Fehlerbehandlung: Über den Ausgang
STATUSkönnen Fehlermeldungen (z. B. NVS-Fehler, fehlender Speicherplatz) abgefragt werden. Der AusgangQOzeigt den Erfolg der Operation an. - Standardkonformität: Der FB ist gemäß IEC 61499 implementiert und verwendet die Bausteinklasse
logiBUS::storage::esp32_nvs::NVS.
Zustandsübersicht¶
Der FB besitzt keinen expliziten Zustandsautomaten, jedoch ergibt sich folgender logischer Ablauf:
- Idle: Kein
INIT-Ereignis empfangen. - Initialisierend: Nach
INIT– der interne NVS-Baustein wird gestartet und ein GET ausgeführt. - Bereit: Nach
INITO– der Baustein wartet auf Lese-/Schreibanforderungen über den Adapter. - Schreibvorgang: Ein
EO1-Ereignis am Adapter löst einen SET-Vorgang aus. - Lesen: Ein erneutes Lesen kann nur durch erneutes
INIToder interne Logik erfolgen (der Baustein liest einmalig beim Start und danach nur bei Schreibvorgängen).
Anwendungsszenarien¶
- Konfigurationsspeicherung: Speichern von Benutzereinstellungen (z. B. Sollwerte, Betriebsmodi) auf einem ESP32-Gerät.
- Kalibrierdaten: Dauerhafte Ablage von Kalibrierwerten für Sensoren.
- Zustandsspeicherung: Speichern des letzten Betriebszustands (z. B. Zählerstände, Schaltstellungen) bei Spannungsausfall.
- Datenprotokollierung: Gezieltes Abspeichern einzelner Messwerte über den Adapter.
Vergleich mit ähnlichen Bausteinen¶
Im Gegensatz zu einfachen Speicherbausteinen (z. B. CTUO oder generischen R_TRIG-Bausteinen) ist NVS_AX2 speziell für die persistente Speicherung auf ESP32-Hardware ausgelegt. Während andere FBs nur flüchtige Daten verarbeiten, gewährleistet dieser Baustein einen dauerhaften Datenerhalt. Die Verwendung eines Adapters bietet mehr Flexibilität als ein fester Ein-/Ausgang, da der Datentyp und die Kommunikationsrichtung klar definiert sind. Im Vergleich zu direkten NVS-API-Aufrufen in IEC 61499 vereinfacht der FB die Integration durch die vollständig deklarative Beschreibung.
Fazit¶
Der Funktionsblock NVS_AX2 ist eine effiziente und standardkonforme Lösung zum persistenten Speichern eines REAL-Werts im NVS eines ESP32. Die klare Schnittstellenstruktur mit Ereignissteuerung und bidirektionalem Adapter erleichtert die Einbindung in komplexe Automatisierungsprojekte. Dank der integrierten Initialisierung und Fehlerprotokollierung ist der Baustein robust und für den industriellen Einsatz geeignet.