Vai al contenuto
Vai all indice del manuale di programmazione
Tipo: Funzione
Libreria LogicLab: eLLabUtyLib
Libreria Codesys: Non disponibile

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.

Immagine F ValueScale

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]
Was this article helpful?