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
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 |
---|---|---|---|
|
| 0 | Indirizzo della variabile Esempio: Nota: per l'accesso a bit di una variabile |
|
| 0 | Offset dell'indirizzo della variabile (in byte) Esempio: 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. |
|
| 0 | Numero dell'area di memoria Esempio: Significa che la variabile non è globale nella memoria, ma relativa a un'istanza o nello stack Nota: le aree di memoria dipendono dal dispositivo. |
|
| 0 | Numero di bit (in byte) Esempio: Nota: se la variabile è non un tipo di dati intero, quindi: |
|
| 0 | Dimensione della memoria della variabile (in bit) Esempio: |
|
| 0 | Indirizzo bit della variabile Presupposto: la variabile si trova nell'area di memoria di ingresso |
|
|
| Classe del tipo di dati della variabile Esempio: Nota: per i tipi di dati definiti dall'utente o le istanze di blocchi funzione, |
|
| ‚' | Tipo di data nome della variabile come Nota: per i tipi di dati definiti dall'utente, viene emesso il nome del blocco funzione o il nome DUT. Esempio: |
|
| 0 | Numero di elementi dell'array Requisito: la variabile ha il tipo di dati Esempio: |
|
|
| Tipo di dati di base elementare degli elementi dell'array Requisito: la variabile ha il tipo di dati Esempio: |
|
| 0 | Dimensione della memoria dell'elemento dell'array (in bit) Requisito: la variabile ha il tipo di dati Esempio: |
|
|
| Informazioni sull'area di memoria
Esempio: Nota: la configurazione dell'area di memoria dipende dal dispositivo. |
|
| ‚' | Nome variabile come Esempio: |
|
| ‚' | Commento della dichiarazione della variabile Esempio: |