/
Trigger zur Ausführung der Logikzelle

Trigger zur Ausführung der Logikzelle

Mit dem Triggerverhalten kann eingestellt werden, ob die Berechnung einer Logik durch diesen Eingang ausgelöst ("getriggert") werden soll.

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:

  • jeder Wertübergabeeingang (in Logiken meist mit “Input x” bezeichnet), sofern seine Triggerfunktion auf A (always) oder C (on Change) gesetzt ist (näheres sogleich);

  • ein spezieller Triggereingang, der abhängig von einem äußeren Ereignis die Logik-Zelle triggert; als solche Trigger dienen können

    • ein Zeitintervall (bspw. alle 30 Sekunden),

    • ein Zeitpunkt (bspw. 08:25 Uhr) oder

    • ein zusätzliches Eingangsobjekt, dass als bloßer Trigger dient (“Data Value”);

  • eine Sendeverzögerung an Ausgängen, diese triggern die Logik-Zelle ebenfalls nach Ablauf der eingestellten Verzögerungszeit.

  • jeder Ablauf eines Timers führt zum Triggern der Logik. Dadurch wird bei den Bausteinen Timer/Taktsignal auch nach Ablauf der Verzögerungszeit die Logik-Zelle neu getriggert. Das gleiche gilt für alle Zeitfunktionen, die in Custom Logiken verwendet werden.

Filter für implizite Auslösung an einen Wertübergabe-Eingang und Startverhalten der Logik

Funktionsbeschreibung

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

  • Einstellung “A” (always) / Bei Aktualisierung: Der Eingang triggert jedesmal die Logik-Zelle, wenn am Eingang ein Wert empfangen wird (auch wenn es ein wiederkehrender Wert ist).

  • Einstellung “C” (on change) / Bei Wertänderung: Der Eingang triggert die Logik-Zelle nur, wenn sich der soeben empfangene Wert vom letzten empfangenen Wert unterscheidet.

  • Einstellung “U” (update) / Keine Auslösung: Der Eingang triggert die Logik-Zelle nie, d.h. sein Wert wird einzig an die Logik-Zelle (genauer gesagt an die dem Eingang zugeordneten Variable ) übergeben; die Ausführung der Logik-Zelle erfolgt erst, wenn ein Trigger an anderer Stelle dies auslöst.
    Die Einstellung "U" wir zum Beispiel dann verwendet, wenn der Ausgang einer Logik nur periodisch gesendet werden soll (zeitlicher Trigger) oder wenn ein Objekt mehrfach an eine Zelle angeschlossen ist (siehe weiter unten Fortgeschrittene).

Zusätzlich kann für jeden Eingang das Startverhalten festgelegt werden:

  • Auslösung sperren bis Wertaktualisierung: Logik ist gesperrt, bis alle auf “i” gesetzten Eingänge einen Wert empfangen haben und wird dann das erste mal abgearbeitet.

  • Mit Startwert aktualisieren: Diese Eingänge werden mit dem Startwert initialisiert, die Logik wird gemäß den Triggerfunktionen sofort ausgeführt, sofern kein Eingang auf 'i' gesetzt ist und noch keinen Wert empfangen hat.

Einstellung des Auslöseverhaltens 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.

grafik-20241106-163107.png 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”.

 

grafik-20241106-163114.png

 

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

<