__VARINFO

The operator is an extension of the IEC 61131-3 standard. The operator returns information about a variable. You can save the information as a data structure in a variable of data type __SYSTEM.VAR_INFO.

Syntax in the declaration:

<name of the info variable> : __SYSTEM.VAR_INFO; // Data structure for info variable

Syntax for the call:

<name of the info variable> := __VARINFO( <variable name> ); // Call of the operator

Sample:

At runtime the variable MyVarInfo contains the information about the variable nVar.

VAR
    MyVarInfo : __SYSTEM.VAR_INFO;
    nVar      : INT;
END_VAR
MyVarInfo := __VARINFO(nVar);

Data type SYSTEM.VAR_INFO

A variable of data type __SYSTEM.VAR_INFO contains:

Name

Data type

Initialization

Description

ByteAddress

DWORD

0

Address of the variables

Sample: 16#072E35EC

Note: During bit access of a variable <variable name>.<bit index>, the address of the variable containing the bit is specified.

ByteOffset

DWORD

0

Offset of the variable address in bytes.

Sample: 13936 bytes.

Note: If the variable is global, the offset is relative to the start of the area. If the variable is a local variable in a function or method, the offset is relative to the current stack frame. If the variable is a local variable in a function block, the offset is relative to the function block instance.

Area

DINT

0

Memory area number in the runtime system.

Sample: -1. This means that the variable is not stored globally in memory, but relative to an instance or on the stack.

Note: The memory areas are device-dependent.

BitNo

INT

0

Number of bits in bytes

Sample: 16#00FF bytes

Note: If the variable is not an integer data type: BitNo = -1 = 16#FFFF

BitSize

INT

0

Memory size of the variables in bits

Sample: 16 bits

BitAddress

UDINT

0

Bit address of the variables

Requirement: The variable is in input memory area I, output memory area Q or flag memory area M. Otherwise the value is undefined.

TypeClass

TYPE_CLASS

TYPE_BOOL

Data type class of the variables

Sample: TYPE_INT, TYPE_ARRAY

Note: For user-defined data types or function block instances, the system outputs the data type class TYPE_USERDEF.

TypeName

STRING(79)

‘’

Data type name of the variable as STRING(79)

Note: For user-defined data types, the function block name or DUT name is specified.

Sample: 'INT', 'ARRAY'

NumElements

UDINT

0

Number of array elements

Requirement: The variable has the data type ARRAY.

Sample: 8

BaseTypeClass

TYPE_CLASS

TYPE_BOOL

Elementary basic data type of the array elements.

Requirement: The variable has the data type ARRAY.

Sample: TYPE_INT with arrA : ARRAY [1..2,1..2,1..2] OF INT;

ElemBitSize

UDINT

0

Memory size of the array element in bits

Requirement: The variable has the data type ARRAY.

Sample: 16 bits at arrA : ARRAY [1..2,1..2,1..2] OF INT;

MemoryArea

MEMORY_AREA

MEM_MEMORY

Information on the memory area:

  • MEM_GLOBAL: Global memory area
    For example in area 0
  • MEM_LOCAL: Local memory area
    in Area -1
  • MEM_MEMORY: Flag memory area %M
    For example in 16#10 in area 1
  • MEM_INPUT: Input memory area %I
    For example in 16#04 in area 2
  • MEM_OUTPUT: Output memory area %Q
    For example in 16#08 in area 3
  • MEM_RETAIN: Retain memory area
    For example in 16#20 in area 0

Sample: MEM_GLOBAL

Symbol

STRING(39)

‘’

Variable name as STRING(39)

Sample: 'iCounter', 'arrA'

Comment

STRING(79)

‘’

Comment of the variable declaration

Sample: 'Counts the calls' or 'Stores the A data'