SysGetSysTime, get system time

  1. Home
  2. Knowledge Base
  3. Manualistica
  4. Programmazione IEC 61131-3
  5. Funzioni ed FB
  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

eCDSS8CoreMng, eLLabS8CoreMng

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.

CODESYS (Ptp163)
VAR
    S8Core : SysCoreManager; (* System core manager *)
    DInp : DWORD; (* Digital input value *)
    DOut : DWORD; (* Digital output value *)
    TimeBf : UDINT; (* Time buffer (uS) *)
    Pulse : BOOL; (* Pulse flag *)
    SetTime : REAL; (* Set time (S) *)
END_VAR

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

    // -------------------------------------------------------------------------
    // CORE MANAGEMENT
    // -------------------------------------------------------------------------
    // Manage the S8Core.

    S8Core(Enable:=TRUE, PConsole:=10000, HWDogTm:=0, pI2CManager:=ADR(I2C_master));
    IF NOT(S8Core.Ready) THEN RETURN; END_IF;

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

    IF (S8Core.Init) THEN
        TimeBf:=SysGetSysTime(TRUE); //Time buffer (uS)
    END_IF;

    // -------------------------------------------------------------------------
    // DIGITAL I/O MODULE MANAGING
    // -------------------------------------------------------------------------
    // Managing the digital I/O module.

    SysDIOModule(0, ADR(DInp), ADR(DOut)); //Module "0"

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

    IF (DInp.0 <> Pulse) THEN
        Pulse:=DInp.0; //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]
LogicLab (Ptp164)

Ti è stato utile questo articolo ?