FRAGE:
Wie werden die Variablen in den temporären Lokaldaten abgelegt?
ANTWORT:
Die L-Stack Adressierung beginnt immer bei Adresse "0
Für jeden Baustein werden auf dem L-Stack Bytes reserviert,
genau so viel, wie dieser an statischen bzw. Lokaldaten besitzt.
Wird ein Baustein beendet, so wird dessen Bereich wieder freigegeben.
Der Pointer zeigt immer auf das 1.Byte des aktuell geöffneten
Bausteins.
Hier ein Beispiel:
| Ablaufebene
| L-Stack in Byte | Pointer
|
| Aufruf OB1 (mit 20 statischen [fest] und 10 zusätzlichen Lokaldaten)
|
30 |
0 |
| Aufruf FC1 (mit 30 Lokaldaten)
30 Bytes (OB1) +30 Bytes (FC1)
|
60 |
30 |
| Aufruf FC10 (mit 20 Lokaldaten)
60 Bytes (OB1 + FC1) +20 Bytes FC10
|
80 |
60 |
| Aufruf FC11 (mit 20 Lokaldaten)
60 Bytes (OB1 + FC1) +20 Bytes FC11
|
80 |
60 |
| Aufruf FC12 (mit 30 Lokaldaten)
60 Bytes (OB1 + FC1) +30 Bytes FC12
|
90 |
60 |
| Aufruf FC2 (mit 50 Lokaldaten)
30 Bytes (OB1) +50 Bytes (FC2)
|
80 |
30 |
| Aufruf FC20 (mit 10 Lokaldaten)
80 Bytes (OB1 + FC2) +10 Bytes FC20
|
90 |
80 |
| Aufruf FC21 (mit 10 Lokaldaten)
80 Bytes (OB1 + FC2) +10 Bytes FC21
|
90 |
80 |
| Aufruf FC22 (mit 20 Lokaldaten)
80 Bytes (OB1 + FC2) +20 Bytes FC22
|
100 |
80 |
| Aufruf FC221 (mit 10 Lokaldaten)
100 Bytes (OB1 + FC2 + FC22) + 10 Bytes FC221
|
110 |
80 |
Von der CPU wird der L-Stack für interne Bearbeitungen benutzt.
Der AWL Editor selbst verwendet auch Lokaldaten, z.B. bei der
Parameterübergabe bei einem Bausteinaufruf.
Verändern Sie deshalb den Inhalt des L-Stacks nicht!
Hinweis:
Pro Programmbearbeitungsebene (Ablaufebene) sind 256 Byte
je Prioritätsklasse vorgesehen.
- bei S7-300 fest
- bei S7-400 standardmäßig, einstellbar unter "CPU-Eigenschaften
Hardware-Konfiguration
|