Skip to main content

Opérateur : __VARINFO

L'opérateur est une extension de la norme CEI 61131-3.

L'opérateur donne des informations sur une variable. Vous pouvez enregistrer les informations en tant que structure de données dans une variable de type de données __SYSTEM.VAR_INFO.

Syntaxe dans la déclaration

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

Syntaxe des appels

<name of the info variable> := __VARINFO( <variable name> ); // Call of the operator
Exemple 153. Exemple
FUNCTION_BLOCK FB_Velocity
VAR_INPUT
        rVelocity: REAL := 1.2;
END_VAR
VAR_OUTPUT
END_VAR
VAR
        infoVelocity: __SYSTEM.VAR_INFO; //Info of Velocity
END_VAR

infoVelocity := __VARINFO(rVelocity); // Gets the info of Velocity locally
PROGRAM PLC_PRG
VAR
        iCounter : INT := 0; // Counts the calls
        infoCounter : __SYSTEM.VAR_INFO; //Info of Counter
        arrA : ARRAY [1..2, 1..2, 1..2] OF INT := [0, 1, 2, 3, 4, 5, 6, 7]; // Stores the A data
        infoA : __SYSTEM.VAR_INFO; //Info of A
        fbVel : FB_Velocity;
END_VAR

iCounter := iCounter + 1;
infoCounter := __VARINFO(iCounter);
infoA := __VARINFO(arrA);
fbVel();

le iCounter et arrA les variables sont reconnues dans le code de l'application. Les informations variables sont enregistrées dans le infoCounter et infoA variables. De plus, le FB_Velocity bloc fonction est instancié.



Type de données : __SYSTEM.VAR_INFO

Nom

Type de données

Initialisation

La description

ByteAddress

DWORD

0

Adresse de la variable

Exemple: 16#072E35EC

Remarque : Pour l'accès au bit d'une variable <variable name>.<bit index>, l'adresse de la variable qui contient le bit est donnée.

ByteOffset

DWORD

0

Décalage de l'adresse de la variable (en octets)

Exemple: 13936 octets

Remarque : Si la variable est globale, le décalage est relatif au début de la zone. Si la variable est une variable locale dans une fonction ou une méthode, le décalage est relatif au cadre de pile actuel. Si la variable est une variable locale dans un bloc fonction, le décalage est relatif à l'instance du bloc fonction.

Area

DINT

0

Numéro de zone mémoire Area dans le système d'exécution

Exemple: -1

Signifie que la variable n'est pas globale dans la mémoire, mais relative à une instance ou sur la pile

Remarque : Les zones de mémoire dépendent de l'appareil.

BitNr

INT

0

Nombre de bits (en octets)

Exemple: 16#00FF octets

Remarque : Si la variable est ne pas un type de données entier, alors : BitNr = -1 = 16#FFFF

BitSize

INT

0

Taille mémoire de la variable (en bits)

Exemple: 16 morceaux

BitAddress

UDINT

0

Adresse de bit de la variable

Condition : la variable se trouve dans la zone de mémoire d'entrée I, zone de mémoire de sortie Q, ou zone de mémoire marqueur M. Sinon, la valeur est indéfinie.

TypeClass

TYPE_CLASS

TYPE_BOOL

Classe de type de données de la variable

Exemple: TYPE_INT, TYPE_ARRAY

Remarque : Pour les types de données définis par l'utilisateur ou les instances de bloc fonction, TYPE_USERDEF est sortie en tant que classe de type de données.

TypeName

STRING(79)

‚'

Nom du type de date de la variable comme STRING(79)

Remarque : Pour les types de données définis par l'utilisateur, le nom du bloc fonction ou le nom du DUT est sorti.

Exemple: 'INT', 'ARRAY'

NumElements

UDINT

0

Nombre d'éléments du tableau

Exigence : la variable a le type de données ARRAY.

Exemple: 8

BaseTypeClass

TYPE_CLASS

TYPE_BOOL

Type de données de base élémentaire des éléments du tableau

Exigence : la variable a le type de données ARRAY.

Exemple: TYPE_INT pour arrA : ARRAY [1..2,1..2,1..2] OF INT;

ElemBitSize

UDINT

0

Taille mémoire de l'élément du tableau (en bits)

Exigence : la variable a le type de données ARRAY.

Exemple: 16 bits pour arrA : ARRAY [1..2,1..2,1..2] OF INT;

MemoryArea

MEMORY_AREA

MEM_MEMORY

Informations sur la zone de mémoire

  • MEM_GLOBAL: Zone de mémoire globale

    Exemple : dans Area 0

  • MEM_LOCAL: Zone de mémoire locale

    dans Area -1

  • MEM_MEMORY: Zone de mémoire des marqueurs %M

    Exemple : dans 16#10 dans Area 1

  • MEM_INPUT: Zone de mémoire d'entrée %I

    Exemple : dans 16#04 dans Area 2

  • MEM_OUTPUT: Zone de mémoire de sortie %Q

    Exemple : dans 16#08 dans Area 3

  • MEM_RETAIN: Conserver la zone de mémoire

    Exemple : dans 16#20 dans Area 0

Exemple: MEM_GLOBAL

Remarque : La configuration de la zone mémoire dépend de l'appareil.

Symbol

STRING(39)

‚'

Nom de la variable comme STRING(39)

Exemple: 'iCounter', 'arrA'

Comment

STRING(79)

‚'

Commentaire de la déclaration de variable

Exemple: 'Counts the calls' ou 'Stores the A data'