LRamp, linear ramp

Home / Knowledge Base / Manualistica / Programmazione IEC 61131-3 / Libreria utilità generale / LRamp, linear ramp

La generazione di una rampa lineare è una integrazione nel tempo di un differenziale di valori, il blocco funzione esegue una rampa lineare sul valore di ingresso. Il valore Out in uscita segue il valore In di ingresso con valori di pendenza definiti. Il valore UPSlope imposta la pendenza in salita mentre DWSlope quella in discesa. Disabilitando il blocco funzione l'uscita si azzera.

I valori di pendenza sono definiti in unità al secondo, ad esempio con UPSlope settato a 1 (1 unità al secondo), ipotizzando uno step di 10 in ingresso, avremo l'uscita che raggiunge il valore in ingresso (10) in 10 secondi.

Function block
CODESYS: Non disponibile
LogicLab: eLLabUtyLib

Enable (BOOL) Abilitazione al blocco funzione.

In (REAL) Valore in ingresso su cui viene effettuata la rampa.

UPSlope (REAL) Valore di pendenza rampa in salita (Unit/Second).

DWSlope (REAL) Valore di pendenza rampa in discesa (Unit/Second).

Enabled (BOOL) Blocco funzione abilitato.

Out (REAL) Valore di rampa in uscita.

Esempi

Come utilizzare gli esempi.
Viene eseguita una rampa sul valore di Set con pendenza di salita di 1 e discesa di 2. Il valore di Set viene impostato a gradino sui valori 0.0 e 10.0 ogni 10 secondi. Come si vede dall'oscillogramma al valore RValue per raggiungere il valore di Set partendo da 0 occorrono 10 secondi, mentre per raggiungere il valore 0 partendo da 10 bastano 5 secondi.

F LRamp, Screnshot oscilloscopio
LogicLab (Ptp114)
PROGRAM ST_LRamp
VAR
    TimeBf : UDINT; (* Time buffer (uS) *)
    Set : REAL; (* Set value *)
    RValue : REAL; (* Ramp value *)
    Ramp : LRamp; (* Ramp FB *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_LRamp"
// *****************************************************************************
// Is managed a ramp over a value that is set from 0 to 10 and vice versa at
// every 10 seconds.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // INITIALIZATION
    // -------------------------------------------------------------------------
    // Configure the ramp slopes.

    IF (SysFirstLoop) THEN
        Ramp.UPSlope:=1.0; //Up slope
        Ramp.DWSlope:=2.0; //Dw slope
    END_IF;

    // -------------------------------------------------------------------------
    // SET VALUE AND RAMP IT
    // -------------------------------------------------------------------------
    // Manage the set value.

    IF ((SysGetSysTime(TRUE)-TimeBf) > 10000000) THEN
        TimeBf:=SysGetSysTime(TRUE); //Time buffer (uS)
        IF (Set = 0.0) THEN Set:=10.0; ELSE Set:=0.0; END_IF;
    END_IF;

    // Execute the ramp on the set value.

    Ramp.In:=Set; //Input value
    Ramp(Enable:=TRUE); //Execute the ramp
    RValue:=Ramp.Out; //Ramp value

// [End of file]

Ti è stato utile questo articolo ?