Funzioni gestione tempo di sistema

List

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

Il sistema operativo gestisce un contatore di tempo che si autoincrementa dalla accensione del sistema, raggiunto il suo valore massimo (In base al tipo di ritorno desiderato) il valore riparte da 0. Esistono diverse funzioni in base al tipo di ritorno desiderato.

SysTimeGetMs, returns system time in mS

La funzione ritorna il tempo di sistema espresso in mS su una variabile a 32 bits, il valore massimo ritornato è 4.294.967.295 mS (49d 17h 02m 47s 295ms). Il valore di ritorno si autoincrementa ad ogni mS, raggiunto il massimo valore positivo riparte da 0.

Information Circle

Funzione

CODESYS: Non disponibile

LogicLab: eLLabXUnified12Lib

Descrizione

La funzione ritorna una variabile (UDINT) con il valore di tempo di sistema espresso in mS.

Immagine F_SysTimeGetMs

SysTimeGetUs, returns system time in uS

La funzione ritorna il tempo di sistema espresso in uS su una variabile a 32 bits, il valore massimo ritornato è 4.294.967.295 uS (01h 11m 34s 967ms 295us). Il valore di ritorno si autoincrementa ad ogni uS, raggiunto il massimo valore positivo riparte da 0.

Information Circle

Funzione

CODESYS: Non disponibile

LogicLab: eLLabXUnified12Lib

Descrizione

La funzione ritorna una variabile (UDINT) con il valore di tempo di sistema espresso in uS.

Immagine F_SysTimeGetUs

SysTimeGetNs, returns system time in nS

La funzione ritorna il tempo di sistema espresso in nS su una variabile a 64 bits, il valore massimo ritornato 18.446.744.073.709.551.615 ns (5.124.095 ore, 213.503 giorni). Il valore di ritorno si autoincrementa ad ogni nS, raggiunto il massimo valore positivo riparte da 0.

Information Circle

Funzione

CODESYS: Non disponibile

LogicLab: eLLabXUnified12Lib

Descrizione

La funzione ritorna una variabile (ULINT) con il valore di tempo di sistema espresso in nS.

Immagine F_SysTimeGetNs

Esempi

Come utilizzare gli esempi.
Nell’esempio viene gestito il lampeggio di una variabile BOOL e successivamente viene calcolato il tempo in cui la variabile rimane attiva.

LogicLab (Ptp116, ST_TimeFunctions)
PROGRAM ST_TimeFunctions
VAR
    BOut : BOOL; (* Blink output *)
    Pulse : BOOL; (* Pulse flag *)
    BTime : TIME; (* System time (mS) *)
    ATime : TIME; (* Variable active time *)
    TimeBf : ARRAY[0..1] OF UDINT; (* Time bufer (mS) *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_TimeFunctions"
// *****************************************************************************
// Use of time functions.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // TIME OPERATIONS
    // -------------------------------------------------------------------------
    // The "SysTimeGetMs" function returns the a value in the range
    // From 0 to 49d 17h 02m 47s 295ms

    // After conversion in TIME the range will be
    // From -24d 20h 31m 23s 648ms to 24d 20h 31m 23s 647ms

    BTime:=TO_TIME(SysTimeGetMs()); //System time (mS)

    // -------------------------------------------------------------------------
    // BLINKING A VARIABLE
    // -------------------------------------------------------------------------
    // Blinking a variable with defined On/Off time.

    IF ((SysTimeGetMs()-TimeBf[0]) >= TO_UDINT(T#1s500ms)) THEN
        TimeBf[0]:=SysTimeGetMs(); //Time bufer (mS)
        BOut:=NOT(BOut); //Blink output
    END_IF;

    // -------------------------------------------------------------------------
    // CALCULATE ACTIVATION TIME
    // -------------------------------------------------------------------------
    // Calculate the time during with the variable is active.

    IF (BOut <> Pulse) THEN
        IF NOT(BOut) THEN
            ATime:=TO_TIME(SysTimeGetMs()-TimeBf[1]); //Variable active time
        END_IF;

        TimeBf[1]:=SysTimeGetMs(); //Time bufer (mS)
        Pulse:=BOut; //Pulse flag
    END_IF;

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