Multiplexer (Modulbaustein)

Selektiert einen Wert aus einer Auswahl

Syntax

["Multiplexer", ["$In1", "$In2",... ,"$In_n"],"$Out","$Select"]

Funktion

Legt abhängig vom Selektor ("$Select") einen bestimmten Wert aus dem Eingangsarray auf den Ausgang.

Eingänge

  • ["$In1", "$In2",... ,"$In_n"]: Array der zur Verfügung stehenden Elemente, bestehend aus einer oder mehreren Variablen vom Typ bool, integer, float oder string

  • "$Select"(integer oder float): Selektor, trifft die Auswahl.

Ausgänge

  • "$Out" (bool, integer, float oder string): Ergebnis der Berechnung

Besonderheiten

  • Der erste Wert im Array wird über den Selektor 0 (und nicht über 1) adressiert.

  • 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 >= n

  • Wenn einzelne Eingänge nicht verwendet werden, kann anstellen einer Variable eine 0 verwendet werden (bspw. ["Multiplexer",["$Val_A",0, "$DefVal",0,0,"$Val_D","$DefVal"],"$Out","$Select"]). Wird ein mit 0 bezeichneter Eingang selektiert, hängt das Ergebnis vom Datentyp ab:

    • bool: false

    • integer: 0

    • float: 0.0

    • string: "" (d.h. Leerstring)

  • Das Beispiel im vorstehenden Lemma zeigt gleichzeitig auch einen Weg auf, wie man einen Defaultwert (hier über die Variable "$DefVal") auf mehrere Eingänge legt.

  • Falls der Ausgang nicht verändert werden soll, sofern ein unerwarteter Wert für den Selektor auftaucht, kann die Ausgangsvariable (im Beispiel: “$Out”) auch als Ausgang verwendet werden (im nachfolgenden Bsp. sollten die unterstrichenen Werte durch den Selektor nicht adressierbar sein): unterstrichenen Werte durch den Selektor nicht adressierbar sein):
    ["Multiplexer",["$Out","$Out","$Val_A","$Val_B", "$Out", "$Val_C", "$Val_D","$Out"],"$Out","$Select"]

Praktische Anwendungsbeispiele

Entsprechendes Logik-Modul

 https://elabnet.atlassian.net/wiki/spaces/TSKB/pages/415203904

Weitere Informationen zur Funktionsweise eines Multiplexers: Wikipedia-Artikel

Beispiel Fensteranzeige: Über einen Zahlenwert (0-3) vier Binärausgänge schalten

(stammt von https://forum.timberwolf.io/app.php/kb/viewarticle?a=116)

  • $In ist ein Integer-Eingang mit möglichen Werten von 0 bis 3.

  • $Offen, $Gekippt, $Geschlossen, $Stoerung sind boolsche Ausgänge

["Multiplexer",["$true", 0, 0, 0],"$Offen","$In“], ["Multiplexer",[0, "$true", 0, 0],"$Gekippt","$In“], ["Multiplexer",[0, 0, "$true", 0],"$Geschlossen","$In“], ["Multiplexer",[0, 0, 0, "$true"],"$Stoerung","$In“]

 

2019 - 2023 by Elaborated Networks GmbH / Impressum / Datenschutzerklärung