Mit dem Triggerverhalten wird festgelegt, wann eine Logikzelle neu ausgewertet wird.

Inhalt dieser Seite

Einführung

Eine Logik-Zelle wird nur ausgeführt, wenn sie von einem Trigger dazu aufgefordert (d.h. “ausgelöst”) wird. Umgekehrt wird eine Logik-Zelle jedes Mal ausgeführt, wenn sie ausgelöst wird. Dies kann aber unerwünscht sein, z.B. wenn während einem bestimmten Zeitraum ein bestimmter Zustand erhalten bleiben soll. Dementsprechend haben Trigger eine wichtige Bedeutung denen sich der Nutzer bewusst werden sollte

Mögliche Trigger sind:

Triggerfunktionen über einen Wertübergabe-Eingang

Funktionsbeschreibung

Jeder Wertübergabe-Eingang kann drei unterschiedliche Triggerfunktionen annehmen:

Einstellung des Triggerverhaltens in der GUI

Die GUI stellt die aktuell eingestellte Triggerfunktion des jeweiligen Eingangs dar und lässt diese auch ändern.

Triggerfunktion über einen Zeitintervall-Auslöser

Oft ist es gewünscht, eine Logik-Zelle regelmäßig in einem bestimmten Rhythmus durchlaufen zu lassen. In solchen Fällen muss ein Zeitintervall-Trigger angewendet werden. Damit wird in Kombination mit der Sendeoption “t” (on timer) ein “zyklisches Senden” erreicht.

Einstellung eines Zeitintervall-Triggers in der GUI

In der GUI kann dies erreicht werden, indem ein Trigger-Eingang erstellt wird und diesem die Quelle “Intervall“ zugeordnet wird. Als Intervall kann eine beliebige Zahl von Sekunden eingegeben werden.

Will man das Zeitintervall nur zu bestimmten Zeiten (bspw. nur am Sonntag) laufen lassen, wählt man in der GUI als Source nicht “Intervall”, sondern “Zeit” und dort den Typ “Intervall”.

Triggerfunktion zu einem bestimmten Zeitpunkt

Grundsätzliches

Will man eine Logik-Zelle nur an einem bestimmten Zeitpunkt (bspw. jeden Tag um 08:15 Uhr ausführen lassen, kann ein Zeitpunkt-Trigger verwendet werden.

In der der GUI erstellt man hierfür wiederum einen Triggereingang und wählt als Quelle “Zeit”.

Die Eingabemaske erlaubt es, entweder eine Zeit einzugeben und über die jeweiligen Checkboxen die gewünschten Wochentage auszuwählen. Das obige Beispiel führt dazu, dass die Logik jeweils werktags um 08:15 Uhr “getriggert” wird.

Werden komplexere Anforderungen an die Definition des Zeitpunkts gestellt, kann dies mit Hilfe der Cron-Syntax realisiert werden. Zu diesem Zweck wählt man in der vorstehenden Eingabemaske als Typ nicht “Zeit“, sondern “Cron-Syntax”. Man erhält so ein Eingabefeld, in welches man einen String eingeben kann. Dieser String muss der Cron-Syntax entsprechen.

Cron-Syntax

Die Cron-Syntax baut auf 6 Feldern auf, welche jeweils durch eine Leerschlag voneinander getrennt sind. Die Reihenfolge der Felder ist wie folgt vorgegeben:

┌───────────── Sekunde (0 - 59)
│ ┌───────────── Minute (0 - 59)
│ │ ┌───────────── Stunde (0 - 23)
│ │ │ ┌───────────── Tag des Monats (1 - 31)
│ │ │ │ ┌───────────── Monat (1 - 12)
│ │ │ │ │ ┌───────────── Wochentag (0 - 6)
│ │ │ │ │ │

Das erste Feld repräsentiert somit, die Sekunden, das zweite die Minuten, dass dritte die Stunden und so weiter.

Weil intern im TWS immer die Cron-Syntax verwendet wird, werden auch alle über die GUI-Maske eingegebenen Zeitpunkt-Trigger in der Cron-Syntax behandelt. Dies sieht man in der obigen Eingabemaske. Dort wird unten das Ergebnis der Eingabe über die Felder wie folgt dargestellt: 0 15 8 * * 1,2,3,4,5 Dieser String lässt sich nun einfach übersetzen:

Feld

Wert

Erläuterung

1 (Sekunde)

0

0 Sekunden

2 (Minute)

15

15 Minuten

3 (Stunde)

8

8 Uhr

4 (Tag des Monats)

Weil “*” in der Cron-Syntax für “beliebig” steht, ist der Tag des Monats unbeachtlich, oder mit anderen Worten: Der Trigger wird an jedem Tag ausgelöst

5 (Monat)

Siehe Feld 4

6 (Wochentag)

1,2,3,4,5

In diesem Feld findet sich eine Aufzählung; Aufzählungen werden in der Cron-Syntax durch ein Komma (jedoch ohne Leerschlag, weil dieser als Feldtrennzeichen dient) gekennzeichnet. Der Trigger wird somit am Montag (1), Dienstag (2) , …, Freitag (5) ausgelöst; nicht aber am Sonntag (0) und am Samstag (6), weil diese in der Aufzählung nicht erscheinen.

Weitere Erläuterungen zur Cron-Syntax (einer in der UNIX-Welt gebräuchlichen Notation) findet sich bspw. unter https://de.wikipedia.org/wiki/Cron. Zu beachten ist, dass die Cron-Syntax des TWS zusätzlich auch ein Feld Sekunden (ganz links) vorsieht.

Beispiele:

Zeitlich beschränkte Intervalle

Über die Cron-Syntax können auch Intervalle definiert werden: Der String 0 0/30 0-5,21-23 * * * führt dazu, dass der Trigger jeden Tag, im Zeitraum zwischen 21 Uhr bis 05 Uhr jeweils zur ganzen Stunden und dann in einem Intervall von 30 Minuten ausgelöst wird.

Wer zeitlich beschränkte Intervalle ohne Cron-Syntax (aber mit etwas eingeschränkterem Einstellungsmöglichkeiten) definieren möchte, kann im Eingabefeld “Source” den Typ Intervall wählen und erhält so eine Eingabemaske mit den Einstellungsmöglichkeiten.

Triggerfunktion über einen Wertveränderung am Eingang

Will man ein äußeres Ereignis als Trigger verwenden (bspw. die Öffnung einer Tür), erstellt man in der GUI einen Trigger-Eingang, weist diesem als “Source” Data Value zu und verbindet den Eingang mit einem Objekt des TWS-Objektsystems. In diesem Fall wird der Wert des Eingangs nicht an die Kernfunktion der Logik-Zelle übergeben. Abhängig von dem eingestellten Triggerverhalten (“A” oder “C”) wird die Ausführung der Logik-Zelle angestoßen.

Triggerverhalten wenn Objekte mehrfach an die gleiche Logik verknüpft sind

Grundsätzliches

Der Dispatcher (Verteilungsmechanismus über alle Systeme am TWS) verteilt laufend die empfangenen Werte gezielt an die Empfänger zB. KNX Objekte, Logikeingänge etc.. Je nach Einstellung an der Logik-Zelle wird deren Berechnung angestoßen und abhängig von den Sendeoptionen auch wieder an den Dispatcher zurück geliefert.

Gibt es mehrere Empfänger eines Objektes, dupliziert der Dispatcher dieses Telegramm und sendet es nacheinander an die Eingänge der Logiken bzw. Objekte. Daher spielt die Reihenfolge der Empfänger eine Rolle , die in manchen Anwendungsfällen zu beachten ist.

Beispiel 1: Ein Objekt wird mehrfach als Eingang einer Logikzelle verwendet:

Ist obiges Verhalten nicht gewünscht, d.h. es sollen erst beide Eingänge den neuen Wert bekommen, bevor die Logik ausgeführt wird, gibt es zwei Möglichkeiten:

In diesem Beispiel muss der Ausgang auf die Sendeoption auf "A" gestellt werden, weil er sich nie ändern wird.

Beispiel 2: Ein Objekt wird in mehreren Logik-Zellen verwendet:

Nächster Schritt

Widmen Sie Ihren nächsten 5 Minuten nun den besonderen Funktionen an Ausgängen.