LRamp, linear ramp

List

Questa pagina fa parte del Manuale Programmazione IEC 61131-3. Vai all indice.

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.

Information Circle

Blocco funzione

CODESYS: Non disponibile

LogicLab: eLLabUtyLib

Descrizione

Enable (BOOL) Abilitazione al blocco funzione. Disabilitandolo il valore in uscita si azzera.
In (REAL) Valore in ingresso su cui viene effettuata la rampa.
UPSlope (REAL) Valore di pendenza rampa in salita (Unit/Second). Modificando il valore anche durante la rampa si modifica la pendenza.
DWSlope (REAL) Valore di pendenza rampa in discesa (Unit/Second). Modificando il valore anche durante la rampa si modifica la pendenza.
Enabled (BOOL) Blocco funzione abilitato.
Out (REAL) Valore di rampa in uscita.

Immagine FB LRamp

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 visualizzando il valore di In e di Out con la funzione Oscilloscope (Ctrl+K) di LogicLab 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, ST_LRamp)
PROGRAM ST_LRamp
VAR
    Set : REAL; (* Set value *)
    RValue : REAL; (* Ramp value *)
    TimeBf : UDINT; (* Time buffer (mS) *)
    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 ((SysTimeGetMs()-TimeBf) > TO_UDINT(T#10s)) THEN
        TimeBf:=SysTimeGetMs(); //Time buffer (mS)
        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]
Was this article helpful?