Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Einführung

...

Dieses Grundwissen reicht grundsätzlich aus, um einfache erste Logiken anzulegen. Zudem sollte der Anwender verstehen, wie Zusätzliche Informationen zu diesen Themen finden sich unter →Kernfunktion einer Logik, →Eingänge, →Ausgänge und →Triggerfunktion.

In einem nächsten Schritt sollte sich der Anwender mit der Frage auseinandersetzen, in welchen Schritten die Bearbeitung einer Logik intern abläuft, damit er weiss, wie er allenfalls auf den Bearbeitungsprozess beeinflussen →Bearbeitungsprozess Einfluss nehmen kann. Wichtigster Merkpunkt für das Verständnis des Bearbeitungsprozesses ist die Erkenntnis, dass eine Logik (nur) abgearbeitet wird, wenn sie ausgelöst wird. Sie benötigt somit einen Trigger. Im obigen Beispiel “triggert” jede Wertänderung an einem der drei Eingänge die Logik. Wer sich später etwas vertiefter mit der Logikfunktion ; dies genügt in vielen Anwendungsfällen.
Zweiter wichtiger Merkpunkt in diesem Zusammenhang ist, dass die Berechnung der Logik und alle daran anschliessen Bearbeitungsschritte über einen auf TRUE gestellten Inhibit-Eingang, resp. genauer über die dadurch ausgelöste→Abbruchfunktiongestoppt werden können.

Wer sich später etwas vertiefter mit der Logikfunktion des TWS auseinandersetzen wird, wird rasch erkennen, dass der Logikeditor innerhalb der drei oben vorgestellten Hauptelemente (Eingang, Auslöser, Kernfunktion und Ausgang) viel weitere über viele zusätzliche Funktionen, resp. Einstellungsmöglichkeiten verfügt. In diesem Kapitel werden die verschiedenen Elemente der Logikfunktion vorgestellt. Für einen ersten Überlick sind die KapitelDiese werden unter →Weitere (optionale) Funktionen der Ein- und Ausgänge vorgestellt.

Bearbeitungsprozess einer Logik

...

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.

Bearbeitungsprozess einer Logik

Übersicht

Aus Anwendersicht - und daher vereinfacht dargestellt - vollzieht sich die Bearbeitung einer Logik in sechs Prozessschritten:

...

Erläuterung

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 unten → Triggerfunktion →Triggerfunktion

2

Datenübernahme

Als Datenübernahme bezeichnen wir die Übergabe eines externen Wertes an eine Logik. Diese Daten Werte können

  • dabei als Konstante in der Logik selbst definiert werden (in der GUI am entsprechenden Input-Eingang über die Funktion “Parameter” bei einem Input-Eingang oder den “Init Value” im Level Array Parameter” oder in einer Custom-Logik )von einem externen Objekt im Level-Array über den “Init Value”)

  • von einem Objekt des TWS-Objektssystems stammen.

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 der Break-Funktion ④ des nächsten Bearbeitungsschritts (④) von Bedeutung.

4

Kein Abbruch

Über die Break-Funktion →Abbruchfunktion kann die Berechnung der Logik gestoppt, resp. verhindert werden. Damit findet keine Datenübergabe und keine Datenübermittlung statt, die Logik schweigt.

Die Break-Funktion 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.

Aktivierungsfunktion (und Gegenüberstellung mit der Abbruchfunktion)

Nicht zum eigentlichen Bearbeitungsprozess der Logik gehört die Aktivierungsfunktion. Diese wird in der GUI in der unteren rechten Ecke der Logikbox über die nachfolgenden Symbole bedient. Der Aktivierungsstatus wird ebenfalls in der Logikbox (oben in der Mitte) angezeigt.

...

Es ist selbsterklärend, dass der Bearbeitungsprozess nur durchgeführt wird, wenn die Logik aktiviert (d.h. gestartet) ist. Zwischen dem Anhalten auf der Aktivierungsebene und dem Abbruch im Rahmen der Abbruchsfunktion besteht jedoch ein ganz wesentlicher Unterschied: Eine pausierte Logik liest keine Daten an den Eingängen, bei einer abgebrochenen Logik bleiben die die Eingänge weiterhin aktiv und lesen die Daten mit; eine abgebrochene Logik wird somit nach ihrer Freischaltung mit den zwischenzeitlich aktualisierten Werten weiterarbeiten, eine pausierte Logik kennt diese zwischenzeitlich erfolgten Wertänderungen nicht.

Über die Funktion “Abkoppeln” kann in der GUI vorübergehend die Datenübernahme, resp. die Datenübergabe gestoppt werden; die Logik wird mithin von der Aussenwelt isoliert. Dies ist vor allem für Tests im Doktormodus sinnvoll. --------- Während der Dauer der Abkkoppelung Abkoppelung erfolgte Wertänderungen sind der Logik “beim Wiederankoppeln” nicht bekannt. -----------

...

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 . Dies wird unter https://wiregate.atlassian.net/wiki/spaces/TSKB/pages/397803554/Die+Verwendung+der+Bausteine+am+Beispiel+des+AND-Moduls) anhand von Beispielen dargestellt.

Weitere Beispiele Umsetzungsbeispiele finden sich unter Mit Logik-Modulen gelöste Aufgabenstellungen (Beispiele).

...

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 ; damit wird ein “zyklisches Senden” erreicht.

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.

...

Triggerfunktion zu einem bestimmten Zeitpunkt

Grundsätzliches

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.

...

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 werkstags werktags um 08:15 Uhr “getriggert “getriggert” wird.

Werden komplexere Lösungen erforderlichAnforderungen 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.

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

...

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.

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