Ergänzende Hinweise zum Bearbeitungsprozess einer Logik

Der Bearbeitungsprozess eine Logik wird unter Aufbau und Funktionsweise einer Logik erläutert. Für Entwickler können folgende Zusatzinformationen von Bedeutung sein:

Festlegung des Trigger- und Sendeverhaltensverhaltens

Diese Einstellungen werden bei jedem Speichern der Custom-Logik an die Oberfläche übertragen. Änderungen an der Logik-Zelle werden im 2. Schritt beim Speichern der Logik-Zelle aktiviert.

Hinweis: Der Entwickler können somit Default-Einstellungen festgelegt werden, die vom Benutzer an der Oberfläche ohne Kenntnis der Custom-Logik angepasst werden können.

Triggerverhalten an Eingängen

Im Input-Array wird für die Eingänge der Custom-Logikzelle das Triggerverhalten mittels Trigger-Option festgelegt.

"Input": [ [<Name>, <Beschreibung>, <Variablenname>, <Trigger-Option> ], ... ]

Die Trigger-Optionen bestimmen, wann ein Signal am Eingang die Berechnung der Logikzelle anstößt.

Mögliche Optionen:

Das Startverhalten kann alternativ zum im Level-Array definierten Defaultwert bestimmt werden indem in der Triggeroption ein "i" hinzugefügt wird. Das Startverhalten entspricht dann" Logik sperren bis Input verfügbar ist":

Sendeverhalten an Ausgängen

Im Output-Array wird für die Ausgänge der Custom-Logikzelle das Sendeverhalten mittels Sende-Option festgelegt.

"Output": [ [<Name>, <Beschreibung>, <Variablenname>, <Sende-Option> ], ... ]

Die Sende-Optionen bestimmen, wann ein Wert am Ausgang gesendet wird.

Mögliche Optionen:

Für die Option “t” und “ct” wird das Senden auf allen Ausgängen mit dieser Einstellung immer ausgelöst, wenn ein zeitgesteuertes Element die Logik-Abarbeitung triggert (und zwar unabhängig davon, ob das zeitgesteuerte Element im Zusammenhang mit dem jeweiligen Ausgang steht).

Sendeverzögerung

In einer Custom-Logik kann diese Funktion im Modul-Array mit dem Modulbaustein “Monoflop” umgesetzt werden, insbesondere wenn die Verzögerungen von der Logik selbst berechnet werden.

Für das reine zeitverzögerte Senden wird in der Regel aber auch bei Custom-Logiken die Verzögerungsfunktion über Einstellungen in der GUI definiert.

Sperre einer Custom-Logik (inhibit)

In einer Logik-Zelle die auf einer Custom-Logik basiert kann ein Inhibit-Eingang nur angelegt werden, wenn dies vom Ersteller des Custom-Logik-Code vorbereitet wurde. Dazu verwendet man den Logik-Baustein → Break.

Einschränkungen in der Verwendung von Variablen:

Error-Handling

Die Error-Handling-Funktion ermöglicht das Ausgeben eines bool'schen Wertes in Abhängigkeit davon, ob die Logik aufgrund eines Errors abgebrochen wurde oder nicht. Dies ergibt vor allem im Zusammenspiel mit freien Formeln (CalcFormula), aber auch mit dem Baustein Ratio (Division durch 0 = Fehler).

Es wird kein Eintrag im Abschnitt MODULE benötigt, dafür aber ein Eintrag im Abschnitt LEVEL und ein Eintrag im Abschnitt OUTPUT.

    "Level":[	
    ...
		[ "$Error?", "bool", false ]
    ],
    ...
    "Output":[
    ...
		["Err","Fehler","$Error?","ce"]
    ]

Der Fehlerausgang ist derjenige Ausgang, der in seiner Sendeoption die Buchstabenkombination "ce" aufweist. Das "c" steht, wie üblich für "sende bei Änderung". Das "e" weist ihn als den Ausgang aus, der den (Fehler-)Zustand der Zelle ausgibt.

Das Fragezeichen in der Variable ist optional, ohne erscheint der Ausgang sofort und muss nicht erst über das [+] in der Oberfläche aktiviert werden.

Wenn ein Fehler während der Berechnung passiert, wird die weitere Berechnung abgebrochen und lediglich der Fehlerausgang gesetzt.

Beachte: Es darf nur einen Fehlerausgang pro Logikzelle geben und die Variable (hier "$Error?") muss vom Typ "bool" sein und darf nicht anderweitig in der Logikzelle verwendet werden.