Einführung
...
Nr | Prozessschritt | Beschreibung |
---|---|---|
1 | Auslösung | Eine Logik wird nur bearbeitet, wenn sie von einem Trigger dazu aufgefordert wird. Es bestehen verschiedene Trigger, der wichtigste ist der Datenempfang an einem Eingang. Alles weitere siehe →Triggerfunktion |
2 | Datenübernahme | Als Datenübernahme bezeichnen wir die Übergabe eines Wertes an eine Logik. Diese Werte können dabei
In der GUI kann festgelegt werden, dass im Rahmen der Datenübernahme zusätzliche Funktionen angewendet werden, dies sind namentlich die →Konvertierungsfunktion, die →Negationsfunktion und die →Vergleichsfunktion. Die Datenübernahme kann zudem über die →Startfunktion beeinflusst werden. |
3 | Berechnung | Im Rahmen der Berechnung wird die →Kernfunktion der Logik abgearbeitet. Wichtig ist, dass die Datenübergabe und die Datenübermittlung nicht Teil der Berechnung ist. Diese Erkenntnis ist für das Verständnis des nächsten Bearbeitungsschritts (④) von Bedeutung. |
4 | Kein Abbruch | Über die →Abbruchfunktion kann die Berechnung der Logik gestoppt, resp. verhindert werden. Damit findet keine Datenübergabe und keine Datenübermittlung statt, die Logik schweigt. Die Abbruchfunktion kann in der GUI durch einen Inhibit-Eingang gesetzt werden, in einer Custom-Logik zudem auch über den Logik-Baustein “Break”. |
5 | Datenübergabe | Im Rahmen der Datenübergabe werden die berechneten Werte für die Datenübermittlung aufbereitet. Wie schon bei der Datenübernahme kann in der GUI auch für die Datenübergabe optional die →Konvertierungsfunktion und / oder die →Negationsfunktion zugeschaltet werden. |
6 | Datenübermittlung | Bei der Datenübermittlung kann über die →Verzögerungsfunktion und die →Sendefunktion festgelegt werden, zu welchem Zeitpunkt und unter welcher Bedingung der in der Logik berechnete Wert dem Objekt des TWS-Objektsystems zur Verfügung gestellt werden soll. |
...
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).
; [------- Achtung: Der als Parameter zugewiesene Wert wird nur beim Abspeichern in die Berechnung übernommen; es muss somit explizit ein Trigger definiert werden, damit die Logik erneut ausgeführt werden kann].
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.
...
Einstellung “A” (always): Der Eingang funktioniert immer als Trigger ----- was bedeutet dies genau -----jedesmal als Trigger, wenn man Eingang ein Wert empfangen wird.
Einstellung “C” (on change): Der Eingang funktioniert nur bei einer Wertänderung als Trigger.Einstellung “als Trigger, wenn sich der soeben empfangene Wert vom letzten empfangenen Wert unterscheidet.
Einstellung “U” (update): Der Eingang funktioniert nicht als Trigger, d.h. sein Wert wird einzig an die Eingangsvariable übergebendem Eingang zugeordnete Variable übergeben; die Berechnung der Logik erfolgt erst, wenn ein Trigger ausgelöst wird.
Bei der Definition im Input-Array einer Custom-Logik werden die entsprechenden Kleinbuchstaben verwendet (also “a”, “c” oder “u”):
...
Ein- und Ausgänge stellen die Schnittstellen der eine Logik zum Objektsystem des TWS dar.
Über diese Schnittstellen können Werte von und an die Logik übergeben werden. Voraussetzung ist, dass die Datentypen der Objekte und der Logik übereinstimmen. Ist dies nicht der Fall, stellt der Logikeditor →Konvertierungsfunktionen zur Verfügung. Im Rahmen der Wertübergabe können im Logikeditor gleichzeitig auch →Vergleichsfunktionen hinzugefügt werden.
...
Jede Datenübergabe in der Informatik setzt voraus, dass die Datentypen übereinstimmen. Der Objektsystem des TWS (und damit auch die Logikfunktionen arbeiten Logikfunktion) arbeitet mit folgenden Datentypen:
...
Bei der Datenübergabe an Eingängen
Bei Eingängen, denen intern eine Boolean-Variable zugewiesen ist
Beispiel: Das AND-Logik-Modul arbeitet mit Boolean-Daten. Soll es mit einem Wert vom Typ Float bedient werden, muss bei der Übergabe an die Logik eine Datenkonvertierung erfolgen.
Für diesen Zweck kann man in der GUI einem Eingang die Funktion “Innerhalb Bereich” zuordnen. Diese Funktion prüft, ob der Eingangswert im angegebenen Bereich liegt; falls ja, erhält der Eingang den Zustand TRUE, anderenfalls FALSE.
Bei
...
Eingängen, denen intern eine Integer-Variable zugewiesen ist
Soll eine Glättung der am Eingang übergebenen Werte vorgenommen werden, steht die “Tiefpass”-Funktion zur Verfügung; sie dient der Glättung der Eingangswerte über einen bestimmten Zeitraum hinweg. Die Funktionsweise der Tiefpassfunktion wird beim entsprechenden Logik-Modul beschrieben → Tiefpass (Logik-Modul).
Bei der Datenübergabe an Ausgängen
Bei Ausgängen stellt die GUI die Funktion “Mapping” zur Verfügung. Sie erlaubt es, Werte umzuwandeln. Dies kann beispielsweise sinnvoll sein, wenn ein AND-Logik-Modul ein Objekt bedienen soll, welches vom Typ Integer ist. So kann bspw. ein Dimmwert von 60% an eine Leuchte gesendet werden, wenn das Ergebnis der Logik TRUE lautet.
...
In der GUI des Logikeditors können Werte auch umgewandelt werden, indem sie negiert werden. Dies erfolgt indem das der kleine Kreis Kreissymbol beim entsprechenden Ein- oder Ausgang angeklickt wird.
normal (nicht negiert) | negiert |
In Custom-Logiken erfolgt die Negation, indem einer Variablen (vor dem $-Zeichen, aber innerhalb der Anführungszeichen) ein “-” vorangestellt wird, beispielsweise so "-$Out"
. Diese Negation ist aber nur innerhalb des Module-Array zulässig.
...
In der GUI des Logikeditors kann festgelegt werden, dass die an den Eingängen übergebenen Daten einer Vergleichsoperationen unterzogen werden, bevor sie von der Logik verarbeitet werden. Der Eingang erhält so - je nach Anwendungsfall oder Betrachtungsweise - entweder eine Filter- oder eine Wenn-Dann-Funktion.
So kann bspw. geprüft werden, ob der übergebene Integer-Wert kleiner als “500” ist; trifft dies zu, wird der Logik ein boolean TRUE zur Verarbeitung übergeben.
In der GUI stehen folgende Vergleichsfunktionen zur Verfügung:
“Innerhalb Bereich”: prüft, ob der Eingangswert im angegebenen Bereich liegt; falls ja, erhält der Eingang den Wert TRUE, anderenfalls FALSE. [--------- Hinweis: Werden der Min- und der Max-Wert auf den gleichen Wert gesetzt, kann damit eine “Ist gleich”-Prüfung des Eingangswerts vorgenommen werden ------------]
“Schwellwert unter”: prüft, ob der vorgegebene Schwellwert unterschritten ist; falls ja, erhält der Eingang den Wert TRUE, anderenfalls FALSE.
“Schwellwert über”: prüft, ob der vorgegebene Schwellwert überschritten ist; falls ja, erhält der Eingang den Wert TRUE, anderenfalls FALSE.
“Schwellwert mit Hysterese”: vergleicht den Eingangswert gleichzeitig mit der oberen und unteren Grenze;
ist die obere Grenze überschritten, erhält der Eingang den Zustand TRUE,
ist dies die untere Grenze überschrittenunterschritten, erhält der Eingang den Wert FALSE (Hinweis: die untere Grenze sollte so festgelegt sein, dass sie unterschritten werden kann: bspw. macht es bei einem Lux-Wert die untere Grenze auf 0 zu legen; dieser Wert kann nie unterschritten werden),
liegt der Wert dazwischen, verbleibt der Eingang im bisherigen Zustand.
Es kann bspw. verglichen
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
...
In einer Custom-Logik können für diese Zwecke die Modul-Bausteine “Comperator” und “Limiter” verwendet werden (siehe dazu auch https://wiregate.atlassian.net/wiki/spaces/TSKB/pages/397771178/Anwendungshilfen+f+r+Custom-Logiken+How-to+s#Vergleiche ).
Startfunktion
Die GUI bietet an den Eingängen unter dem Titel “Start-Verhalten” eine Einstellungsmöglichkeit mit zwei Optionen an.
Standardmässig ist die Option “Startwert” ausgewählt: Damit kann dem Eingang ein Wert zugewiesen, mit welchem die Logik arbeitet, bis erstmals an diesem Eingang ein (externer) Wert eingetroffen ist.
Stattdessen kann die Option “Logik sperren bis Input verfügbar ist” gewählt werden. Damit wird verhindert, dass die Logik ausgeführt wird, bevor dieser Eingang mit einem externen Wert bedient worden ist. Technisch gesehen wird über diese Einstellung für die Logik eine Abbruchsfunktion ausgelöst, die solange andauert bis der entsprechende Eingang erstmals mit einem Wert bedient wurde.
In einer Custom-Logik kann der Startwert im Level-Array über den “Init Value” festgelegt werden. Das Sperren bis der Variablen (hier $In) ein Eingangswert zugewiesen wurde, kann bspw. wie folgt erreicht werden ["Break",["-$In"]].
Sendefunktion
Verzögerungsfunktion
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.
entweder sich ein Eingangsinal ändert
oder ein Triggereingang betätigt wird.
Nicht bei Wertänderung eines Parameters (bspw. im Doktor-ModusEin- 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
Neuberechnung, sobald
Ab hier Steinbruch (, d.h. blosse Grundlage für die weitere redaktionelle Bearbeitung)
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)
Data Value: Zusätzliches Eingangsobjekt, dass als Trigger dient.Zeit: Trigger zu einem bestimmten Zeitpunkt (auswählbar Wochentage und Uhrzeit)