SysGetSysTime, get system time

  1. Home
  2. Knowledge Base
  3. Manualistica
  4. Programmazione IEC 61131-3
  5. Gestione Data/Ora
  6. SysGetSysTime, get system time

La funzione ritorna il tempo di sistema espresso in μS. E' possibile definire impostando lo stato del parametro Cmd se si vuole avere il tempo di sistema attuale (Cmd:=TRUE) oppure quello memorizzato con la precedente esecuzione della funzione (Cmd:=FALSE).

Function
CODESYS: eCDSS8CoreMng
LogicLab: eLLabS8CoreMng, eLLabXUnified12Lib

Cmd (BOOL) Indica il valore di tempo che deve essere ritornato. Se TRUE viene salvato e ritornato il valore attuale di tempo. Se FALSE viene ritornato il tempo salvato dalla precedente chiamata alla funzione con Cmd:=TRUE.

La funzione ritorna una variabile (UDINT) con il valore di tempo di sistema espresso in microsecondi. Il valore di conteggio parte da 0 e dopo 4294 secondi si resetta.

Esempi

Come utilizzare gli esempi.
Nel seguente esempio viene calcolato il tempo in cui un ingresso digitale rimane attivo.

LogicLab (Ptp116)
VAR
    SetTime : UDINT; (* Input set time (uS) *)
    Pulse : BOOL; (* Pulse flag *)
    DInp : SysGetPhrDI; (* Digital input acquisition *)
    TimeBf : UDINT; (* Time buffer (uS) *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_SysGetSysTime"
// *****************************************************************************
// This program calculates the time in which a digital input remains in the
// active state.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // PROGRAM INIT
    // -------------------------------------------------------------------------
    // Program init.

    IF (SysFirstLoop) THEN
        DInp.Address:=0; //Module address
        DInp.Mode:=DI_MODE#DI_8_LL; //Acquisition mode
        TimeBf:=SysGetSysTime(TRUE); //Time buffer (uS)
    END_IF;

    // -------------------------------------------------------------------------
    // DIGITAL INPUT ACQUISITION
    // -------------------------------------------------------------------------
    // Digital inputs acquisition

    DInp(); //Digital input acquisition

    // -------------------------------------------------------------------------
    // RUNNING CALCULATIONS
    // -------------------------------------------------------------------------
    // Check if input is activated.

    IF (TO_BOOL(DInp.Value AND 16#00000001) <> Pulse) THEN
        Pulse:=TO_BOOL(DInp.Value AND 16#00000001); //Pulse flag

        // On input raising edge a reference time is saved.

        IF (Pulse) THEN TimeBf:=SysGetSysTime(TRUE); END_IF;

        // On input falling edge the time is calculated.

        IF (NOT(Pulse)) THEN
            SetTime:=TO_REAL(SysGetSysTime(TRUE)-TimeBf)/1000000.0;
        END_IF;
    END_IF;

// [End of file]
CODESYS (Ptp163)
LogicLab (Ptp164)

Ti è stato utile questo articolo ?

Ultimo aggiornamento: 31 Luglio 2019