4.6.1_ Einleitung zum Logikeditor und -engine
Beschreibung: Allgemeines zu Logik am TWS
Kategorie: Logiken
Link zu diesem Beitrag: Alles auswählen
[url=https://forum.timberwolf.io/app.php/kb/viewarticle?a=91&sid=07046930adef20153dbaafe4a9ae2d31]Knowledge Base - 4.6.1_ Einleitung zum Logikeditor und -engine[/url]
Wiki: https://elabnet.atlassian.net/l/cp/Ba5Z2Xe7
Der Timberwolf Logikeditor hat vielseitige Funktionen, die in diesem und den folgenden Kapiteln beschrieben werden, wie zb:
- Erstellen von einfachen Logiken inkl. Benennung und Beschreibungstexten
- Verknüpfen der Logikzellen mit beliebigen (geeigneten) Objekten
- Kombination von Standard-Logikbausteinen mittels Custom-Logik
- Umfassende Analysemöglichkeiten mittels Doctor-Modus und Grafana
- Erstellen einer einfachen UND-Logik
Im Logik-Übersichtsmenü kann mittels "+Add Logic" eine Logik hinzugefügt werden:
- Verknüpfen der Ein- und Ausgänge mit Objekten
Nach dem Anlegen der Logikzelle müssen die entsprechenden Ein- und Ausgänge mit Objekten verknüpft werden. Nach dem Anklicken eines Ein- oder Ausganges öffnet sicher der DOS (Dispatcher Object Selector), mit dem ein beliebiges Objekt zugeordnet werden kann.
Die Suche erfolgt dynamisch bei Eingabe im gewählten Quellsystem (KNX, 1-wire, Modbus, DMX, etc.). Durch Auswahl eines Objektes in den Suchergebnissen und Bestätigung wird das Objekt verknüpft.
Hinweise:- Die Logik Engine legt automatisch für jeden Ausgang ein "LE"-Objekt an, welches direkt als Eingang in weiteren Logiken verwendet werden kann (Verknüpfung mittels DOS). Um einen Ausgangswert LE-intern weiter zu verarbeiten, ist es also kein "Muss", selber ein Ausgangsobjekt anzulegen und oder einen Umweg über ein KNX-Objekt zu gehen. Nur wenn ein Ausgangswert außerhalb der Logikengine verwendet werden soll (z. B. an KNX senden oder in eine Time Series schreiben) muss ein entsprechendes Objekt verknüpft werden.
- 1-wire Objekte können direkt am TWS angelegt und editiert werden (siehe xxx Object Editor), jedes KNX Objekt muss über die ETS angelegt und programmiert werden (aufgrund der zertifizierten KNX Schnittstelle am TWS). Zusätzlich empfiehlt sich der Projektimport, damit die Beschreibungen richtig angezeigt werden.
ACHTUNG: Standardmäßig wird eine Logikzelle direkt mit dem Speichern aktiviert und reagiert entsprechend den Einstellungen auf eingehen Telegramme und sendet gegebenenfalls auf die Ausgangsobjekte!!!
- Optionen für Eingänge festlegen
Für jedes Eingangsobjekt stehen je nach Art des Einganges verschiedene Optionen zur Verarbeitung vor der Übergabe in die Logikzelle zur Verfügung:- Parameter: Definiert für einen Eingang einen Konstanten Wert.
- Innerhalb Bereich: Prüft ob der Eingangswert im Bereich liegt (wenn ja, dann bekommt der Eingang den Zustand "true", sonst "false").
- Schwellwert unter: Wird der Schwellwert unterschritten, dann nimmt der Eingang den Zustand "true" an.
- Schwellwert über: Wird der Schwellwert überschritten, dann nimmt der Eingang den Zustand "true" an.
- Schwellwert mit Hysterese: Wird die obere Grenze überschritten, dann nimmt der Eingang den Zustand "true" an, beim Unterschreiten des unteren Grenze schaltet der Eingang auf "false". Dazwischen verbleibt der Eingang im bisherigen Zustand.
- Optionen für Ausgänge festlegen
Für jedes Ausgangsobjekt stehen je nach Art des Ausganges verschiedene Optionen zur Verarbeitung nach der Berechnung vor Ausgabe an die Ausgangsobjekte zur Verfügung:- Mapping: Damit kann den Werten true/false ein beliebiger Wert zB Szenennummer oder Float-Zahl zugeordnet werden.
- Einschaltverzögerung: Das Einschalten von 0 auf 1 wird um eine definierte Zeit verzögert gesendet.
- Ausschaltverzögerung: Das Ausschalten von 1 auf 0 wird um eine definierte Zeit verzögert gesendet.
- Ein- und Ausschaltverzögerung: Das Umschalten von 0 auf 1 und 1 auf 0 wird verzögert. Es können getrennte Verzögerungszeiten für das Ein- bzw. Ausschalten definiert werden.
- Ausführungsverhalten der Logik
Die Neuberechnung der Logik wird ausgelöst, wenn:
- sich mindestens ein Eingangssignal ändert (abhängig von der festgelegten Trigger-Option am jeweiligen Eingang), oder
- mindestens ein eigener Triggereingang betätigt wird
Parameter haben keinen Trigger, der die die Ausführung der Logik anstoßen könnte. Daher führt eine Wertänderung eines Parameters im Doktor-Modus auch nicht zu einer Neuberechnung der Logikzelle.
Die korrekte Vorgehensweise ist die Anpassung des Wertes in der Eingabemaske des Parameters und speichern der Logik.
Die Trigger-Optionen an den Eingängen bestimmen, wann ein Signal am Eingang die Berechnung der Logikzelle anstößt. Durch Anklicken
des Buchstabens kann aus den möglichen Optionen gewählt werden:- "a" (always): Jedesmal wenn ein Telegramm am Eingang empfangen wird.
- "c" (on change): wenn ein Telegramm mit geändertem Wert empfangen wurde
- "u" (update only): kein Trigger der Logikzelle, aber der Wert wird in die Logik übernommen. Wird die Logik durch einen anderen Eingang oder Trigger später ausgeführt, wird der letzte an diesem Eingang empfangene Wert verwendet.
"u" ist eigentlich selten notwendig, insbesondere aber, wenn ein Objekt mehrfach an eine Zelle angeschlossen ist zB. Eingang + Inhibit.
- "a": jedesmal (always)
- "c": nur bei Wertänderung
- "t": wenn ein Timer abgelaufen ist (on timer)
- Monoflop (single shot timer): Triggert nach Ablauf der Zeitdauer
- Clock (zyklischer Timer) : Triggert jedesmal nach Wechsel des Taktzustandes
- Cron (Uhrzeit abhängiger Timer): Triggert jedesmal bei erreichen der eingestellten Zeit(en)
- Erstellung eines Triggers
In manchen Fällen (zB Logikzelle ohne Eingangsobjekt) ist die Ausführung der Logikzelle durch einen Zeit-Trigger erwünscht. Dieser wird mit dem "+"-Symbol angelegt:
- Intervall: zyklisches Senden
- Data Value: Zusätzliches Eingangsobjekt, dass als Trigger dient.
- Zeit: Trigger zu einem bestimmten Zeitpunkt (auswählbar Wochentage und Uhrzeit)
- Bearbeiten und Löschen von Triggern oder Eingängen
Durch Anklicken der Benennung des Einganges kann dieser zB invertiert werden. Zusätzlich kann ein manuell hinzugefügter Eingang oder Trigger jederzeit wieder gelöscht werden.
- Aktivieren und Pausieren der Logik
Jede der angelegten Logiken lässt sich unabhängig von allen anderen Logikzellen einzeln stoppen, starten und verändern.
Durch drücken des Play/Pause Buttons kann die Logik aktiviert bzw. pausiert werden. Nach dem Aktivieren ist die Logik unmittelbar scharf und reagiert auf eintreffende Telegramme entsprechend dem gewählten Ausführungsverhalten des jeweiligen Einganges.
Wenn die Logik angehalten ist, werden keine Werte mehr an den Eingängen übernommen, d.h. die Logik hat nach der "Pause" dieselben Werte, wir vor der "Pause". Die Logikzelle wird nicht mehr berechnet und natürlich werden keine Werte gesendet.
Will man die Logik "anhalten", aber die Werte an den Eingängen sollen zwischenzeitlich aktualisiert werden, geht das mit dem "Inhibit"-Eingang, der durch Drücken des "+" (auch mehrfach) hinzugefügt werden kann.
- Temporäres Abkoppeln von Ein- und Ausgängen von der Logikzelle
Jeder Ein- und Ausgang kann durch einen Klick auf das Stecker-Symbol vom Quell- oder Zielobjekt abgekoppelt werden.
Gekoppelt: / Abgekoppelt: (Zum Wechseln der Zustände auf das Symbol klicken)
Damit kann Beispielsweise das Verhalten der Logik im Doktormodus beobachtet werden, ohne dass das Ergebnis der Logikzelle auf das Zielobjekt geschrieben wird. Gleiches gilt für abgekoppelte Eingänge. In diesem Fall triggert ein eintreffender Wert die Ausführung der Logik nicht bzw. wird der empfangene Wert auch nicht in die Logik übernommen.
Ein Beispiel mit abgekoppelten Ausgang ist im Bild des nachfolgenden Abschnittes "Doktormodus" zu sehen. - Doktormodus
Durch Anklicken des Stethoskop-Symbols wird der Doktormodus der Logikzelle aktiviert. Damit werden die aktuellen Eingangs- und Ausgangswerte live dargestellt, durch Klick auf das Vergrößerungssymbol wird für jeden Wert auch der zeitliche Verlauf dargestellt.
Im Doktormodus können zu Analysezwecke alle Ein- und Ausgänge händisch überschrieben werden. Da dies am laufenden System erfolgt, ist entsprechende Vorsicht geboten. Weiters liegt es im Ermessen des Anwenders, ob dies bei an- oder abgekoppelten Ein- oder Ausgängen geschieht bzw. ob nach dem Überschreiben ein Wert vor dem Beenden des Doktormodus wieder manuell auf den Ursprungswert gesetzt wird oder der gesetzte Wert erst durch den nächsten empfangenen Wert überschrieben wird.
ACHTUNG: für versierte Anwender:
Weiters ist zu beachten, dass Konstanten an Eingängen nur beim Speichern in die Logikberechnung übernommen werden. Dies gilt inbesondere auch für den Doktormodus.
Werden im Doktormodus Werte Live überschrieben (mittels Vergrößerungssymbol), so muss der gewünschte Wert am Ende in das grüne Feld manuell übernommen werden und die Logik gespeichert werden.