DOMANDA:
Come vengono depositate le variabili nei dati locali temporanei?
RISPOSTA:
L'indirizzamento dello stack L comincia sempre con l'Indirizzo
"0
Per ogni blocco vengono riservati byte nello stack L, in un
numero che corrisponde esattamente al numero di dati statici o
locali che esso possiede.
Quando un blocco viene concluso, allora il suo campo viene nuovamente
reso disponibile.
Il puntatore indica sempre il primo byte del blocco attualmente
aperto.
Un esempio:
| Livello di esecuzione
| L-Stack in byte | Pointer
|
| Richiamo OB1 (con 20 dati locali statici [fissi] e 10 ulteriori)
|
30 |
0 |
| Richiamo FC1 (con 30 dati locali)
30 byte (OB1) +30 byte (FC1)
|
60 |
30 |
| Richiamo FC10 (con 20 dati locali)
60 byte (OB1 + FC1) +20 byte FC10
|
80 |
60 |
| Richiamo FC11 (con 20 dati locali)
60 byte (OB1 + FC1) +20 byte FC11
|
80 |
60 |
| Richiamo FC12 (con 30 dati locali)
60 byte (OB1 + FC1) +30 byte FC12
|
90 |
60 |
| Richiamo FC2 (con 50 dati locali)
30 byte (OB1) +50 byte (FC2)
|
80 |
30 |
| Richiamo FC20 (con 10 dati locali)
80 byte (OB1 + FC2) +10 byte FC20
|
90 |
80 |
| Richiamo FC21 (con 10 dati locali)
80 byte (OB1 + FC2) +10 byte FC21
|
90 |
80 |
| Richiamo FC22 (con 20 dati locali)
80 byte (OB1 + FC2) +20 byte FC22
|
100 |
80 |
| Richiamo FC221 (con 10 dati locali)
100 byte (OB1 + FC2 + FC22) + 10 byte FC221
|
110 |
80 |
Lo stack L viene utilizzato dalla CPU per elaborazioni interne.
L'editor AWL stesso utilizza anche dati locali come p.e. per il
trasferimento di parametri in caso di richiamo di un blocco.
Non modificare il contenuto dello stack L!
Avvertenza:
per ogni livello di elaborazione di programma (livello di
esecuzione) sono previsti 256 byte per ogni classe di priorità.
- per S7-300 fissi
- per S7-400 standard, impostabili sotto "Caratteristiche
CPU " Configurazione hardware.
|