FP_SCALE

Realizar un escalado de valores discretos

Estas instrucciones FP representan el valor y en la posición x realizando un escalado basado en los puntos de referencia contiguos Pw(xw, yw) y Pw+1(xw+1, yw+1). En este ejemplo, w es el punto de referencia más próximo cuyo valor x es menor que el valor de entrada s1_x, esto es, la función conecta los puntos de referencia individuales en serie y representa el valor de salida d_y basado en el valor de entrada s1_x.

Parámetros

Entrada

s1_x

Valor de entrada

  • En tipos de PLC de 16 bits: (INT, DINT, REAL)

  • En tipos de PLC de 32 bits: (INT, DINT, UINT, UDINT, REAL, LREAL)

s2_xyData (DUT definida por el usuario; INT, UINT, WORD (ANY16))

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

d_y

Resultado

  • En tipos de PLC de 16 bits: (INT, DINT, REAL)

  • En tipos de PLC de 32 bits: (INT, DINT, UINT, UDINT, REAL, LREAL)

Observaciones

Aplicaciones ejemplo:

  • Linealizar valores medidos, p. ej., con sensores no lineales

  • Representar una temperatura de salida y de un calentador en relación con la temperatura exterior x

Banderas de error

sys_bIsOperationErrorHold (pasa a TRUE y permanece TRUE)
  • si el área especificada utilizando el modificador índice supera el límite.

  • si el número de puntos de referencia está fuera del rango de 2–256.

  • si s2_xyData está fuera de rango.

  • si los valores x de los puntos de referencia no están en orden ascendente.

sys_bIsOperationErrorNonHold (pasa a TRUE para un ciclo de scan)
  • si el área especificada utilizando el modificador índice supera el límite.

  • si el número de puntos de referencia está fuera del rango de 2–256.

  • si s2_xyData está fuera de rango.

  • si los valores x de los puntos de referencia no están en orden ascendente.

Limitaciones de los valores de salida y:

  • Si el valor de entrada x es inferior a la coordenada x del primer punto de referencia (P1: x< x1), la salida y se encuentra a la coordenada y del primer punto de referencia (salida y = y1, línea horizontal discontinua horizontal en la esquina superior izquierda de la gráfica).

  • Si el valor de entrada x es superior a la coordenada x del último punto de referencia (P8: x > x8), la salida y se encuentra a la coordenada y del último punto de referencia (salida y = y8, línea horizontal discontinua horizontal en la esquina superior derecha de la gráfica).

DUT para los pares de valores xy (puntos de referencia P1, P2, ...):

Los puntos de referencia (P1, P2, ...) se copian a la función a través de una variable de tipo DUT que contiene el número de puntos de referencia y los pares de valores xy (número; x1, x2, ...; y1, y2; ...).

Estructura de la DUT definida por el usuario:

  1. Elemento: número de puntos de referencia z (INT). El número de puntos de referencia (pares de valores xy) puede encontrarse en cualquier lugar entre 2–100. En la gráfica se utilizan ocho puntos de referencia (P1P8).
  2. Elemento: Variable del tipo de dato ARRAY[1..z] OF INT (en tipos de PLC de 16 bits: INT, DINT, REAL; en tipos de PLC de 32 bits: (INT, DINT, UINT, UDINT, REAL)) o ARRAY[0..z-1] of INT (en tipos de PLC de 16 bits: INT, DINT, REAL; en tipos de PLC de 32 bits: (INT, DINT, UINT, UDINT, REAL)) que contiene los valores x. Aquí, z representa la línea marcadora para el número de puntos de referencia (véase la entrada 1).

  3. Elemento: Variable del tipo de dato ARRAY[1..z] OF INT (en tipos de PLC de 16 bits: INT, DINT, REAL; en tipos de PLC de 32 bits: (INT, DINT, UINT, UDINT, REAL)) o ARRAY[0..z-1] of INT (en tipos de PLC de 16 bits: INT, DINT, REAL; en tipos de PLC de 32 bits: (INT, DINT, UINT, UDINT, REAL)) que contiene los valores y . Aquí, z representa la línea marcadora para el número de puntos de referencia (véase la entrada 1).

NOTA

FP_SCALE es compatible con los siguientes tipos de datos:

  • En tipos de PLC de 16 bits (FP-Sigma, FP-X): INT, DINT, REAL

  • En tipos de PLC de 32 bits (FP7): INT, DINT, REAL, UINT, UDINT

Temas relacionados

Instrucciones F correspondientes: F282_SCAL, F283_DSCAL, F354_FSCAL

Instrucciones del sistema

Panel Instrucciones

Áreas de memoria

Tipos de datos

Ejemplo

DUT

Con un Tipo de Datos Estructurados (DUT) se puede definir un tipo de dato compuesto por otros tipos de datos. Una DUT se define primero en el repositorio de DUTs y, seguidamente, se procesa como los tipos de datos estándar (BOOL, INT, etc.) en la lista de variables globales o la cabecera de la POU.

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
		bStart: BOOL:=FALSE;
		iInput: INT:=50;
		xy_data: xy_data_dut;
		iScaledOutput: INT:=0;
		@'': @'';
	END_VAR

Cuerpo de la POU

Cuando la variable bStart se encuentra 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,,bStart,4,2,6,4,);
B(B_F,FP_SCALE!,,17,1,25,6,,?DEN?Ds1_x?Ds2_xyData?AENO?Cd_y);
B(B_VARIN,,iInput,15,3,17,5,);
B(B_VAROUT,,iScaledOutput,25,3,27,5,);
B(B_VARIN,,xy_data.iNumberOfValues,15,4,17,6,);
L(1,0,1,6);
L(1,3,4,3);
L(6,3,17,3);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

IF (bStart) then
    FP_SCALE(s1_x := iInput, 
             s2_xyData := xy_data.iNumberOfValues, 
             d_y => iScaledOutput);
END_IF;

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