F52_BDIV

División de 4-dígitos BCD, con especificación de destino

Divide la constante BCD o el dato BCD de 4 dígitos especificado en el área de 16 bits s1 entre la constante BCD o el dato BCD de 4 dígitos especificado por s2 si la entrada de trigger EN está a TRUE.

Parámetros

Entrada

s1 (WORD)

Dividendo, área de 16 bits para el dato BCD de 4 dígitos o constante BCD equivalente

s2 (WORD)

Divisor, área de 16 bits para el dato BCD de 4 dígitos o constante BCD equivalente

Salida

d (WORD)

Cociente, área de 16 bits para almacenar el dato BCD (el resto se almacena en la variable del sistema sys_iDivRemainder)

Ejemplo

  1.  (1) Valor de ejemplo 16#0037 (BCD)
  2.  (2) Valor de ejemplo 16#0015 (BCD)
  3.  (3) Resultado de 16#0002
  4.  (4) Resto de 16#0007
  5.  (5) Trigger: TRUE

Observaciones

El cociente se almacena en d y el resto se almacena en la variable del sistema sys_iDivRemainder.

Banderas de error

sys_bIsEqual (pasa a TRUE para un ciclo de scan)

Si el resultado calculado es 0.

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 fuction*)
		dividend: WORD:=16#0037;
			(*dividend*)
		divisor: WORD:=16#0015;
			(*divisor*)
		output_value: WORD:=0;
			(*result after 0->1 leading edge
from start: 16#0002*)
	END_VAR

Cuerpo LD

Cuando la variable start está ajustada 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 := 6 ;
        NETWORK_BODY
B(B_CONTACT,,start,5,1,7,3,);
B(B_VARIN,,dividend,7,2,9,4,);
B(B_VARIN,,divisor,7,3,9,5,);
B(B_VAROUT,,output_value,15,2,17,4,);
B(B_F,F52_BDIV!,Instance,9,0,15,5,,?DEN?D@'s1'?Ds2?AENO?Cd);
L(1,2,5,2);
L(7,2,9,2);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

IF start then
    F52_BDIV(dividend, divisor, output_value);
END_IF;

Cuerpo IL

LD

start

(* EN = start; Starting signal for the F52_BDIV function. *)

F52_BDIV

dividend, divisor, output_value

(* s1 = dividend (source1) *)

(* s2 = divisor (source2) *)

(* d = output_value (destination) *)

(* s1 / s2 = d *)

ST

out

(* option *)

Modificado el: 2022-02-07Comentarios sobre esta páginaPanasonic hotline