Combinar datos
Estas instrucciones FP combinan dos valores en las entradas s1 y s2 por medio de lo cual los valores de bit en la entrada s3_Mask determinan la fuente de cada bit. Un valor de bit FALSE significa que se utiliza el bit de la entrada s1, mientras que un valor de bit TRUE significa que se utiliza el bit de la entrada s2. El resultado se guarda en d.
Entrada
Valores a combinar
Máscara de entrada que determina la fuente de cada bit
Salida
Resultado combinado
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
bStart: BOOL:=FALSE;
(*activates the function*)
dwInput_value1: DWORD:=2#00000000000000001001110011001111;
dwInput_value2: DWORD:=2#00000000000000001001010110101010;
dwSelection: DWORD:=2#00000000000000001110100111110100;
dwOutput_value: DWORD:=0;
(*the result after a 0->1 leading edge
from start:
2#00000000000000001001110011001110*)
END_VAR
Cuando la variable bStart se encuentra a TRUE, se ejecuta la función. Los bits de máscara en dwSelection determinan qué bits se devuelven en dwOutput_value. Para los bits de máscara TRUE (1), se devuelven los bits correspondientes de dwInput_value1. Para los bits de máscara FALSE (0), se devuelven los bits correspondientes de dwInput_value2.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_F,FP_COMBINE!,,12,0,20,6,,?DEN?D@'s1'?Ds2?Ds3_Mask?AENO?Cd);
B(B_CONTACT,,bStart,4,1,6,3,);
B(B_VARIN,,dwInput_value1,10,2,12,4,);
B(B_VARIN,,dwInput_value2,10,3,12,5,);
B(B_VARIN,,dwSelection,10,4,12,6,);
B(B_VAROUT,,dwOutput_value,20,2,22,4,);
L(1,2,4,2);
L(6,2,12,2);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF bStart then
FP_COMBINE(s1 := dwInput_value1, s2 := dwInput_value2, s3_Mask := dwSelection, d => dwOutput_value);
END_IF;