Questa funzione esegue la messa in scala di un valore. E’ possibile definire il limite minimo e massimo del valore in ingresso da scalare (ILow, IHigh) ed il valore minimo e massimo del valore in uscita scalato (OLow, OHigh).
L’utilizzo di questa funzione è particolarmente indicato per convertire valori acquisiti da sensori in corrente (4-20 mA) nella corrispondente unità di misura rilevata dal trasduttore.
Descrizione
Input (REAL) Valore in ingresso da scalare.
ILow (REAL) Limite minimo del valore in ingresso da scalare.
IHigh (REAL) Limite massimo del valore in ingresso da scalare.
OLow (REAL) Limite minimo del valore in uscita scalato.
OHigh (REAL) Limite massimo del valore in uscita scalato.
La funzione ritorna un REAL che rappresenta il valore in Input opportunamente scalato.
Esempi
Come utilizzare gli esempi.
Viene eseguita una acquisizione analogica di un sensore di temperatura Pt100 connesso ad un convertitore con uscita in corrente 4-20 mA (Come questo), il convertitore ha come valore in uscita la corrente di 4 mA a -30 °C e la corrente di 20 mA a 60°C. Utilizzando la funzione si esegue direttamente la conversione in gradi centigradi del valore acquisito.
LogicLab (Ptp114, ST_ValueScale)
PROGRAM ST_ValueScale
VAR
AInp : SysGetAnInp; (* Analog input acquisition *)
Temperature : REAL; (* Temperature (°C) *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_ValueScale"
// *****************************************************************************
// Acquires temperature from a Pt100 transducer connected to a temperature to
// 4-20 mA current converter.
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// INITIALIZATION
// -------------------------------------------------------------------------
// Configure the analog input acquisition.
IF (SysFirstLoop) THEN
AInp.Address:=0; //Module address
AInp.Channel:=0; //Module channel
AInp.Mode:=AD_CURR_0_20_COMMON; //Acquisition mode
END_IF;
// -------------------------------------------------------------------------
// TEMPERATURE ACQUISITION
// -------------------------------------------------------------------------
// The output is from 0 to 20 mA, the measure range is from -30 to 60°C.
AInp(); //Analog input acquisition
Temperature:=ValueScale(AInp.Value, 4.0, 20.0, -30.0, 60.0);
// [End of file]