F64_BCMP

Comparación de bloques de datos

Compara el contenido del bloque de datos especificado por s2_Start con el contenido del bloque de datos especificado por s3_Start según el contenido especificado por s1_Control si la entrada de trigger EN está a TRUE.

Parámetros

Entrada

s1_Control (WORD)

código de control que especifica la posición y el número de bytes a comparar

s2_Start (WORD, INT, UINT)

área de inicio de los datos a comparar con s3_Start

s3_Start (WORD, INT, UINT)

área de inicio de los datos a comparar con s2_Start

Observaciones

Especificación del código de control s1_Control

1)

Número de bytes a comparar

rango: 16#01–16#99 (BCD)

2)

Posición del byte inicial del bloque de datos especificado por s2_Start

1: A partir del byte de mayor peso

0: A partir del byte de menor peso

3)

Posición del byte inicial del bloque de datos especificado por s3_Start

1: A partir del byte de mayor peso

0: A partir del byte de menor peso

El resultado de la operación se almacena en el registro especial R900B. Si s2_Start=s3_Start, el registro especial está a ON.

La bandera sys_bIsEqual se actualiza cada vez que se ejecuta una instrucción de comparación. Por lo tanto, el programa que utilice la bandera R900B se debe ejecutar justo después de la instrucción F64_BCMP .

Las variables s1 y s2 tienen que ser del mismo tipo de datos.

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
		start: BOOL:=FALSE;
			(*activates the function*)
		ControlCode: WORD:=16#1106;
			(*s2 starting from upper byte
s3 starting from upper byte
compare 6 bytes*)
		DataBlock1: ARRAY [0..5] OF INT:=[6(1234)];
		DataBlock2: ARRAY [0..5] OF INT:=[6(1234)];
		equal_block: BOOL:=FALSE;
	END_VAR

Cuerpo de la POU

Cuando la variable start está ajustada a TRUE, se ejecuta la función.

Cuerpo LD

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_CONTACT,,start,4,1,6,3,);
B(B_F,F64_BCMP!,Instance,10,0,18,6,,?DEN?Ds1_Control?Ds2_Start?Ds3_Start?AENO);
B(B_VARIN,,ControlCode,8,2,10,4,);
B(B_VARIN,,DataBlock1[0],8,3,10,5,);
B(B_VARIN,,DataBlock2[0],8,4,10,6,);
L(1,2,4,2);
L(6,2,10,2);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

IF start then
    F64_BCMP( s1_Control:= ControlCode,
         s2_Start:= DataBlock1[0],
         s3_Start:= DataBlock2[0]);
END_IF;

Cuerpo IL

Modificado el: 2024-10-18Comentarios sobre esta páginaLínea directa de Panasonic