Versionen im Vergleich

Schlüssel

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

Einführung

...

Dieses Grundwissen reicht aus, um einfache Logiken anzulegen.
. Zudem sollte der Anwender verstehen, wie in welchen Schritten die Bearbeitung einer Logik intern abläuft, damit er weiss, wie er allenfalls den Bearbeitungsprozess beeinflussen kann. Wichtigster Merkpunkt für das Verständnis der Logikfunktion des TWS Bearbeitungsprozesses ist die Erkenntnis, dass eine Logik (nur) abgearbeitet wird, wenn sie ausgelöst wird. Sie benötigt somit einen Trigger. Im obigen Beispiel ist es “triggert” jede Wertänderung an einem der drei Eingänge die Logik.

Wer sich später etwas vertiefter mit der Logikfunktion des TWS auseinandersetztauseinandersetzen wird, erkennt wird rasch erkennen, dass der Logikeditor innerhalb dieser der drei Hauptelemente eine Vielzahl von weiteren Funktionen, resp. Einstellungsmöglichkeiten oben vorgestellten Hauptelemente (Eingang, Auslöser, Kernfunktion und Ausgang) viel weitere Funktionen, resp. Einstellungsmöglichkeiten verfügt.

In der Folge diesem Kapitel werden die verschiedenen Elemente der Logikfunktion vorgestellt. Für ein erstes Verständnis der Logikfunktion einen ersten Überlick sind die Kapitel

  • 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

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

...

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

2

Datenübernahme

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

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

  • von einem externen Objekt 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 ④ von Bedeutung.

4

Kein Abbruch

Über die Break-Funktion 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 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 Wert dem Objekt des TWS-Objektsystems zur Verfügung gestellt werden soll.

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.

Image Added

Anhalten

Image Added

Image Added

Starten

Image Added

Es ist selbsterklärend, dass der Bearbeitungsprozess nur durchgeführt wird, wenn die Logik aktiviert( 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 erfolgte Wertänderungen sind der Logik “beim Wiederankoppeln” nicht bekannt. -----------

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.

...

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.

...