FP_COMBINE

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.

Parámetros

Entrada

s1, s2 (WORD, DWORD)

Valores a combinar

s3_Mask (WORD, DWORD)

Máscara de entrada que determina la fuente de cada bit

Salida

d (WORD, DWORD)

Resultado combinado

Banderas de error

sys_bIsOperationErrorHold (pasa a TRUE y permanece TRUE)
  • si el área especificada utilizando el modificador índice supera el límite.
sys_bIsOperationErrorNonHold (pasa a TRUE para un ciclo de scan)

  • si el área especificada utilizando el modificador índice supera el límite.

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

Cuerpo LD

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

Cuerpo en ST

IF bStart then
    FP_COMBINE(s1 := dwInput_value1, s2 := dwInput_value2, s3_Mask := dwSelection, d => dwOutput_value);
END_IF;

Modificado el: 2019-05-20Comentarios sobre esta páginaLínea directa de Panasonic