Sélectioner une valeur à partir de plusieurs voies
La fonction Multiplexer sélectionne une variable d’entrée et écrit sa valeur dans la variable de sortie. La 1ère variable d’entrée détermine quelle variable d’entrée (IN1or IN2...) doit être écrite dans la variable de sortie. La fonction MUX peut être configurée pour n’importe quel nombre d’entrées souhaité.
Entrée
Sélectionne la valeur qui doit être écrite dans la sortie
La valeur 0 est écrite dans la sortie si K = 0
La valeur 1 est écrite dans la sortie si K = 1
Sortie
Résultat . Sortie comme entrées 2 et 3
Si vous utilisez le type de données STRING avec des petits automates tels que FP-e ou FP0, veillez à ce que la longueur de la chaîne, résultat de la conversion, soit égale ou supérieure à celle de la chaîne de départ.
Cette fonction peut être étendue à un maximum de 28 contacts d’entrée, voir également "Modifier des éléments".
Les 2ème et 3ème variables d’entrée doivent être du même type de données.
Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU. Le même en-tête de POU est utilisé pour tous les langages de programmation.
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
Dans cet exemple, les variables d’entrée (channel_select, channel_0 et channel_1) ont été déclarées. Vous pouvez aussi entrer directement une constante au contact d’entrée d’une fonction.
Dans channel_select, vous trouvez la valeur Integer (0, 1...n) désignant la voie sélectionnée channel_0 ou channel_1. Le résultat est écrit dans 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 |