Info |
---|
Es bestehen verschiedene Möglichkeiten, festzulegen, ob eine Logik ihre Arbeit überhaupt aufnimmt, resp. mit dem Objektsystem kommuniziert. Sie kann gänzlich deaktiviert werdendas Verhalten einer Logik einzuschränken: Sie kann entweder gänzlich angehalten, ihre Datenübergabe kann über die Abbruchfunktion blockiert werden oder sie kann von der Aussenwelt abgekoppelt werden. Dieses Kapitel beschreibt diese 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.
Dieser Status wird im Logikeditor in der unteren rechten Ecke der Logikbox Der Aktivierungsstatus einer Logik kann nur in der GUI beeinflusst werden und zwar über die beiden nachfolgend dargestellten Symbole beeinflusst. Buttons. Sie befinden sich in der unteren rechten Ecke der Logikzelle Der Aktivierungsstatus wird ebenfalls in der Logikbox Logikzelle (oben in der Mitte) angezeigt:
Anhalten | Starten | Anhalten|
---|---|---|
Button | ||
Anzeige | Starten |
Ü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.
Gegenüberstellung zurAbbruchfunktion
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 bloss zu pausieren, indem ihre Bearbeitung durch ein dauerhaftes Einschalten der Abbruchfunktion permanent abgebrochen wird.
Zwischen dem Anhalten auf der Aktivierungsebene und dem Abbruch im Rahmen des Bearbeitungsprozesses besteht jedoch ein ganz wesentlicher Unterschied:
Eine angehaltene Logik ist nicht aktiv: Sie liest daher keine Daten an den Eingängen.
Bei einer (allenfalls auch dauerhaft) abgrebrochene Logik läuft der Bearbeitungsprozess, es werden einzig die Resultate der Berechnungen nicht weitergegeben; damit bleiben bei einer abgebrochenen Logik die Eingänge weiterhin aktiv und lesen die eingehenden Daten mit; .
Somit wird eine abgebrochene Logik nach ihrer Freischaltung mit den zwischenzeitlich aktualisierten Werten weiterarbeiten, während dem eine angehaltene Logik die zwischenzeitlich erfolgten Wertänderungen nicht kennt und deshalb mit ihren Defaultwerten arbeiten muss.
: 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.
In dem dauerhaft an einem Inhibit-Eingang ein FALSE angelegt wird (bspw. über die Zuweisung eines entsprechenden Parameters), kann eine Logik pausiert werden.
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” kann eine Logik im Logikeditor von der Aussenwelt isoliert werden, das bedeutet dass vorübergehend die Datenübernahme, resp. die Datenübermittlung gestoppt wird. 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 beobachtet 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 bloss 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 dem eine angehaltene Logik die zwischenzeitlich erfolgten Wertänderungen nicht kennt und deshalb mit ihren Defaultwerten arbeiten muss;
Status | ||||
---|---|---|---|---|
|