Interpolazione lineare di valori REAL discreti
Questa funzione esegue la scalatura (linearizzazione) di una tabella di dati numero reale e restituisce l'uscita (Y) per un valore di ingresso (X).
Ingresso
Valore di ingresso X
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
Valore di uscita Y
Anziché utilizzare questa istruzione F, si consiglia di utilizzare l'istruzione FP7 corrispondente: FP_SCALE Eseguire l’interpolazione lineare di valori discreti
Per una descrizione dettagliata, vedere le istruzioni: F282_SCAL Interpolazione lineare di valori INT discreti e F283_DSCAL Interpolazione lineare di valori DINT discreti.
se l'indirizzo specificato utilizzando il registro indice eccede un limite.
se un valore numero non reale viene immesso in 'x'.
se il numero di valori (primo elemento della DUT) < 2 o > 99.
se un valore numero non reale viene specificato per essere il valore numerico reale (xt, yt) specificato in 'xy_data'.
se la tabella lineare di 'xy_data' non viene registrata nell'ordine crescente della sequenza x.
se la tabella lineare di 'xy_data' eccede l'area.
se un overflow (l'operazione è impossibile) si verifica durante l'operazione di scalatura.
se l'indirizzo specificato utilizzando il registro indice eccede un limite.
se un valore numero non reale viene immesso in 'x'.
se il numero di valori (primo elemento della DUT) < 2 o > 99.
se un valore numero non reale viene specificato per essere il valore numerico reale (xt, yt) specificato in 'xy_data'.
se la tabella lineare di 'xy_data' non viene registrata nell'ordine crescente della sequenza x.
se la tabella lineare di 'xy_data' eccede l'area.
se un overflow (l'operazione è impossibile) si verifica durante l'operazione di scalatura.
Il tipo unità dati viene creato nel pool DUT.
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
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
Quando la variabile CalculateY è impostata su TRUE, la funzione viene eseguita.
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
IF start then
F354_FSCAL(x := X_value, xy_data := XY_values.Number, y => Y_value);
END_IF;