Debouncing, signal debounce

List

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

Qualunque dispositivo elettromeccanico (Pulsante, finecorsa, ecc) è costituito da lamelle che si toccano a dispositivo attivato e si discostano a dispositivo rilasciato. Al momento della attivazione/disattivazione le lamelle non si stabilizzano subito nella posizione voluta ma si ha un fenomeno transitorio di tipo oscillatorio chiamato microrimbalzo. Gl ingressi digitali dei nostri dispositivi hanno già integrata una funzione di debouncing (Circa 5 mS) ma può essere utile in alcuni casi inserire un ulteriore tempo.

In questo FB è possibile definire in OnDelay ed in OffDelay i tempi di attesa stabilizzazione del segnale In in ingresso prima di trasferirne lo stato sul segnale Out in uscita.

Information Circle

Blocco funzione

CODESYS: Non disponibile

LogicLab: eLLabUtyLib

Descrizione

In (BOOL) Segnale su cui eseguire l’antirimbalzo.
OffDelay (REAL) Tempo di attesa (S) su disattivazione segnale in ingresso prima di eseguire disattivazione del segnale in uscita.
OnDelay (REAL) Tempo di attesa (S) su attivazione segnale in ingresso prima di eseguire attivazione del segnale in uscita.
Out (BOOL) Segnale in uscita dopo l’antirimbalzo.

Immagine FB Debouncing

Esempi

Come utilizzare gli esempi.
Attivando da debug la variabile Command, Status si attiverà dopo il tempo definito in OnDelay. Disattivando da debug la variabile Command, Status si disattiverà dopo il tempo definito in OffDelay.

LogicLab (Ptp114, ST_Debouncing)
PROGRAM ST_Debouncing
VAR
    Command : BOOL; (* Command *)
    Status : BOOL; (* Status *)
    Dbc : Debouncing; (* Signal debounce *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_Debouncing"
// *****************************************************************************
// It's managed a debounce of a logic signal.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // INITIALIZATION
    // -------------------------------------------------------------------------
    // Program initializations.

    IF (SysFirstLoop) THEN
        Dbc.OffDelay:=2.0; //Off time delay (S)
        Dbc.OnDelay:=5.0; //On time delay (S)
    END_IF;

    // -------------------------------------------------------------------------
    // LOGIC SIGNAL DEBOUNCE
    // -------------------------------------------------------------------------
    // Logic signal debounce.

    Dbc.In:=Command; //Input command
    Dbc(); //Signal debounce
    Status:=Dbc.Out; //Status

// [End of file]
Was this article helpful?