Info |
---|
Es bestehen verschiedene Möglichkeiten, das Verhalten einer Logik einzuschränken: Sie kann entweder gänzlich angehalten, ihre Datenübergabe kann über die Abbruchfunktion blockiert oder sie kann von der Aussenwelt abgekoppelt werden. Dieses Kapitel beschreibt die drei grundlegend verschiedenen Konzepte. |
Aktivierungsfunktion: Starten und Anhalten von Logiken
Damit eine Logik überhaupt ihren Bearbeitungsprozess aufnehmen kann, muss sie aktiviert (oder gestartet) sein.
Der Aktivierungsstatus einer Logik kann nur in der GUI beeinflusst werden und zwar über die beiden nachfolgend dargestellten Buttons. Sie befinden sich in der unteren rechten Ecke der Logikzelle Der Aktivierungsstatus wird ebenfalls in der Logikzelle (oben in der Mitte) angezeigt:
Anhalten | Starten | |
---|---|---|
Button | ||
Anzeige |
Über diese beiden Buttons lässt sich jede der angelegten Logiken unabhängig von allen anderen Logiken einzeln anhalten und starten. Nach dem Starten ist die Logik unmittelbar scharf und reagiert auf an den Eingängen eintreffende Daten entsprechend dem gewählten Ausführungsverhalten des jeweiligen Einganges.
Abbruchfunktion: Eingriff in den Bearbeitungsprozess
In bestimmten Situationen soll die Ausführung einer Logik abgebrochen werden, resp. die Logik soll schon gar nicht ausgeführt werden. Erfolgt ein Abbruch, wird nichts mehr an die Ausgänge gesendet.
Die Abbruchfunktion gehört zum Bearbeitungsprozess einer Logik.
Über die GUI
In der GUI wird ein Abbruch erreicht, indem man einen Inhibit-Eingang hinzufügt (über einen Klick auf den runden Button mit dem Kreuz). Sobald auf diesem Eingang ein TRUE eintrifft, wird die Ausführung der Logik abgebrochen oder umgekehrt, solange an allen Inhibit-Eingängen ein FALSE anliegt, wird die Logik ausgeführt.
ACHTUNG: Wenn an einem Inhibit-Eingang dauerhaft ein TRUE angelegt wird (bspw. über die Zuweisung eines entsprechenden Parameters), pausiert die Logik auch dauerhaft. Sollte man dies wünschen wäre vermutlich die oben beschriebene Aktivierungsfunktion die geeignetere Wahl, weil dadurch die Inaktivität deutlich im Status der Logik angezeigt wird.
Status | ||||
---|---|---|---|---|
|
Innerhalb einer Custom-Logik
In einer Custom-Logik verwendet man für einen Abbruch den Logik-Baustein → Break. Sobald einer seiner Eingänge - er kann mehrere haben - auf TRUE gesetzt wird, bricht auch hier die Ausführung der Logik ab.
Beim einem Abbruch werden die im Code nachfolgenden Logik-Bausteine nicht mehr ausgeführt. Es wird auch kein Ausgang gesendet, selbst wenn die eine Variable, die einem Ausgang zugeordnet ist, bereits gesetzt worden ist.
Die Verwendung von ["Break", ["$VAR<Inhibit?>"]]
erlaubt es, in der GUI beliebig viele Eingänge hinzuzufügen, die den Abbruch einer Custom-Logik triggern können.
Abkoppelungsfunktion: An- und Abkoppeln von Ein- und Ausgängen
Über ein “Abkoppeln” von Ein- bzw. Ausgängen kann eine Logik im Logikeditor von der Außenwelt isoliert werden. Damit wird vorübergehend die Datenübernahme, resp. die Datenübermittlung für den abgekoppelten Ein- bzw. Ausgang gestoppt. Alle übrigen Prozessschritte des Bearbeitungsprozess einer Logik bleiben aber aktiv und werden durch das Abkoppeln nicht beeinflusst.
Damit kann beispielsweise das Verhalten der Logik im Doktormodus getestet werden, ohne dass das berechnete Ergebnis auf das Zielobjekt geschrieben wird. Gleiches gilt für abgekoppelte Eingänge: In diesem Fall triggert ein eintreffender Wert die Ausführung der Logik nicht und der empfangene Wert wird auch nicht in die Logik übernommen.
Der Logikeditor ermöglicht es, jeden Ein- und Ausgang durch einen Klick auf das Stecker-Symbol vom Quell- oder Zielobjekt abzukoppeln:
Gekoppelt: | Abgekoppelt: | |
Zum Wechseln der Zustände auf das Symbol klicken |
Gegenüberstellung der drei Funktionen
Wie bereits oben erwähnt, kann der Bearbeitungsprozess einer Logik nur durchgeführt wird, wenn die Logik aktiviert (d.h. gestartet) ist.
Es ist aber auch möglich eine Logik bloß zu pausieren, indem ihre Bearbeitung durch ein dauerhaftes Einschalten der Abbruchfunktion permanent abgebrochen wird.
Das Abkoppeln unterbindet die Datenübernahme und / oder Datenübermittlung der Logik, d.h. die Funktion betrifft die Schnittstelle der Logik zum TWS-Objektsystem.
Damit haben diese drei Funktionen wesentliche Unterschiede in Bezug auf ihren Umgang mit den Daten.
Eine angehaltene Logik ist nicht aktiv: Sie liest daher keine Daten an den Eingängen.
Bei einer (allenfalls auch dauerhaft) abgebrochene Logik läuft der Bearbeitungsprozess, es werden einzig die Resultate der Berechnungen nicht weitergegeben; damit werden ihre Ausgänge nicht bedient, hingegen bleiben bei einer abgebrochenen Logik die Eingänge weiterhin aktiv und lesen die eingehenden Daten mit.
Bei einer Abkoppelung von Eingängen erhält die Logik die dort eintreffenden Daten nicht. Bei einer Abkoppelung der Ausgänge wird das TWS-Objektsystem nicht mit den von der Logik berechneten Daten bedient.
Der Unterschied zeigt sich vor allem, wenn die Sperrfunktionen aufgehoben wird:
Eine abgebrochene Logik wird nach ihrer Freischaltung mit den zwischenzeitlich aktualisierten Werten weiterarbeiten, während eine angehaltene Logik die zwischenzeitlich erfolgten Wertänderungen nicht kennt und deshalb mit den letzten ihr bekannten Werten an den Eingängen arbeiten muss. Bei einem Ankoppeln von Eingängen ist das Verhalten sehr ähnlich: die Logik arbeitet mit dem letzten ihr bekannten Wert an diesem Eingang weiter.