Seleziona valore da più canali
La funzione Multiplexer seleziona una variabile di ingresso e scrive il suo valore nella variabile di uscita. La 1a variabile di ingresso determina quale variabile di ingresso (IN1 o IN2 ...) vada scritta nella variabile di uscita. La funzione MUX può essere configurata per qualsiasi numero di ingressi desiderato.
Ingresso
Seleziona il valore viene scritto nella di uscita
il valore 0 viene scritto nella di uscita se K = 0 <cs id="58675">FALSE</cs>
il valore 1 viene scritto nella di uscita se K = 1
Uscita
Risultato uscita come 2° e 3° ingresso
In caso di utilizzo del tipo di dato STRING con PLC piccoli come FP-e o FP0, assicuratevi che la lunghezza della stringa risultato sia uguale o maggiore della lunghezza della stringa di origine.
Questa funzione può essere estesa a un massimo di 28 contatti di ingresso, vedere anche Modificare gli elementi.
La 2a e 3a variabile di ingresso deve essere dello stesso tipo di dato.
Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.
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 questo esempio sono state dichiarate le variabili di ingresso (channel_select, channel_0 e channel_1). Al loro posto potete inserire una costante direttamente nel contatto di ingresso di una funzione.
In channel_select trovate il valore intero (0, 1...n) per la selezione di channel_0 o channel_1. Il risultato verrà scritto in output.
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 |