Comparación de bloques de datos
Compara el contenido del bloque de datos especificado por s3_StartBlock1 con el contenido del bloque de datos especificado por s4_StartBlock2 si la entrada de trigger EN es TRUE. s1_Control especifica las posiciones de los bytes, y n_Bytes el número de bytes.
Entrada
Código de control que especifica las posiciones de los bytes
Número de bytes a comparar. Valores: 1–99
Dirección de inicio del bloque de datos 1 a comparar con s4_StartBlock2
Dirección de inicio del bloque de datos 2 a comparar con s3_StartBlock1
Salida
Comparar el resultado de la operación lógica
TRUE si s3_StartBlock1 = s4_StartBlock2
Especificación del código de control s1_Control
1: comienza por el byte de mayor peso
0: comienza por el byte de menor peso
1: comienza por el byte de mayor peso
0: comienza por el byte de menor peso
Las variables s3_StartBlock1 y s4_StartBlock2 tienen que ser del mismo tipo de datos.
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*)
wControlCode: WORD:=16#11;
(*s3 starting from upper byte
s4 starting from upper byte
compare 6 bytes*)
iNumberOfBytes: INT:=6;
(*number of bytes to be compared*)
awDataBlock1: ARRAY [0..2] OF WORD:=[3(0)];
aiDataBlock2: ARRAY [0..5] OF INT:=[6(1234)];
bCompareResult: BOOL:=FALSE;
END_VAR
Cuando la variable bStart se encuentra a TRUE, se ejecuta la función.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_F,FP_COMPARE_BLOCK!,,13,1,24,8,,?DEN?Ds1_Control?Dn_Bytes?Ds3_StartBlock1?Ds4_StartBlock2?AENO?Cd_IsEqual);
B(B_CONTACT,,bStart,5,2,7,4,);
B(B_VARIN,,wControlCode,11,3,13,5,);
B(B_VARIN,,iNumberOfBytes,11,4,13,6,);
B(B_VARIN,,awDataBlock1[0],11,5,13,7,);
B(B_VARIN,,aiDataBlock2[0],11,6,13,8,);
B(B_VAROUT,,bCompareResult,24,3,26,5,);
L(1,3,5,3);
L(7,3,13,3);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
If (bStart) then
FP_COMPARE_BLOCK(s1_Control := wControlCode,
n_Bytes := iNumberOfBytes,
s3_StartBlock1[0] := awDataBlock1,
s4_StartBlock2[0] := aiDataBlock2,
d_IsEqual => bCompareResult);
End_if;