FP_SCALE

Eseguire l’interpolazione lineare di valori discreti

Questa istruzione FP restituisce il valore y alla posizione x eseguendo un’interpolazione lineare basata sui punti di riferimento circostanti Pw(xw, yw) e Pw+1(xw+1, yw+1). In questo esempio, w è il punto di riferimento più vicino, x il cui valore è più piccolo rispetto al valore di ingresso s1_x, vale a dire che la funzione connette i singoli punti di riferimento in serie e restituisce il valore di uscita d_y sulla base del valore di ingresso s1_x.

Parametri

Ingresso

s1_x

Valore di ingresso

  • Su tipi di PLC a 16 bit: (INT, DINT, REAL)

  • Su tipi di PLC a 32 bit: (INT, DINT, UINT, UDINT, REAL, LREAL)

s2_xyData (DUT definita dall’utente; INT, UINT, WORD (ANY16))

Applicare il primo elemento della DUT definita dall’utente, ovvero il numero di valori xy, a questo ingresso. Vedere di seguito la descrizione della struttura della DUT.

Uscita

d_y

Risultato

  • Su tipi di PLC a 16 bit: (INT, DINT, REAL)

  • Su tipi di PLC a 32 bit: (INT, DINT, UINT, UDINT, REAL, LREAL)

Note

Esempi di applicazione:

  • Linearizzazione di valori misurati, p.es. con sensori non lineari

  • Restituzione dell’andamento temperatura di un radiatore y in relazione alla temperatura esterna x

Flag di errore

sys_bIsOperationErrorHold (passa a TRUE e resta TRUE)
  • se l'area specificata utilizzando il registro indice eccede il limite.

  • se il numero dei punti di riferimento è fuori dall’intervallo di 2–256.

  • se s2_xyData è fuori dall’intervallo.

  • se i valori x dei punti di riferimento non sono in ordine crescente.

sys_bIsOperationErrorNonHold (passa a TRUE per una scansione)
  • se l'area specificata utilizzando il registro indice eccede il limite.

  • se il numero dei punti di riferimento è fuori dall’intervallo di 2–256.

  • se s2_xyData è fuori dall’intervallo.

  • se i valori x dei punti di riferimento non sono in ordine crescente.

Limitazioni del valore di uscita y:

  • Se il valore di ingresso x è inferiore rispetto alla coordinata x del primo punto di riferimento (P1: x< x1), l’uscita y è impostata sulla coordinata y del primo punto di riferimento (uscita y = y1, linea tratteggiata orizzontale nell’angolo superiore sinistro del grafico).

  • Se il valore di ingresso xè maggiore rispetto alla coordinata x dell’ultimo punto di riferimento (P8: x > x8), l’uscita y è impostata sulla coordinata y dell’ultimo punto di riferimento (uscita y = y8, linea tratteggiata orizzontale nell’angolo superiore destro del grafico).

DUT per coppie di valore xy (punti di riferimento P1, P2, ...):

I punti di riferimento (P1, P2, ...) vengono copiati sulla funzione tramite variabile di tipo DUT che contiene il numero di punti di riferimento e le xy coppie di valori (numero; x1, x2, ...; y1, y2; ...).

Struttura della DUT definita dall’utente:

  1. Elemento: numero di punti di riferimento z (INT). Il numero di punti di riferimento (coppie di valori xy) può essere impostato in un punto qualsiasi compreso tra 2 e 100. Nel grafico vengono utilizzati otto punti di riferimento (P1P8).
  2. Elemento: Variabile del tipo di dato ARRAY[1..z] OF INT (su tipi di PLC a 16 bit: INT, DINT, REAL; su tipi di PLC a 32 bit: (INT, DINT, UINT, UDINT, REAL)) o ARRAY[0..z-1] of INT (su tipi di PLC a 16 bit: INT, DINT, REAL; su tipi di PLC a 32 bit: (INT, DINT, UINT, UDINT, REAL)) che contiene i x valori. Qui z rappresenta il marcatore di posizione per il numero di punti di riferimento (vedere voce 1).

  3. Elemento: Variabile del tipo di dato ARRAY[1..z] OF INT (su tipi di PLC a 16 bit: INT, DINT, REAL; su tipi di PLC a 32 bit: (INT, DINT, UINT, UDINT, REAL)) o ARRAY[0..z-1] of INT (su tipi di PLC a 16 bit: INT, DINT, REAL; su tipi di PLC a 32 bit: (INT, DINT, UINT, UDINT, REAL)) che contiene i y valori. Qui z rappresenta il marcatore di posizione per il numero di punti di riferimento (vedere voce 1).

NOTA

FP_SCALE supporta i seguenti tipi di dati:

  • Su tipi di PLC a 16 bit (FP-Sigma, FP-X): INT, DINT, REAL

  • Su tipi di PLC a 32 bit (FP7): INT, DINT, REAL, UINT, UDINT

Argomenti correlati

Istruzioni F corrispondenti: F282_SCAL, F283_DSCAL, F354_FSCAL

Istruzioni di sistema

Finestra ancorabile Istruzioni

Aree di memoria

Tipi di dati

Esempio

DUT

Con un tipo unità dati (DUT) è possibile definire un tipo unità dati composto da altri tipi di dati. Una DUT è definita prima di tutto nel gruppo DUT e poi elaborata come i tipi di dati standard (BOOL, INT, ecc.) nella lista delle variabili globali o nell'intestazione del POU.

Intestazione del POU

Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.

VAR
		bStart: BOOL:=FALSE;
		iInput: INT:=50;
		xy_data: xy_data_dut;
		iScaledOutput: INT:=0;
		@'': @'';
	END_VAR

Corpo del POU

Quando la variabile bStart è impostata su TRUE, la funzione viene eseguita.

Corpo 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

Corpo ST

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

L'ultima revisione: 2022-11-14Feedback su questa paginaPanasonic hotline