F354_FSCAL

Interpolación lineal de valores REAL discretos

Esta función realiza la linealización (escalado) de una tabla de números reales y proporciona la salida (Y) correspondiente a la entrada (X).

Parámetros

Entrada

x (REAL)

Valor de entrada X

xy_data (DUT definida por el usuario)

Aplicar a esta entrada el primer elemento de la DUT definida por el usuario, esto es, el número de valores xy. Véase más abajo la descripción de la estructura de la DUT.

Salida

y (REAL)

Valor de salida Y

Observaciones

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

Para obtener información más detallada sobre la linealización, consultar las instrucciones: F282_SCAL y F283_DSCAL.

Banderas de error

sys_bIsOperationErrorHold (pasa a TRUE y permanece TRUE)
  • si la dirección especificada utilizando un modificador índice supera un límite.

  • s el valor de x no es un número real.

  • si el número de valores (primer elemento de la DUT) es < 2 ó > 99.

  • si en 'xy_data' no se han introducido pares de valores (xt, yt) de tipo real.

  • si los valores de x no se han registrado en orden secuencial ascendente en la tabla lineal 'xy_data'.

  • si la tabla lineal de 'xy_data' es demasiado grande.

  • si se produce un desbordamiento (no es posible realizar la operación) durante el proceso de linealización.

sys_bIsOperationErrorNonHold (pasa a TRUE para un ciclo de scan)
  • si la dirección especificada utilizando un modificador índice supera un límite.

  • s el valor de x no es un número real.

  • si el número de valores (primer elemento de la DUT) es < 2 ó > 99.

  • si en 'xy_data' no se han introducido pares de valores (xt, yt) de tipo real.

  • si los valores de x no se han registrado en orden secuencial ascendente en la tabla lineal 'xy_data'.

  • si la tabla lineal de 'xy_data' es demasiado grande.

  • si se produce un desbordamiento (no es posible realizar la operación) durante el proceso de linealización.

Ejemplo

DUT

La DUT (Data Unit Type) se crea en el repositorio de DUTs

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
		CalculateY: BOOL:=FALSE;
		X_value: REAL:=4.0;
		Y_value: REAL:=0.0;
		XY_values: XY_DUT;
		@'': @'';
	END_VAR
	VAR_EXTERNAL
		ProcessData: ProcessDataStructure;
	END_VAR
	VAR
		@'': @'';
	END_VAR

Cuerpo de la POU

Cuando la variable CalculateY pasa 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 := 5 ;
        NETWORK_BODY
B(B_VARIN,,CalculateY,10,1,12,3,);
B(B_VARIN,,X_value,10,2,12,4,);
B(B_VARIN,,XY_values.Number,10,3,12,5,);
B(B_VAROUT,,Y_value,19,2,21,4,);
B(B_F,F354_FSCAL!,Instance,12,0,19,5,);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

IF start then
    F354_FSCAL(x := X_value, xy_data := XY_values.Number, y => Y_value);
END_IF;
Temas relacionados

DUT

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