Selektiert einen Wert aus einer Auswahl.
Funktionsbeschreibung
Nimmt mehrere Eingangssignale (gleichen Typs) entgegen, aus denen über den Selektor-Eingang das Ausgangssignal ausgewählt wird.
Weil die Eingänge und der Ausgang immer vom gleichen Datentyp sein müssen, werden vier Logik-Module zur Verfügung gestellt. Der Selektor-Eingang ist immer vom Typ Integer.
Die Eingänge werden von 0 gezählt, d.h. mit Wert 1 am Selektor-Eingang wird der Wert des 2. Einganges auf den Ausgang durchgeschaltet.
Beispiel:
In diesem Fall wird mit dem Selektor 0 der Wert 3 des ersten Eingangsobjektes auf den Ausgang geschrieben.
Eingänge
Eingang 1-n (boolean / integer / float / string): Die Auswahl an Werten.
Selektor (integer):
(Optional) Inhibit 1-n (boolean): (Optionale) Sperreingänge, lösen die →Abbruchfunktion aus.
(Optional) Trigger 1-n (boolean): (Optionale) Triggereingänge, lösen die →Triggerfunktion aus.
Ausgänge
Ausgang (boolean / integer / float / string): Ausgewählter Wert.
Hinweise
Falls der Wert des Selektors grösser ist als die Anzahl der Eingänge, wird immer der letzte/höchste Eingang selektiert; damit ist es bspw. möglich, auf den letzten Eingang einen Default-Wert zu legen, der für alle Selektoren über einem bestimmten Grenzwert zur Anwendung kommt.
Formal dargestellt gilt somit bei einem Multiplexer mit n Eingängen (E0, E1, ... ,En-1), einem Ausgang (A) und einem Selektor (S) folgendes:
Ausgang Bedingung
A = E0 S < 0
A = ES 0 <= S < n
A = En-1 S >= nWenn einzelne Eingänge nicht verwendet werden, kann - über einen “Parameter” eine
0
angelegt werden. Wird ein mit 0 bezeichneter Eingang selektiert, hängt das Ergebnis vom Datentyp ab:boolean:
false
integer:
0
float:
0.0
string:
""
(d.h. Leerstring)
Praktische Anwendungsbeispiele
Zugrundeliegender Modulbaustein
FORTGESCHRITTENE
→Multiplexer-Modulbaustein
Code
EXPERTEN
Der Custom-Logik-Code dieser Logik-Module lautet wie folgt (hier am Beispiel der float-Variante, die anderen Varianten unterscheiden sich nur hinsichtlich der Variablendefinition in den Codezeilen 3 und 4):
{ "Level": [ [ "$VAR<In!>", "float", 0 ], [ "$Out", "float", 0 ], [ "$Select", "integer", 0 ], [ "$VAR<Inhibit?>", "bool", false ] ], "Module": [ [ "Break", [ "$VAR<Inhibit?>" ] ], [ "Multiplexer", [ "$VAR<In!>" ], "$Out", "$Select" ] ], "Input": [ [ "Eingang", "Eingang", "$VAR<In!>", "c" ], [ "Selektor", "Auswahl", "$Select", "c" ], [ "Inhibit", "INHIBIT", "$VAR<Inhibit?>", "u" ] ], "Output": [ [ "Ausgang", "Ausgang", "$Out", "c" ] ] }
0 Kommentare