Skip to main content

Operatore: __VARINFO

L'operatore è un'estensione della norma IEC 61131-3.

L'operatore fornisce informazioni su una variabile. È possibile salvare le informazioni come struttura dati in una variabile di tipo dati __SYSTEM.VAR_INFO.

Sintassi nella dichiarazione

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

Sintassi per le chiamate

<name of the info variable> := __VARINFO( <variable name> ); // Call of the operator
Esempio 153. Esempio
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();

Il iCounter e arrA le variabili vengono riconosciute nel codice dell'applicazione. Le informazioni sulla variabile vengono salvate nel file infoCounter e infoA variabili. Inoltre, il FB_Velocity viene istanziato il blocco funzione.



Tipo di dati: __SYSTEM.VAR_INFO

Nome

Tipo di dati

Inizializzazione

Descrizione

ByteAddress

DWORD

0

Indirizzo della variabile

Esempio: 16#072E35EC

Nota: per l'accesso a bit di una variabile <variable name>.<bit index>, viene fornito l'indirizzo della variabile che contiene il bit.

ByteOffset

DWORD

0

Offset dell'indirizzo della variabile (in byte)

Esempio: 13936 byte

Nota: se la variabile è globale, l'offset è relativo all'inizio dell'area. Se la variabile è una variabile locale in una funzione o in un metodo, l'offset è relativo allo stack frame corrente. Se la variabile è una variabile locale in un blocco funzione, l'offset è relativo all'istanza del blocco funzione.

Area

DINT

0

Numero dell'area di memoria Area nel sistema di runtime

Esempio: -1

Significa che la variabile non è globale nella memoria, ma relativa a un'istanza o nello stack

Nota: le aree di memoria dipendono dal dispositivo.

BitNr

INT

0

Numero di bit (in byte)

Esempio: 16#00FF byte

Nota: se la variabile è non un tipo di dati intero, quindi: BitNr = -1 = 16#FFFF

BitSize

INT

0

Dimensione della memoria della variabile (in bit)

Esempio: 16 bit

BitAddress

UDINT

0

Indirizzo bit della variabile

Presupposto: la variabile si trova nell'area di memoria di ingresso I, area di memoria di uscita Qo area di memoria del marker M. Altrimenti il valore non è definito.

TypeClass

TYPE_CLASS

TYPE_BOOL

Classe del tipo di dati della variabile

Esempio: TYPE_INT, TYPE_ARRAY

Nota: per i tipi di dati definiti dall'utente o le istanze di blocchi funzione, TYPE_USERDEF viene emesso come classe del tipo di dati.

TypeName

STRING(79)

‚'

Tipo di data nome della variabile come STRING(79)

Nota: per i tipi di dati definiti dall'utente, viene emesso il nome del blocco funzione o il nome DUT.

Esempio: 'INT', 'ARRAY'

NumElements

UDINT

0

Numero di elementi dell'array

Requisito: la variabile ha il tipo di dati ARRAY.

Esempio: 8

BaseTypeClass

TYPE_CLASS

TYPE_BOOL

Tipo di dati di base elementare degli elementi dell'array

Requisito: la variabile ha il tipo di dati ARRAY.

Esempio: TYPE_INT per arrA : ARRAY [1..2,1..2,1..2] OF INT;

ElemBitSize

UDINT

0

Dimensione della memoria dell'elemento dell'array (in bit)

Requisito: la variabile ha il tipo di dati ARRAY.

Esempio: 16 bit per arrA : ARRAY [1..2,1..2,1..2] OF INT;

MemoryArea

MEMORY_AREA

MEM_MEMORY

Informazioni sull'area di memoria

  • MEM_GLOBAL: Area di memoria globale

    Esempio: in Area 0

  • MEM_LOCAL: Area di memoria locale

    in Area -1

  • MEM_MEMORY: Area di memoria del marker %M

    Esempio: in 16#10 in Area 1

  • MEM_INPUT: Inserire l'area di memoria %I

    Esempio: in 16#04 in Area 2

  • MEM_OUTPUT: Area di memoria di uscita %Q

    Esempio: in 16#08 in Area 3

  • MEM_RETAIN: Conserva l'area di memoria

    Esempio: in 16#20 in Area 0

Esempio: MEM_GLOBAL

Nota: la configurazione dell'area di memoria dipende dal dispositivo.

Symbol

STRING(39)

‚'

Nome variabile come STRING(39)

Esempio: 'iCounter', 'arrA'

Comment

STRING(79)

‚'

Commento della dichiarazione della variabile

Esempio: 'Counts the calls' o 'Stores the A data'