SysPhrVWr, write variable to peripheral module

List

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

La funzione esegue la scrittura di una variabile sul modulo periferico di estensione. Occorre definire l’indirizzo di modulo Module, l’indirizzo della variabile da scrivere WrAdd, il tipo di variabile VarType e l’indirizzo del buffer dove si trova il valore da scrivere VarAdd.

Information Circle

Funzione

CODESYS: eCDSXUnified12Lib

LogicLab: eLLabXUnified12Lib

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.
WrAdd (UINT) Indirizzo variabile da scrivere sul modulo periferico (Vedere documentazione del modulo).
VarType (VR_TYPE) Tipo variabile da scrivere sul modulo periferico (Vedere documentazione del modulo).
VarAdd (@BYTE) Puntatore a buffer di memoria dove si trova il valore da  scrivere.

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

Immagine F_SysPhrVWr

Esempi

Come utilizzare gli esempi.
Ogni secondo viene eseguita la scrittura del valore della variabile Value nella variabile REAL all’indirizzo 10 del modulo di estensione 0.

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

// *****************************************************************************
// PROGRAM "ST_SysPhrVWr"
// *****************************************************************************
// This program every second writes a REAL variable to extension module 0 at
// address 10.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // VARIABLE WRITE
    // -------------------------------------------------------------------------
    // Check if a second is passed and write variable.

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

// [End of file]
CODESYS (Ptp161, ST_SysPhrVWr)
PROGRAM ST_SysPhrVWr
VAR
    Result : BOOL; //Function execution result
    TimeBf : UDINT; //Time buffer (uS)
    Value : REAL; //Value to write
END_VAR

// *****************************************************************************
// PROGRAM "ST_SysPhrVWr"
// *****************************************************************************
// This program every second writes a REAL variable to extension module 0 at
// address 10.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // VARIABLE WRITE
    // -------------------------------------------------------------------------
    // Check if a second is passed and write variable.

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

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