Multiplexer
Mit der Multiplexer-Funktion wird eine Eingangsvariable ausgewählt und deren Wert in die Ausgangsvariable geschrieben. Mit der 1. Eingangsvariablen legen Sie fest, welche Eingangsvariable (IN1 oder IN2...) in die Ausgangsvariable geschrieben werden soll. Die Funktion MUX können Sie für eine beliebige Anzahl an Eingängen konfigurieren.
Eingang
Legt fest, welcher Wert in den Ausgang geschrieben wird
Der Wert 0 wird in den Ausgang geschrieben, wenn K = 0
Der Wert 1 wird in den Ausgang geschrieben, wenn K = 1
Ausgang
Ergebnis Ausgang wie 2. und 3. Eingang
Bei der Verwendung des Datentyps STRING mit Kleinsteuerungen wie FP-e oder FP0 müssen Sie darauf achten, dass die Länge der Ergebniszeichenfolge mindestens so groß ist wie die Länge der Ausgangszeichenfolge.
Die Funktion ist auf max. 28 Eingangskontakte erweiterbar, siehe auch "Elemente bearbeiten".
Die 2. und 3. Eingangsvariablen müssen vom gleichen Typ sein.
Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.
VAR
channel_select : INT:=0;
(*value '0' to 'n'*)
channel_0: INT:=0;
(*all types allowed*)
channel_1: INT:=0;
(*all types allowed*)
output: INT:=0;
(*all types allowed*)
END_VAR
In diesem Beispiel wurden die Eingangsvariablen (channel_select, channel_0 und channel_1) deklariert. Stattdessen können Sie im Rumpf eine Konstante auch direkt an den Eingang der Funktion schreiben.
In Kanalauswahl channel_select steht der Integer-Wert (0, 1...n), mit dem channel_0 oder channel_1 ausgewählt wird. Das Ergebnis wird in output geschrieben.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,MUX-2!,Instance,10,0,15,5,,?DK?DIN0?DIN1?C);
B(B_VARIN,,channel_select,8,1,10,3,);
B(B_VARIN,,channel_0,8,2,10,4,);
B(B_VARIN,,channel_1,8,3,10,5,);
B(B_VAROUT,,output,15,1,17,3,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
output:=MUX( K:= channel_select , IN0:= channel_0 ,
IN1:= channel_1 );
LD |
channel_select |
MUX |
channel_0,channel_1 |
ST |
output |