DDF-Handbuch / Teil A – Protokoll-DDF

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.