Einführung
...
Input (Wertübergabe-Eingänge): Sie übergeben der Logik die zu verarbeitenden Werte
entweder als dynamische Variable (durch Verknüpfung mit einem Objekt des Objektsystems)
oder als konstante Variable (durch Verwendung der Funktion “Parameter” bei den Einstellungen in der Logikbox; [------- Achtung: Der als Parameter zugewiesene Wert wird nur beim Abspeichern in die Berechnung übernommen; es muss somit explizit ein Trigger definiert werden, damit die Logik erneut ausgeführt werden kann --------].
Inhibit (Sperr-Eingänge): Über ein TRUE auf diesem Eingang kann die Ausführung der Logik gesperrt werden, näheres dazu unten unter → Sperrfunktion)
Trigger (Trigger-Eingänge): Sie definieren weitere Elemente, die dieser Logik als Trigger dienen; näheres dazu unten unter → Triggerfunktion.
...
ein Wertübergabeeingang (Input), sofern seine Triggerfunktion auf A (always) oder C (on Change) gesetzt ist (näheres sogleich);
ein spezieller Triggereingang, der abhängig von einem äusseren Ereignis die Logik triggert; als solche Trigger dienen können
ein Zeitintervall (bspw. alle 30 Sekunden),
ein Zeitpunkt (bspw. 08:25 Uhr) oder
ein “Data Value” --------- Was ist das? ---------zusätzliches Eingangsobjekt, dass als blosser Trigger dient (“Data Value”);
ein Trigger, welcher innerhalb einer Custom-Logik (bspw. über den Logikbaustein → Clocksignal) codiert wurde.
...
Einstellung “A” (always): Der Eingang funktioniert jedesmal als Trigger, wenn man Eingang ein Wert empfangen wird.
Einstellung “C” (on change): Der Eingang funktioniert nur als Trigger, wenn sich der soeben empfangene Wert vom letzten empfangenen Wert unterscheidet.
Einstellung “U” (update): Der Eingang funktioniert nicht als Trigger, d.h. sein Wert wird einzig an die dem Eingang zugeordnete Variable übergeben; die Berechnung der Logik erfolgt erst, wenn ein Trigger ausgelöst wird.
...
Die Einstellung "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
Bei der Definition im Input-Array einer Custom-Logik werden die entsprechenden Kleinbuchstaben verwendet (also “a”, “c” oder “u”):
...
Triggerfunktion über einen Wertveränderung am Eingang
[--------- Das fehlt, ich Will man ein äusseres 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. [--------- Sorgfältig prüfen, habe dies noch nicht ausprobiert ----]
...
In der GUI des Logikeditors können Werte auch umgewandelt werden, indem sie negiert werden. Dies erfolgt indem das kleine Kreissymbol beim entsprechenden Ein- oder Ausgang angeklickt wird.
normal (nicht negiert) | negiert |
In Custom-Logiken erfolgt die Negation, indem einer Variablen (vor dem $-Zeichen, aber innerhalb der Anführungszeichen) ein “-” vorangestellt wird, beispielsweise so "-$Out"
. Diese Negation ist aber nur innerhalb des Module-Array zulässig.
...
In einer Custom-Logik kann der Startwert im Level-Array über den “Init Value” festgelegt werden. Das Sperren bis der Variablen (hier $In) ein Eingangswert zugewiesen wurde, kann bspw. wie folgt erreicht werden ["Break",["-$In"]].
Sendefunktion
Verzögerungsfunktion
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
Ab hier Steinbruch (, d.h. blosse Grundlage für die weitere redaktionelle Bearbeitung)
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)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)
: Triggert jedesmal bei erreichen der eingestellten Zeit(en)
Verzögerungsfunktion
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