F53_DBDIV

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

El resultado se almacena en d y el resto se almacena en la variable del sistema sys_diDDivRemainder.

Parámetros

Entrada

s1 (DWORD)

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

s2 (DWORD)

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

Salida

d (DWORD)

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

Ejemplo

  1.  (1) Valor de ejemplo 16#00001110 (BCD)
  2.  (2) Valor de ejemplo 16#0000011 (BCD)
  3.  (3) Resultado 16#00000100 (BCD) cuando la entrada de trigger pasa a TRUE.
  4.  (4) Resto de 16#00000010 (BCD) cuando la entrada de trigger está a TRUE, se almacena en sys_diDDivRemainder
  5.  (5) dato de 32 bits
  6.  (6) Trigger: TRUE

Observaciones

En lugar de utilizar esta instrucción F, se recomienda utilizar la instrucción FP7 correspondiente:

FP_MOD_BCD,FP_DIV_MOD_BCD,FP_DIV_BCD

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: DWORD:=16#00001110;
			(*dividend*)
		divisor: DWORD:=16#00000011;
			(*divisor*)
		output_value: DWORD:=0;
			(*result after 0->1 leading edge
from start: 16#00000100*)
	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,10,1,12,3,);
B(B_VARIN,,dividend,12,2,14,4,);
B(B_VARIN,,divisor,12,3,14,5,);
B(B_VAROUT,,output_value,21,2,23,4,);
B(B_F,F53_DBDIV!,Instance,14,0,21,5,,?DEN?D@'s1'?Ds2?AENO?Cd);
L(1,2,10,2);
L(12,2,14,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
    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
    F53_DBDIV(dividend, divisor, output_value);
END_IF;

Modificado el: 2021-07-14Comentarios sobre esta páginaLínea directa de Panasonic