Zum Ende der Metadaten springen
Zum Anfang der Metadaten

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.

Für diese Logik kann eine OR-Logikmodul verwendet werden. Dieses wird im Logikeditor wie folgt dargestellt:

Die Logik verwendet die drei KNX-Objekte K-1186, K-1187 und K-1187 als Eingänge, verarbeitet die dort erhaltenen Informationen in der Form einer ODER-Verknüpfung und gibt das Resultat an das KNX-Objekt K-1196 weiter.

Für den Anwender besteht eine Logik somit auf den ersten Blick aus drei Elementen:

  • Eingang resp. Auslöser (wird auf der linken Seite dargestellt): hier KNX-Objekte der drei Türzustände (offen/geschlossen)

  • Kernfunktion (ist bei bei einem Logikmodul fest vorgegeben oder wird bei einer Custom-Logik individuell vom Anwender codiert): hier logische ODER-Verknüpfung

  • Ausgang (wird auf der rechten Seite dargestellt): hier das KNX-Objekt für den gesammelte Türzustand (offen/geschlossen).

Diese Verständnis reicht aus, um einfache Logiken anzulegen.
Wer sich aber 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.

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.

Es stehen aktuell ü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.

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 Fertige Custom-Logiken (Beispiele) zur Verfügung gestellt.

Eingänge

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)

  • Inhibit (Sperr-Eingänge)

  • Trigger (Trigger-Eingänge)

Ausgänge

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”),

  • 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)

  • Inhibit (Sperr-Eingänge)

  • Trigger (Trigger-Eingänge)

Triggerfunktion

Die technisch wichtigste Funktion der Eingänge ist die Triggerfunktion. Eine Logik wird nämlich nur ausgeführt, wenn sie dazu von einem Trigger aufgefordert wird.

Als Trigger können dienen

  • ein Wertübergabeeingang (Input), sofern seine Triggerfunktion auf A (always) oder C (on Change) gesetzt ist; siehe dazu

  • ein spezieller Triggereingang, der abhängig von einem äusseren Ereignis die Logik triggert; als solche Trigger dienen können entweder 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)

CRON-Syntax:

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

*  *  *  *  * *

Abbruchfunktionen

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.

  • 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.

  • Keine Stichwörter