__VARINFO

Der Operator ist eine Erweiterung der Norm IEC 61131-3. Der Operator liefert Informationen zu einer Variablen zurück. Sie können die Informationen als Datenstruktur in einer Variablen des Datentyps __SYSTEM.VAR_INFO speichern.

Syntax in der Deklaration:

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

Syntax beim Aufruf:

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

Beispiel:

Zur Laufzeit enthält die Variable MyVarInfo die Informationen über die Variable nVar.

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

Datentyp SYSTEM.VAR_INFO

Eine Variable mit Datentyp __SYSTEM.VAR_INFO enthält:

Name

Datentyp

Initialisierung

Beschreibung

ByteAddress

DWORD

0

Adresse der Variablen

Beispiel: 16#072E35EC

Hinweis: Beim Bitzugriff einer Variablen <variable name>.<bit index> wird die Adresse der Variablen angegeben, die das Bit enthält.

ByteOffset

DWORD

0

Offset der Variablenadresse in Bytes.

Beispiel: 13936 Bytes.

Hinweis: Wenn die Variable global ist, dann ist der Offset relativ zum Beginn der Area. Wenn die Variable eine lokale Variable in einer Funktion oder Methode ist, dann ist der Offset relativ zum aktuellen Stack-Frame. Wenn die Variable eine lokale Variable in einem Funktionsbaustein ist, dann ist der Offset relativ zur Funktionsbaustein-Instanz.

Area

DINT

0

Speicherbereichsnummer Area im Laufzeitsystem.

Beispiel: -1. Bedeutet, dass die Variable nicht global im Speicher liegt, sondern relativ zu einer Instanz oder auf dem Stack.

Hinweis: Die Speicherbereiche sind geräteabhängig.

BitNr

INT

0

Anzahl der Bits in Bytes

Beispiel: 16#00FF Bytes

Hinweis: Wenn die Variable kein ganzzahliger Datentyp ist, gilt: BitNr = -1 = 16#FFFF

BitSize

INT

0

Speicherplatzgröße der Variablen in Bits

Beispiel: 16 Bits

BitAddress

UDINT

0

Bitadresse der Variablen

Voraussetzung: Die Variable liegt im Eingangsspeicherbereich I, Ausgangsspeicherbereich Q oder Merkerspeicherbereich M. Ansonsten ist der Wert undefiniert.

TypeClass

TYPE_CLASS

TYPE_BOOL

Datentypklasse der Variablen

Beispiel: TYPE_INT, TYPE_ARRAY

Hinweis: Bei benutzerdefinierten Datentypen oder Funktionsbaustein-Instanzen wird als Datantypklasse TYPE_USERDEF ausgegeben.

TypeName

STRING(79)

‘’

Datentypname der Variablen als STRING(79)

Hinweis: Bei benutzerdefinierten Datentypen ist der Funktionsbausteinname oder der DUT-Name angegeben.

Beispiel: 'INT', 'ARRAY'

NumElements

UDINT

0

Anzahl der Arrayelemente

Voraussetzung: Die Variable hat den Datentyp ARRAY.

Beispiel: 8

BaseTypeClass

TYPE_CLASS

TYPE_BOOL

Elementarer Basisdatentyp der Arrayelemente.

Voraussetzung: Die Variable hat den Datentyp ARRAY.

Beispiel: TYPE_INT bei arrA : ARRAY [1..2,1..2,1..2] OF INT;

ElemBitSize

UDINT

0

Speicherplatzgröße des Arrayelements in Bits

Voraussetzung: Die Variable hat den Datentyp ARRAY.

Beispiel: 16 Bits bei arrA : ARRAY [1..2,1..2,1..2] OF INT;

MemoryArea

MEMORY_AREA

MEM_MEMORY

Information zum Speicherbereich

  • MEM_GLOBAL: Globaler Speicherbereich
    Beispielsweise in Area 0
  • MEM_LOCAL: Lokaler Speicherbereich
    in Area -1
  • MEM_MEMORY: Merkerspeicherbereich %M
    Beispielsweise in 16#10 in Area 1
  • MEM_INPUT: Eingangsspeicherbereich %I
    Beispielsweise in 16#04 in Area 2
  • MEM_OUTPUT: Ausgangsspeicherbereich %Q
    Beispielsweise in 16#08 in Area 3
  • MEM_RETAIN: Retain-Speicherbereich
    Beispielsweise in 16#20 in Area 0

Beispiel: MEM_GLOBAL

Symbol

STRING(39)

‘’

Variablenname als STRING(39)

Beispiel : 'iCounter', 'arrA'

Comment

STRING(79)

‘’

Kommentar der Variablendeklaration

Beispiel: 'Counts the calls' oder 'Stores the A data'