__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 |
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: |
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
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' |