DDF-Handbuch / Einführung

Architektur

Datenfluss

flowchart LR
    A[DDF-Datei<br/>CSV] -->|loadDeviceDSC| B[ioDeviceDB<br/>Loader & Geräteinstanzen]
    B -->|PROTOCOL-Präfix| C[Protokolltreiber<br/>MODBUS / REST / MQTT / OCPP / SERCOM / DMX]
    C -->|Rohdaten<br/>ALIAS.xxx| D[Formelinterpreter]
    D -->|ITEM.ALIAS| E[Items / Datenpunkte]
    E -->|varmap / ALIAS| F[myGEKKO-System<br/>Variablen]
    E --> G[GUI<br/>*OBJECT / SVG]
    F -->|Schreibwert| D
    D -->|WFORMULA / *WRITE| C

1. DDF-Datei

Eine CSV-Datei mit ; als Trenner. Der Loader erkennt Blöcke an Zeilen, die mit * beginnen. Die Kopfzeile jedes Blocks legt die Spaltennamen fest.

2. ioDeviceDB (Loader)

3. Protokolltreiber

Gewählt wird nach dem Präfix von PROTOCOL:

Präfix Treiber
MODBUS MODBUS (MODBUS TCP → TCP, MODBUS RTU → RTU, sonst ASCII)
SERCOM serielle ASCII/Binär-Kommunikation
DMX512 DMX-Ausgabe
REST HTTP(S)-Client, Listener, SSE
MQTT MQTT-Client
OCPP OCPP-Central-System (WebSocket-Server)
SVG reines GUI-Gerät ohne Kommunikation

Weil nur das Präfix verglichen wird, funktionieren auch Werte wie MODBUS RTU (DDF) oder SERCOM(new).

4. Formelinterpreter

Jede Funktion (*READ, *WRITE, *FUNCTION) und jedes Item (RFORMULA, WFORMULA) kann eine Formel enthalten. Formeln lesen die Rohdaten (ALIAS.…), rechnen und schreiben Items (ITEM.…) oder Rohdaten zurück. Siehe Formeln und Formelreferenz.

5. Items, varmap und ALIAS

Items sind die Datenpunkte eines Geräts. Sie werden exportiert (Input, wenn keine WFORMULA vorhanden ist, sonst Output) und im myGEKKO-System über varmap/ALIAS auf Systemvariablen abgebildet. GUI-Formeln greifen über $.VARLOCAL.<alias> / $.VARGLOBAL.<pfad> auf diese Alias-Adressen zu (siehe GUI-Variablen).

6. GUI

Über *OBJECT definiert eine DDF, welche Werte in der Visualisierung als Liste erscheinen. Optional wird das Widget per SVG und Formeln frei gezeichnet.

Ablaufzyklus je Gerät

sequenceDiagram
    participant L as Loop (ioDeviceDB Process)
    participant D as Device
    L->>D: process_start (Verbindung aufbauen)
    loop zyklisch
        L->>D: process_data("PREPROCESS")  (*READ)
        L->>D: process_datapoints  (RFORMULA / WFORMULA)
        L->>D: process_data("ONCHANGE")  (*WRITE)
    end

Eine Funktion wird ausgeführt, wenn ihr POLLING-Intervall (ms) abgelaufen ist oder ihr Change-Flag (ALIAS.F) gesetzt wurde.

Mehrere Geräte (Slaves)

Ist SLAVESMAX > 0, legt der Loader mehrere Instanzen an (deviceId 1…n). Ihre Anzahl ist das Maximum aus Slave- und Domainliste, gedeckelt auf SLAVESMAX (max. 250). Bei MODBUS, SERCOM und DMX teilen Slaves > 1 die Verbindung von Device 1. Details: Spalten & Keywords.