VarVCheck, variable value check

List

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

Questa funzione esegue il controllo sul valore di una variabile, in VarAdd occorre indicare l’indirizzo della variabile da controllare, in VarType il tipo di variabile ed in Mode il controllo da eseguire.

Information Circle

Funzione

CODESYS: Non disponibile

LogicLab: eLLabCommonLib

Descrizione

VarAdd (PVOID) Indirizzo variabile da controllare.
VarType (VR_TYPE) Tipo variabile da stampare (Definizione).
Mode (VAR_CHECK) Tipo di controllo da eseguire (Definizione).

La funzione ritorna (BOOL), FALSE se il controllo è negativo, TRUE se il controllo è positivo.

Immagine F VarVCheck

Esempi

Come utilizzare gli esempi.
Nell’esempio sono riportati alcuni controlli su diversi tipi di variabili.

LogicLab (Ptp201, ST_VarVCheck)
PROGRAM ST_VarVCheck
VAR
    i : BOOL; (* Auxiliary variable *)
    SData : SINT; (* SINTdata example *)
    SDataChk : ARRAY[0..3] OF BOOL; (* SINT data check *)
    DData : DINT; (* DINT data example *)
    DDataChk : ARRAY[0..3] OF BOOL; (* DINT data check *)
    RData : REAL; (* REAL data example *)
    RDataChk : ARRAY[0..5] OF BOOL; (* REAL data check *)
    LRData : LREAL; (* LREAL data example *)
    LRDataChk : ARRAY[0..5] OF BOOL; (* LREAL data check *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_VarVCheck"
// *****************************************************************************
// This program shows the use of VarVCheck function.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // CHECK VARIABLES
    // -------------------------------------------------------------------------
    // SINT data check.

    SData:=-10; //SINT data example
    SDataChk[0]:=VarVCheck(ADR(SData), VR_TYPE#SINT_TYPE, VAR_CHECK#VCK_NORMAL); //Return TRUE
    SDataChk[1]:=VarVCheck(ADR(SData), VR_TYPE#SINT_TYPE, VAR_CHECK#VCK_ZERO); //Return FALSE
    SDataChk[2]:=VarVCheck(ADR(SData), VR_TYPE#SINT_TYPE, VAR_CHECK#VCK_POSITIVE); //Return FALSE
    SDataChk[3]:=VarVCheck(ADR(SData), VR_TYPE#SINT_TYPE, VAR_CHECK#VCK_NEGATIVE); //Return TRUE

    // DINT data check.

    DData:=12345678; //DINT data example
    DDataChk[0]:=VarVCheck(ADR(DData), VR_TYPE#DINT_TYPE, VAR_CHECK#VCK_NORMAL); //Return TRUE
    DDataChk[1]:=VarVCheck(ADR(DData), VR_TYPE#DINT_TYPE, VAR_CHECK#VCK_ZERO); //Return FALSE
    DDataChk[2]:=VarVCheck(ADR(DData), VR_TYPE#DINT_TYPE, VAR_CHECK#VCK_POSITIVE); //Return TRUE
    DDataChk[3]:=VarVCheck(ADR(DData), VR_TYPE#DINT_TYPE, VAR_CHECK#VCK_NEGATIVE); //Return FALSE

    // REAL data check.

    RData:=-120.5; //REAL data example
    RDataChk[0]:=VarVCheck(ADR(RData), VR_TYPE#REAL_TYPE, VAR_CHECK#VCK_NORMAL); //Return TRUE
    RDataChk[1]:=VarVCheck(ADR(RData), VR_TYPE#REAL_TYPE, VAR_CHECK#VCK_ZERO); //Return FALSE
    RDataChk[2]:=VarVCheck(ADR(RData), VR_TYPE#REAL_TYPE, VAR_CHECK#VCK_POSITIVE); //Return FALSE
    RDataChk[3]:=VarVCheck(ADR(RData), VR_TYPE#REAL_TYPE, VAR_CHECK#VCK_NEGATIVE); //Return TRUE
    RDataChk[4]:=VarVCheck(ADR(RData), VR_TYPE#REAL_TYPE, VAR_CHECK#VCK_NAN); //Return FALSE
    RDataChk[5]:=VarVCheck(ADR(RData), VR_TYPE#REAL_TYPE, VAR_CHECK#VCK_INFINITE); //Return FALSE

    // LREAL data check.

    LRData:=LREAL#-120.5; //LREAL data example
    LRDataChk[0]:=VarVCheck(ADR(LRData), VR_TYPE#LREAL_TYPE, VAR_CHECK#VCK_NORMAL); //Return TRUE
    LRDataChk[1]:=VarVCheck(ADR(LRData), VR_TYPE#LREAL_TYPE, VAR_CHECK#VCK_ZERO); //Return FALSE
    LRDataChk[2]:=VarVCheck(ADR(LRData), VR_TYPE#LREAL_TYPE, VAR_CHECK#VCK_POSITIVE); //Return FALSE
    LRDataChk[3]:=VarVCheck(ADR(LRData), VR_TYPE#LREAL_TYPE, VAR_CHECK#VCK_NEGATIVE); //Return TRUE
    LRDataChk[4]:=VarVCheck(ADR(LRData), VR_TYPE#LREAL_TYPE, VAR_CHECK#VCK_NAN); //Return FALSE
    LRDataChk[5]:=VarVCheck(ADR(LRData), VR_TYPE#LREAL_TYPE, VAR_CHECK#VCK_INFINITE); //Return FALSE

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