Variablen & Namensraum
In Formeln einer Geräte-DDF löst der Interpreter Variablennamen in dieser Reihenfolge auf:
| Präfix | Bedeutung | Lesen | Schreiben |
|---|---|---|---|
x, y |
Eingangswert der Formel (bei WFORMULA: neuer Wert) |
✔ | ✔ |
X.<id> |
Item über seine numerische ID | ✔ | ✔ |
ITEM.<ALIAS> |
Item über Alias | ✔ | ✔ |
ITEM.<grp>.<ALIAS> |
Item mit Gruppe (z. B. ITEM.0.TEMPERATURE) |
✔ | ✔ |
IO.<grp>.<idx> |
Eintrag aus *IO |
✔ | ✔ |
<FunktionsALIAS>.<…> |
Rohdaten der Funktion, protokollspezifisch | ✔ | teilweise |
$.PARAM.<KEY> |
Parameter aus *GENERAL bzw. Benutzerparameter |
✔ | ✔ |
$.GPARAM.<KEY> |
Parameter von Instanz 1 (Multi-Slave) | ✔ | – |
$.GPARAM.SLAVELIST |
Slaveliste | ✔ | – |
$.SLAVE |
eigene Instanznummer (deviceId) | ✔ | – |
$.SLAVE.<n>.<var…> |
Variable der Instanz n |
✔ | ✔ |
$.DEVICE |
Stations-ID | ✔ | – |
$.CONNECTSTATE |
Verbindungsstatus | ✔ | – |
$.ITEMMASK |
Maske der Items | ✔ | ✔ |
$.CONFIG.<idx> |
Konfigurationswert | ✔ | ✔ |
$.SYS.TIME / $.SYS.TIME_MS |
Systemzeit (s / ms) | ✔ | – |
$.SYS.DEBUG.<text> |
Text ins Debug-Log schreiben | – | ✔ |
$.SYS.SAVE_JSON.<json> |
Retain-Daten speichern (max. 2× pro Stunde) | – | ✔ |
$.SYS.FUNCTION.SLAVE.METHOD.GETSET.MASTER.START.LEN |
Registerkopie zwischen Slaves (MODBUS) | – | ✔ |
$.SYS.LOAD_CONFIG |
Konfiguration neu laden | – | ✔ |
__name |
formel-lokale, gecachte Variable | ✔ | ✔ |
| alles andere | geräteweite temporäre Variable (tmpvars), bleibt zwischen Formelaufrufen erhalten | ✔ | ✔ |
Temporäre Variablen als Zustandsspeicher
Jeder unbekannte Name ist eine geräteweite Variable, die zwischen den Zyklen erhalten bleibt. Damit lassen sich Flanken, Zähler und Merker bauen, z. B. IF language != languageOld THEN … ENDIF; languageOld:=language; im DEMO_DDF.
Allgemeine Suffixe für Rohdaten
Diese Suffixe gelten für alle Funktions-Aliase, unabhängig vom Protokoll:
| Suffix | Bedeutung | r/w |
|---|---|---|
.F |
Change-/Trigger-Flag. Auf 1 setzen, damit die Funktion beim nächsten Zyklus ausgeführt wird (unabhängig von POLLING). |
r/w |
.Q |
Qualität / letzte Ausführung ok (1) | r |
.L |
Länge der empfangenen Daten | r |
.EC |
Fehlerzähler | r/w |
.EN |
Fehlernummer | r |
.P |
Pause in s, bevor die Funktion erneut läuft | r/w |
.T |
Zeitstempel der letzten Daten (Unix) | r |
.URL / .LC |
zuletzt verwendete URL bzw. letztes Kommando | r |
Typisches Muster:
IF DATA.Q THEN
ITEM.0.TEMPERATURE:=DATA.4.FLOAT;
ENDIF;
Protokollspezifische Zugriffe stehen in den Protokollkapiteln.