Aufbau und Verwendung der Modulbausteine
Diese Seite erläutert die für den Aufruf eines Modulbausteins verwendete Syntax.
Allgemeine Hinweise
Modulbausteine sind vorgegebene (kompilierte) Funktionen, die innerhalb von Custom-Logiken verwendet werden können. Die Auswahl hängt von der Software-Version des TWS ab.
Aufbau und Aufruf eines Modulbausteins
Im Rahmen des →Baukasten-Denkens umfasst die Definition eines Modulbausteins
die Modulkennung (die ihn identifiziert) und
0 bis n Eingängen (wobei diese Eingänge tw. die Funktion einer “Option” haben) sowie aus
0 bis n Ausgängen.
Im Code eine Custom-Logik werden diese drei Elemente zu einem JSON-Array zusammengefasst (deshalb wird ein Modulbaustein im Code durch zwei eckige Klammern umfasst ).
Beispiele:
["And", ["$In1", "$In2",... ,"$In_n"], "$Out"]
["Latch","$In","$Out","$Schalter",SchalterOption]
Der eigentliche Aufruf eines Modulbausteins erfolgt innerhalb des →Modul-Arrays der Custom-Logik
Die Elemente des Modulbaustein-Arrays
Erstes Element ist immer die Modulkennung, d.h. ein in Anführungszeichen gesetzter Text, zum Beispiel “And”
oder “Latch”
.
Der Modulkennung folgen - in einer vorgegebenen Reihenfolge und jeweils getrennt durch ein Komma - zusätzliche Elemente, welche die Ein- und Ausgänge des Modulbausteins bedienen.
Zur Bedienung der zusätzlichen Ein- und Ausgängselemente müssen in aller Regel Variablen (bspw. "$In"
oder "$Out")
verwendet werden. Falls an einem Eingangs- oder Ausgangselement mehr als ein Wert übergeben werden kann, werden die Variablen in der Form eines Arrays (bspw. ["$In1", "$In2",... ,"$In_n"]
) zusammengefasst oder es wird - anstelle des Arrays - eine Mehrfachvariable (bspw. $VAR<Input!>
) verwendet.
Der Datentyp der jeweiligen Variablen muss den Vorgaben des Modulbausteins für dieses Ein- oder Ausgangselement entsprechen.
Vom Grundsatz, dass den Elementen eines Modulbausteins-Arrays nur Variablen übergeben werden dürfen, kann in folgenden Fällen abgewichen werden:
es darf eine bloße
0
(d.h. ohne Anführungszeichen) übergeben werden, wenn ein Eingang des Modulbausteins nicht bedient oder ein Ausgang nicht abgefragt werden soll,bei Optionen wie bspw. beim →Latch muss ebenfalls am entsprechenden Eingang direkt eine Integerzahl übergeben werden (im folgenden Beispiel wird der Wert 3 als Option übergeben:
["Latch","$true","$FreigabeWechsel","$Freigabe",3]
)
Um bequem und einheitlich konstante Werte, wie bspw. TRUE oder FALSE, an Modul-Bausteine zu übergeben, hat es sich bewährt, im LEVEL-Array entsprechende Konstanten als Variablen zu definieren. Diese Praxis ist aber nicht zwingend. Ein Beispiel einer solchen Definition:
"Level": [
// Variablen mit konstanten Werten
["$true","bool",true],
["$false","bool",false],
// Weitere Variblen
],