F327_INT

Conversión de coma flotante -> entero de 16 bits (al mayor entero sin superar el valor en coma flotante)

La función convierte en entero con signo, el dato en coma flotante almacenado en s en el rango de -32.767,99 a 32.767,99. La función devuelve el resultado en la salida d.

Parámetros

Entrada

s (REAL)

Número REAL a convertir (2 palabras)

Salida

d (INT, WORD)

Destino donde se almacena el resultado de la conversión

Observaciones

El resultado de la conversión en la salida d es siempre menor o igual que el valor en coma flotante de la entrada s:

  • Si el valor en coma flotante de la entrada es positivo, se devuelve a la salida la parte entera del valor real.

  • Si el valor en coma flotante de la entrada es negativo, se devuelve a la salida el valor negativo inmediatamente inferior a la parte entera.

  • Si el valor en coma flotante solo tiene ceros después del punto decimal, se devuelve directamente la parte entera.

Banderas de error

sys_bIsOperationErrorHold (pasa a TRUE y permanece TRUE)
  • El valor en la entrada s no es un número REAL, o el resultado de la conversión desborda el área de 16 bits de la salida d.

sys_bIsOperationErrorNonHold (pasa a TRUE para un ciclo de scan)
  • El valor en la entrada s no es un número REAL, o el resultado de la conversión desborda el área de 16 bits de la salida d.

sys_bIsEqual (pasa a TRUE y permanece TRUE)

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 function*)
		input_value: REAL:=-1.234;
		output_value: INT:=0;
			(*result after a 0->1 leading
edge from start: 32*)
	END_VAR

En este ejemplo se ha declarado la variable de entrada input_value. Sin embargo, se puede introducir una constante directamente en la entrada de la función.

Cuerpo de la POU

Cuando la variable start está ajustada a TRUE, se ejecuta la función. Convierte el valor en coma flotante -1,234 en el valor entero -2 y se almacena en la variable output_value. Puesto que el número entero nunca debe ser mayor que el valor en coma flotante, la función redondea al valor entero inmediatamente inferior.

Cuerpo LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_VARIN,,output,7,1,9,3,);
B(B_VARIN,,input_value,7,2,9,4,);
B(B_VAROUT,,output_value,17,2,19,4,);
B(B_F,F327_INT,,9,0,17,4,,?DEN?D@'s'?AENO?Cd);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

IF start THEN         
    F327_INT(input_value, output_value);
END_IF;

Cuerpo IL

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