MUX

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.

Parámetros

Entrada

K (INT)

Selecciona qué valor se escribe en la salida

IN0 (ANY)

El valor 0 se escribe en la salida si K = 0

IN1 (ANY)

El valor 1 se escribe en la salida si K = 1

Salida

VAR_OUT (ANY)

Resultado Salida que contiene el valor de la entrada seleccionada

Observaciones

  • 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.

Ejemplo

Cabecera de la POU

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.

Cuerpo de la POU

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.

Cuerpo LD

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

Cuerpo en ST

output:=MUX( K:= channel_select , IN0:= channel_0 ,
         IN1:= channel_1 );

Cuerpo IL

LD

channel_select

MUX

channel_0,channel_1

ST

output

Modificado el: 2021-07-15Comentarios sobre esta páginaPanasonic hotline