Das Adressregister - tolle Sache, aber was gibt es zu beachten

Zuviel Werbung?
-> Hier kostenlos registrieren
Um ganz sicher zu gehen habe ich jetzt meinen Temporären Speicher kontrolliert im FC, der endet bei L24.0 und habe dann um meinen Code mit AR2 die Befehle:

Code:
TAR2 LD24

[...]


LAR2 LD24

gebastelt. DAnn bin ich ja auf der sicheren Sete...
 
.
Naja,
auf jeden Fall solltest du dich auch über den Aufbau des L-Stack und den direkten Zugriff darauf informieren. ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich weiß was du meinst ;-)
Sollte so kein Problem darstellen, Fakt ist wenn ich aus Jux und dollerei in diesem FC einen FB mit 32 binären Eingängen in KOP aufrufen, dann würde er ja beim Umstellen auf AWl auch zeigen das er dann auf die Lokaldaten L24.0 bis L27.7 schreibt. Solange ich innerhalb des obig erwähnten TAR2 - LAR2 keine KOP-FUP Anweisungen mit FC/FB aufruf habe klappt es aber.
 
Um ganz sicher zu gehen habe ich jetzt meinen Temporären Speicher kontrolliert im FC, der endet bei L24.0 und habe dann um meinen Code mit AR2 die Befehle:

Code:
TAR2 LD24

[...]


LAR2 LD24

gebastelt. DAnn bin ich ja auf der sicheren Sete...
Du könntest auch einfach in TEMP eine DWORD-Variable AR2Save erstellen, dann wäre das auch sauber.
Code:
TAR2 #AR2Save

[...]

LAR2 #AR2Save

Harald
 
wie er gesagt! warum mach ich mir selber immer das leben schwer jetzt muss ich gleich die Änderung wieder an alle Kollegen schicken :)

EDITH sagt: Siemens is ja doch manchmal schlau, gerade als ich das geändert habt und die Deklarationszeile eingefügt habe meckert er sofort rum, das es im AWL Code ja schon einen Lokaldatenzugriff auf diesen Bereich gibt :)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Zuerst einmal muss man unterscheiden: Die S7 hat zwei Adressregister, sinnigerweise Adressregister 1 (AR1) und Adressregister 2 (AR2) genannt.
AR1 wird vom System nicht verwendet und kann vom Benutzer immer frei verwendet werden, auch in FBs und sogar in Multiinstanzen. Wenn man AR1 verwendet, muss man den Inhalt vorher nicht sichern.
Bei AR2 ist das anders und damit zu Deiner zweiten Frage:

In einem FB steht in AR2 der Versatz, ab welcher Adresse die Daten für den aktuellen Aufruf im IDB stehen. Wenn es sich nicht um einen Multiinstanz-Aufruf handelt und der FB seinen eigenen IDB hat, steht hier also P#0.0. Bei einem Multiinstanz-Aufruf ändert sich das entsprechend.
Bei jedem symbolischen Zugriff auf den IDB (also jeder Zugriff auf IN, OUT INOUT oder STAT) wird das AR2 zur Adresse im Variablendeklarationsteil des Bausteins dazugezählt, auch bei nicht-Multiinstanz-Aufrufen. Wenn man also mit dem AR2 in einem FB arbeitet (was man vermeiden sollte), dann muss man vorher den Inhalt sichern und vor dem nächsten symbolischen Zugriff auf den IDB wieder zurückschreiben, da sonst die Zugriffe verschoben sind.

DasAR1 wird vom System verwendet. siehe Step-7 Hilfe unter dem "Index Register-Inhalt"
 
Zurück
Oben