Seleccionar un valor de entre varias entradas
La función MUX selecciona una variable de entrada y escribe su valor en la variable de salida. La primera variable determina qué variable de entrada (IN1 o IN2 ...) se copia en la variable de salida. La función MUX se puede configurar para cualquier número de entradas.
Entrada
Selecciona qué valor se escribe en la salida
El valor 0 se escribe en la salida si K = 0
El valor 1 se escribe en la salida si K = 1
Salida
Resultado Salida que contiene el valor de la entrada seleccionada
Cuando se utiliza el tipo de datos STRING con un PLC pequeño como el FP-e o el FP0, asegurarse de que la longitud de la cadena de caracteres destino es igual o superior a la longitud de la cadena fuente.
Esta función se puede expandir para un máximo de 28 contactos de entrada, consultar Modificar elementos.
Las variables de la segunda entrada en adelante deben ser del mismo tipo de datos.
Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU. Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.
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
En este ejemplo se han declarado las variables de entrada (channel_select, channel_0 y channel_1). Sin embargo, se puede introducir una constante directamente en la entrada de una función.
En channel_select se almacena el valor entero (0, 1...n) para la selección de channel_0 o de channel_1. El resultado se escribe en 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 |