...
...
Einführung
Als Beispiel diene folgende einfache Aufgabenstellung: Es soll auf eine KNX-Adresse TRUE gesendet werden, sobald mindestens eine von drei Türen geöffnet wird.
...
Eingang resp. Auslöser (wird auf der linken Seite dargestellt): im Beispiel die drei KNX-Objekte, welche die drei Türzustände (offen/geschlossen) repräsentieren und an die drei Variablen “Input 1”, “Input 2” und “Input 3” übergeben werden; jede Wertänderung an einem dieser Eingänge löst die Abarbeitung der Logik aus.
Kernfunktion (ist bei bei einem Logikmodul fest vorgegeben oder wird bei einer Custom-Logik individuell vom Anwender codiert): im Beispiel die logische ODER-Verknüpfung.
Ausgang (wird auf der rechten Seite dargestellt): im Beispiel die Variable “Output”, welche an das KNX-Objekt für den gesammelte Türzustand (offen/geschlossen) übergeben wird.
Dieses Verständnis Grundwissen reicht aus, um einfache Logiken anzulegen.
Wer sich aber etwas vertiefter mit Wichtigster Merkpunkt für das Verständnis der Logikfunktion des TWS auseinandersetzt, erkennt raschist die Erkenntnis, dass der Logikeditor innerhalb dieser drei Hauptelemente eine Vielzahl von weiteren Funktionen, resp. Einstellungsmöglichkeiten verfügt.
Kernfunktion einer Logik
Beim Anlegen einer Logik muss sich der Anwender entscheiden, ob er entweder eines der auf dem TWS fix installierten Logik-Module verwenden will, oder ob er eine eigene Custom-Logik codieren will.
Mittels Logik-Modulen erstellt
Aktuell stehen über 45 Logik-Module zur Verfügung; sie werden unter Eingebaute Logik-Module vorgestellt. Weil sie mit den Zusatzfunktionen der Ein- und Ausgänge kombiniert werden können, geht ihr Funktionsumfang wesentlich weiter, als dies im ersten Moment aufgrund der blossen Funktionsbeschreibung zu erahnen wäre. Auf diese Weise erhält bspw. bereits ein einfaches “AND”-Logik-Modul ein äusserst breites und umfassendes Einsatzfeld (Näheres dazu unter https://wiregate.atlassian.net/wiki/spaces/TSKB/pages/397803554/Die+Verwendung+der+Bausteine+am+Beispiel+des+AND-Moduls). Unter Mit Logik-Modulen gelöste Aufgabenstellungen (Beispiele) finden sich weitere mit Logik-Modulen umgesetzte Lösungsbeispiele.
Mittels Custom-Logik erstellt
Reicht die Funktionalität der Logik-Module nicht aus, erstellt sich der Anwender eine Custom-Logik; diese beruht auf Modulbausteinen, welche ähnliche Funktionen aufweisen wie die Logik-Module.
Zudem werden aus der Community Fertige Custom-Logiken (Beispiele) zur Verfügung gestellt.
Eingänge
eine Logik (nur) abgearbeitet wird, wenn sie ausgelöst wird. Sie benötigt somit einen Trigger. Im obigen Beispiel ist es jede Wertänderung an einem der drei Eingänge.
Wer sich etwas vertiefter mit der Logikfunktion des TWS auseinandersetzt, erkennt rasch, dass der Logikeditor innerhalb dieser drei Hauptelemente eine Vielzahl von weiteren Funktionen, resp. Einstellungsmöglichkeiten verfügt.
In der Folge werden die verschiedenen Elemente vorgestellt. Für ein erstes Verständnis der Logikfunktion sind die Kapitel
Kernfunktion einer Logik
Eingänge
Ausgänge und
Triggerfunktion
dienlich. Die weiteren Kapitel beschreiben Funktionen, die erst bei vertiefteren Auseinandersetzung mit der Thematik eine Rolle spielen.
Kernfunktion einer Logik
Beim Anlegen einer Logik muss sich der Anwender entscheiden, ob er entweder eines der auf dem TWS fix installierten Logik-Module verwenden will, oder ob er eine eigene Custom-Logik codieren will.
Verwendung eines Logik-Modul
Aktuell stehen über 45 Logik-Module zur Verfügung; sie werden unter Eingebaute Logik-Module vorgestellt. Weil sie mit den Zusatzfunktionen der Ein- und Ausgänge kombiniert werden können, geht ihr Funktionsumfang wesentlich weiter, als dies im ersten Moment aufgrund der blossen Funktionsbeschreibung zu erahnen wäre. Auf diese Weise erhält bspw. bereits ein einfaches “AND”-Logik-Modul ein äusserst breites und umfassendes Einsatzfeld (Näheres dazu unter https://wiregate.atlassian.net/wiki/spaces/TSKB/pages/397803554/Die+Verwendung+der+Bausteine+am+Beispiel+des+AND-Moduls). Weitere Beispiele finden sich unter Mit Logik-Modulen gelöste Aufgabenstellungen (Beispiele).
Erstellung einer Custom-Logik / Verwendung einer zur Verfügung gestellten Custom-Logik
Reicht die Funktionalität der Logik-Module nicht aus, erstellt sich der Anwender eine Custom-Logik; diese setzt sich aus Modulbausteinen, welche ähnliche Funktionen aufweisen wie die Logik-Module, zusammen.
Zudem werden aus der Community Fertige Custom-Logiken (Beispiele)zur Verfügung gestellt.
Eingänge
Eine Logik kann zwischen 0 und einer beliebigen Zahl von Eingänge verfügen; dabei wird zwischen drei Arten von Eingängen unterschieden:
Input (Wertübergabe-Eingänge): Sie übergeben der Logik die zu verarbeitenden Werte
entweder als dynamische Variable (durch Verknüpfung mit einem Objekt des Objektsystems)
oder als konstante Variable (durch Verwendung der Funktion “Parameter” bei den Einstellungen in der Logikbox).
Inhibit (Sperr-Eingänge): Über ein TRUE auf diesem Eingang kann die Ausführung der Logik gesperrt werden, näheres dazu unten unter → Sperrfunktion)
Trigger (Trigger-Eingänge): Sie definieren weitere Elemente, die dieser Logik als Trigger dienen; näheres dazu unten unter → Triggerfunktion.
Die Eingänge haben für die Abarbeitung einer Logik folgende Funktionen:
sie übergeben Werte an die Logik (Wertübergabefunktion), wobei diese Werte
entweder von einem Objekt des Objektsystems stammen,
oder als Parameter für die konkrete Logik (im Sinne von Konstanten) vorgegeben sind;
sie lösen die Abarbeitung der Logikzelle aus (Triggerfunktion), resp.
sie beeinflussen das Startverhalten der Logik (Startfunktion),
sie können einen von einem Objekt des Objektsystems stammenden Wert umwandeln (Konvertierungsfunktion über “Innerhalb Bereich”),
sie können einen von einem Objekt des Objektsystems stammenden Wert vergleichen (Vergleichsfunktion).
Es gibt drei Arten von Eingängen:
Input (Wertübergabe-Eingänge): Sie übergeben der Logik die zu verarbeitenden Werte
entweder als dynamische Variable (durch Verknüpfung mit,
sie können einen von einem Objekt des Objektsystems stammenden Wert vergleichen (Vergleichsfunktion)
oder als konstante Variable (durch Verwendung der Funktion “Parameter” bei den Einstellungen in der Logikbox).
Inhibit (Sperr-Eingänge): Über ein TRUE auf diesem Eingang kann die Ausführung der Logik gesperrt werden, näheres dazu unten unter → Sperrfunktion)
Trigger (Trigger-Eingänge): Sie definieren weitere Elemente, die dieser Logik als Trigger dienen; näheres dazu unten unter → Triggerfunktion.
Ausgänge
.
Ausgänge
Eine Logik muss mindestens einen Ausgang haben, je nach Kernfunktion der Logik stehen u. U. auch mehrere Ausgänge zur Verfügung. Weil der der Anwender einem Ausgang mehrere Objekte des TWS-Objektsystems zuordnen kann, ist es faktisch möglich, mit einer Logik gleichzeitig mehrere Objekte zu bedienen.
Die Ausgänge haben für die Abarbeitung einer Logik folgende Funktionen:
sie übergeben Werte an Objekte des Objektsystems (Wertübergabefunktion),
sie bestimmen,
bei welchem Ereignis die Ausgabewerte an das Objekt des Objektsystems übergeben werden soll (Sendefunktion), und
ob diese Übergabe unmittelbar oder verzögert erfolgen soll (Verzögerungsfunktion)
sie können einen von einem Objekt des Objektsystems stammenden Wert umwandeln (Konvertierungsfunktion über “Mapping”).
Triggerfunktion
Die technisch wichtigste Funktion der Eingänge ist die Triggerfunktion. Eine Logik wird nämlich nur ausgeführt, wenn sie von einem Trigger dazu aufgefordert wirdEine Logik wird nur ausgeführt, wenn sie von einem Trigger dazu aufgefordert (d.h. “ausgelöst”) wird. Umgekehrt wird eine Logik jedes Mal ausgeführt, wenn ihr Auslöser gegeben ist; die kann nicht gewünscht sein, wenn bspw. während einem bestimmten Zeitraum (bspw. in der Nacht) ein bestimmter Zustand erhalten bleiben soll. Dementsprechend hat die Beeinflussung der Auslösefunktion eine wichtige Bedeutung; für diesen Zweck werden Trigger verwendet.
Als mögliche Trigger stehen zur Verfügung
ein Wertübergabeeingang (Input), sofern seine Triggerfunktion auf A (always) oder C (on Change) gesetzt ist (näheres siehe sogleich);
ein spezieller Triggereingang, der abhängig von einem äusseren Ereignis die Logik triggert; als solche Trigger dienen können
ein Zeitintervall (bspw. alle 30 Sekunden),
ein Zeitpunkt (bspw. 08:25 Uhr) oder
ein “Data Value” --------- Was ist das? ---------;
ein Trigger, welcher innerhalb einer Custom-Logik (bspw. über den Logikbaustein → Clocksignal) codiert wurde.
Triggerfunktionen über einen Input (Wertübergabeeingang)
In der GUI (am Eingang einer Logikbox) und im Input-Array einer Custom-Logik kann die Trigger-Funktion des jeweiligen Wertübergabe-Eingangs festgelegt werden.
...
Codeblock | ||
---|---|---|
| ||
"Input": [ ["Eingang 1 ","(mit Triggerfunktion always)","$In1","a" ], ["Eingang 2 ","(mit Triggerfunktion on change)","$In2","c" ], ["Eingang 3 ","(ohne Triggerfunktion)","$In3","u" ] ] |
Triggerfunktion über einen Zeitintervall-Auslöser
Oft ist es gewünscht, eine Logik regelmässig in einem bestimmten Rhythmus durchlaufen zu lassen. In solchen Fällen muss ein Zeitintervall-Trigger angewendet werden.
...
In einer Custom-Logik erreicht man dieses Ziel über ----------------------- ???? noch nicht versucht, ich vermute über “Cron” ---------------.
Triggerfunktion zu einem bestimmten Zeitpunkt
Will man ein Logik nur an einem bestimmten Zeitpunkt (bspw. jeden Tag um 08:15 Uhr ausführen lassen, kann ein Zeitpunkt-Trigger verwendet werden.
...
In der GUI ist dies in einem etwas eingeschränkterem Rahmen auch möglich, in dem man in der Eingabemaske “Source” den Typ Intervall anwendet.
Triggerfunktion über einen Wertveränderung am Eingang
[--------- Das fehlt, ich habe dies noch nicht ausprobiert ----]
Abbruchfunktion
In bestimmten Situationen soll die Ausführung einer Logik abgebrochen werden, resp. die Logik soll schon gar nicht ausgeführt werden. Erfolgt ein Abbruch, wird nichts mehr an die Ausgänge gesendet.
...
In einer Custom-Logik verwendet man hierfür den Logik-Baustein → Break. Sobald einer seiner Eingänge - er kann mehrere haben - auf TRUE gesetzt wird, bricht auch hier die Ausführung der Logik ab.
Beim einem Abbruch werden keine im Code nachfolgenden Logik-Bausteine mehr berechnet und ausgeführt. Es wird auch kein Ausgang gesendet, selbst wenn die eine Variable, die einem Ausgang zugeordnet ist, bereits gesetzt worden ist.
Die Verwendung von ["Break", ["$VAR<Inhibit?>"]]
erlaubt es, in der GUI beliebig viele Eingänge hinzuzufügen, die den Abbruch einer Custom-Logik triggern können.
Weitere (optionale) Funktionen der Ein- und Ausgänge
Wertübergabefunktion 2x
Konvertierungsfunktion 2x
Vergleichsfunktion
Startfunktion
Sendefunktion
Verzögerungsfunktion
Ab hier Steinbruch (, d.h. blosse Grundlage für die weitere redaktionelle Bearbeitung)
Optionen für Eingänge
Parameter: Definiert für einen Eingang einen konstanten Wert. Achtung: Dieser wird nur beim Abspeichern in die Berechnung übernommen.
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.
Der untere Schwellwert darf damit nicht 0 sein: https://forum.timberwolf.io/viewtopic.php?f=24&t=1043&hilit=logikeditor…
Optionen für Ausgänge
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.
Hinweis: Man kann einem Ausgang mehrere Ziele zuordnen! Zu diesem Zweck einfach in der Zielauswahl (DOS) eine weitere Auswahl treffen.
Neuberechnung, sobald
entweder sich ein Eingangsinal ändert
oder ein Triggereingang betätigt wird.
Nicht bei Wertänderung eines Parameters (bspw. im Doktor-Modus)
Trigger-Optionen an den Eingängen
"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. Ausführlicheres siehe hier: https://forum.timberwolf.io/app.php/kb/viewarticle?a=120
Sende-Optionen an den Ausgängen
"a": jedesmal (always)
"c": nur bei Wertänderung
"t": wenn ein Timer abgelaufen ist (on timer);
Die Option "t" ist nicht selektiv, d.h. werden mehrere Timer in einer Custom Logik verwendet, dann führt jeder abgelaufene Timer dazu, dass der Ausgang gesendet wird. Zu beachten ist, dass bei Verwendung eines Timers die Berechnungen weiterhin durchgeführt werden (abhängig von der Optionen der Eingänge), nur eben nichts gesendet wird. Mögliche Timer-Module sind: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)
Trigger-Definition
Intervall: zyklisches Senden
Data Value: Zusätzliches Eingangsobjekt, dass als Trigger dient.
Zeit: Trigger zu einem bestimmten Zeitpunkt (auswählbar Wochentage und Uhrzeit)
Unterschied Start / Stop (unten rechts) / Inhibit / Abkoppeln (am Ein- oder Ausgang)
"Stop" führt zu einem Pausieren, d.h. es werden keine Werte an den Eingängen gelesen
Ein Inhibit-Eingang führt dazu, dass die übrigen Eingänge zwischenzeitlich weiter aktualisiert werden
Abkoppeln ist vor allem für Tests mit dem Doktormodus geeignet.
...