F354_FSCAL

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).

Parametri

Ingresso

x (REAL)

Valore di ingresso X

xy_data (DUT definita dall’utente)

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

y (REAL)

Valore di uscita Y

Note

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.

Flag di errore

sys_bIsOperationErrorHold (passa a TRUE e resta TRUE)
  • 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.

sys_bIsOperationErrorNonHold (passa a TRUE per una scansione)
  • 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.

Esempio

DUT

Il tipo unità dati viene creato nel pool DUT.

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
		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

Corpo del POU

Quando la variabile CalculateY è 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 := 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

Corpo ST

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

L'ultima revisione: 2021-07-05Feedback su questa paginaPanasonic hotline