Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Child pages (Children Display)

Kurzleitfaden

Aufgabenstellung

Folgende Schaltung soll mittels Custom Logik abgebildet werden:

  • In, dt_ON und dT_OFF sind Eingangsvariablen (mit einem Eingang verbunden)

  • Limit_ON, Delayed_ON und Extend_ON sind interne Variablen

  • Out ist die Ausgangsvariable (mit dem Ausgang verbunden)

...

Custom Logikzelle anlegen und editieren

  • Zum erstmaligen Anlegen einer Custom Logik wählt man "Add Logic" im Logik Manager.

  • "Benutzerdefiniert Logik" anklicken und im Texteditor den Code eintragen/einfügen und mit OK abschließen.

  • Um diesen nachträglich anzupassen oder zu ändern, muss die Logikzelle zunächst aufgeklappt werden und anschließend klickt man neben dem Zellennamen auf editieren.

Code Block
{
    "Level":[
        ["$In","bool",false],
        ["$dT_ON","float",0],
        ["$dT_OFF","float",0],
        ["$Out","bool",false],
        ["$Limit_ON","bool",false],
        ["$Delayed_ON","bool",false],
        ["$Extend_ON","bool",false],
        ["$VAR<Inhibit?>","bool",false]
    ],
    "Module":[
        ["Break",["$VAR<Inhibit?>"]],
        ["Monoflop","$In","-$In","$Limit_ON","$dT_ON",2],
        ["And",["$In","-$Limit_ON"],"$Delayed_ON"],
        ["Monoflop","$Delayed_ON","$Delayed_ON","$Extend_ON","$dT_OFF",4],
        ["Or",["$Delayed_ON","$Extend_ON"],"$Out"]
    ],
    "Input":[
        ["In","Eingang","$In","c"],
        ["dT_Ein","Einschaltverzögerung[s]","$dT_ON","c"],
        ["dT_Aus","Ausschaltverzögerung[s]","$dT_OFF","c"],
        ["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
    ],
    "Output":[
        ["Out","Ausgang","$Out","c"]
    ]
}

Logik-Zelle mit Objekten verknüpfen:

Damit erhält man folgende Logikzelle, deren Ein- und Ausgänge noch mit Objekten verbunden werden müssen:

...

Erklärungen zur Custom Logik:

Das Grundgerüst jeder Logik-Definition sind die Abschnitte Level, Module, Input und Output mit jeweils einem Array als Wert: { "Level": [] , "Module": [], "Input": [], "Output": [] }

Level-Array:

Der Level-Abschnitt ist die Deklaration von Variablen, über die Informationen zwischen Modulen, In- und Outputs ausgetauscht werden können.

...

  • "Level": [ [<Variablenname>, <Typ>, <Init value>], ... ]

  • Der Variablenname ist ein String, beginnend mit einem "$". Darauf kann man sich später in Module, Input und Output beziehen.

  • Mögliche Typen: "bool", "float", "integer" oder "string". Mit dem Init value kann für die Variable ein Default-Wert gesetzt werden, der bis zum ersten Beschreiben der Variable gültig ist. Der Wert muss dabei zum <Typ> passen!

Modul-Array:

Im Modul-Abschnitt werden die Variablen mit den Ein-und Ausgängen der Logik-Modulbausteine verknüpft.

...

Info

Hinweis: In den Funktionen sind aktuell nur Variablen, die im Abschnitt Level definiert wurden erlaubt. Es können keine Parameter als Zahl eingeben werden!

Input-Array:

Im Abschnitt Input werden die Variablen mit den Eingängen der Custom-Logikzelle verknüpft.

...

  • "Input": [ [<Name>, <Beschreibung>, <Variablenname>, <Trigger-Option> ], ... ]

  • Der Name ist ein String, mit dem der Eingang in der GUI angezeigt wird. Die Beschreibung wird bei "Mouse over" angezeigt.

  • Der Variablenname bestimmt, welche Variable mit den Eingang verknüpft ist.

  • Die Trigger-Optionen bestimmen analog den Standardlogiken, wann ein Signal am Eingang die Berechnung der Logikzelle anstößt. Mögliche Optionen:

    • "a": jedesmal (always)

    • "c": nur bei Wertänderung (on change)

    • "u": kein Trigger, nur Wertübernahme (update only)

Output-Array:

Im Abschnitt Output werden die Variablen mit den Ausgängen der Custom-Logikzelle verknüft.

...

  • "Output": [ [<Name>, <Beschreibung>, <Variablenname>, <Sende-Option> ], ... ]

  • Der Name ist ein String, mit dem der Ausgang in der GUI angzeigt wird. Die Beschreibung wird bei "Mouse over" angezeigt.

  • Der Variablenname bestimmt, welcher Variable mit den Ausgang verknüpft ist.

  • Die Sende-Optionen bestimmen analog den Standardlogiken, wann ein Wert am Ausgang gesendet wird. Mögliche Optionen:

    • "a": jedesmal (always)

    • "c": nur bei Wertänderung (on change)

    • "t": wenn ein Timer abgelaufen ist (on timer)

    • “ct”: timer abgelaufen oder Wert geändert

    • “x”: send explict (innerhalb der Logik festgelegtes Sendeverhalten)

Visualisierung der Variablen in Grafana (DokMode) - Fehlersuche

Für den Funktionstest und Fehlersuche von Custom Logiken ist der Doktormodus unerlässlich. Durch klick auf das Grafana-Symbol (rechts unten, oberhalb des Speichern Buttons) können alle Variablen im zeitlichen Verlauf angezeigt werden. Dies ist insbesondere für interne Variablen, Timer etc. hilfreich.

...