FP_COMBINE

Combina dati

Questa istruzione FP combina i due valori agli ingressi s1 e s2, mentre i valori di bit all'ingresso s3_Mask determinano l'origine di ciascun bit. Un valore di bit FALSE significa che viene utilizzato il bit all'ingresso s1, un valore di bit TRUE significa che viene utilizzato il bit all'ingresso s2. Il risultato viene memorizzato in d.

Parametri

Ingresso

s1, s2 (WORD, DWORD)

Valori da combinare

s3_Mask (WORD, DWORD)

Maschera ingresso determinante l'origine di ciascun bit

Uscita

d (WORD, DWORD)

Risultato combinato

Flag di errore

sys_bIsOperationErrorHold (passa a TRUE e resta TRUE)
  • se l'area specificata utilizzando il registro indice eccede il limite.
sys_bIsOperationErrorNonHold (passa a TRUE per una scansione)

  • se l'area specificata utilizzando il registro indice eccede il limite.

Esempio

Intestazione del POU

Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.

	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

Corpo LD

Quando la variabile bStart è impostata su TRUE, la funzione viene eseguita. I bit di maschera in dwSelection determinano quali bit vengono restituiti in dwOutput_value. Per i bit di maschera in stato TRUE (1) vengono restituiti i corrispondenti bit di dwInput_value1. Per i bit di maschera in stato FALSE (0) vengono restituiti i corrispondenti bit di 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

Corpo ST

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

L'ultima revisione: 2019-04-30Feedback su questa paginaPanasonic hotline