Vai al contenuto

SysPhrVRd, read variable from peripheral module

Vai all indice del manuale di programmazione
Tipo: Funzione
Libreria LogicLab: eLLabXUnified12Lib
Libreria Codesys: eCDSXUnified12Lib

La funzione esegue la lettura di una variabile dal modulo periferico di estensione. Occorre definire l’indirizzo di modulo Module, l’indirizzo della variabile da leggere RdAdd, il tipo di variabile VarType e l’indirizzo del buffer dove trasferire il valore letto VarAdd.

Descrizione

Module (USINT) Occorre specificare l’indirizzo di modulo in cui gestire le uscite digitali (Range da 0 a 15). Il valore 0 indica il primo modulo di estensione, 1 il secondo e così di seguito.
RdAdd (UINT) Indirizzo variabile da leggere dal modulo periferico (Vedere documentazione del modulo).
VarType (VR_TYPE) Tipo variabile da leggere dal modulo periferico (Vedere documentazione del modulo).
VarAdd (PVOID) Puntatore a buffer di memoria dove trasferire valore letto.

La funzione ritorna una variabile (BOOL), FALSE se errore esecuzione, TRUE se funzione eseguita correttamente.

Immagine F_SysPhrVRd

Esempi

Come utilizzare gli esempi.
Ogni secondo viene eseguita la lettura di una variabile REAL all’indirizzo 10 del modulo di estensione 0, il valore letto è trasferito nella variabile Value.

LogicLab (Ptp116, ST_SysPhrVRd)
PROGRAM ST_SysPhrVRd
VAR
    Result : BOOL; (* Function execution result *)
    TimeBf : UDINT; (* Time buffer (mS) *)
    Value : REAL; (* Value read *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_SysPhrVRd"
// *****************************************************************************
// This program every second reads a REAL variable from extension module 0 at
// address 10.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // VARIABLE READ
    // -------------------------------------------------------------------------
    // Check if a second is passed and read variable.

    IF ((SysTimeGetMs()-TimeBf) > TO_UDINT(T#1s)) THEN
        TimeBf:=SysTimeGetMs(); //Time buffer (mS)
        Result:=SysPhrVRd(0, 10, REAL_TYPE, ADR(Value));
    END_IF;

// [End of file]
Structured Text (IEC 61131-3)
CODESYS (Ptp161, ST_SysPhrVRd)
PROGRAM ST_SysPhrVRd
VAR
    Result : BOOL; //Function execution result
    TimeBf : UDINT; //Time buffer (uS)
    Value : REAL; //Value read
END_VAR

// *****************************************************************************
// PROGRAM "ST_SysPhrVRd"
// *****************************************************************************
// This program every second reads a REAL variable from extension module 0 at
// address 10.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // VARIABLE READ
    // -------------------------------------------------------------------------
    // Check if a second is passed and read variable.

    IF ((SysGetSysTime(TRUE)-TimeBf) > 1000000) THEN
        TimeBf:=SysGetSysTime(TRUE); //Time buffer (uS)
        Result:=SysPhrVRd(0, 10, VR_TYPE.REAL_TYPE, ADR(Value));
    END_IF;

// [End of file]
Structured Text (IEC 61131-3)
Was this article helpful?