ValueScale, scales a value

Home / Knowledge Base / Manualistica / Programmazione IEC 61131-3 / Libreria utilità generale / ValueScale, scales a value

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.

Function
CODESYS: Non disponibile
LogicLab: eLLabUtyLib

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

Ti è stato utile questo articolo ?