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.
Ingresso
Valori da combinare
Maschera ingresso determinante l'origine di ciascun bit
Uscita
Risultato combinato
Istruzioni F corrispondenti: F69_WUNI Istruzione ridondante, F219_DUNI Istruzione ridondante
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
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
IF bStart then
FP_COMBINE(s1 := dwInput_value1, s2 := dwInput_value2, s3_Mask := dwSelection, d => dwOutput_value);
END_IF;