Seleccionar un valor de entre dos canales
Con la primera variable de entrada (tipo de datos BOOL) de SEL se define qué variable de entrada se va a escribir en la variable de salida. Si el toma el valor Booleano = 0 (FALSE), la variable de entrada IN0 se escribirá en la variable de salida, en caso contrario IN1.
Entrada
Primera entrada: seleccionar entre el valor de entrada IN0 o IN1
Segunda entrada: se escribe en la variable de salida si G = FALSE
Tercera entrada: se escribe en la variable de salida si G = TRUE
Salida
Resultado que toma el valor de IN0 o IN1
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.
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: BOOL:=FALSE;
channel_0: INT:=0;
channel_1: INT:=0;
output: INT:=0;
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.
Si channel_select es 0, el valor de channel_0 se copia en la salida, en caso contrario se copia el valor de channel_1.
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,SEL!,Instance,15,0,20,5,,?DG?DIN0?DIN1?C);
B(B_VARIN,,channel_0,13,2,15,4,);
B(B_VARIN,,channel_1,13,3,15,5,);
B(B_VAROUT,,output,20,1,22,3,);
B(B_CONTACT,,channel_select,7,1,9,3,);
L(1,2,7,2);
L(9,2,15,2);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
output := SEL(G := channel_select, IN0 := channel_0, IN1 := channel_1);
LD |
channel_select |
SEL |
channel_0,channel_1 |
ST |
output |