Adressregister

Ralle

Supermoderator
Teammitglied
Beiträge
14.403
Punkte Reaktionen
3.373
Zuviel Werbung?
->Hier kostenlos registrieren
Wann muß man genau die Adressregister sichern und wiederherstellen.
Siemens macht das in seinen Beispielen grundsätzlich, andere eher selten !

Ist es nötig vor indirekten Adressierungen das AR1 zu sichern und danach wieder zu restaurieren ?

Code:
      L     #Pos_Nr
      L     -1
      +I    
      L     4
      *I    
      L     #START_DW
      +I    
      T     #Adr

      L     P#0.0
      L     #Adr
      SLD   3
      +D    
      LAR1  

      L     DBD [AR1,P#0.0]
      T     #Pos

ralle
 

Ralf

Well-known member
Beiträge
194
Punkte Reaktionen
50
Ich sichere grundsätzlich vor Adressregisteroperationen die ARs.
Ich weiß aber nicht genau warum :oops:
 

jogi

Well-known member
Beiträge
81
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hi zusammen,

normalerweise sichere ich AR1 nicht, hab auch noch keine Probs damit gehabt.

AR2 sichere ich jedoch immer vor eigener Verwendung !!

AR2 wird in Multiinstanz-FB's vom System zur Speicherung des Offsets innerhalb der Instanzdaten des aufrufenden FB's benutzt.
Wenn das dann vom Anwenderprogramm überschrieben wird, stimmt der Zugriff auf die Instanzvariablen im Multiinstanz-FB nicht mehr.
(oh weh, was ein Satz!, hoffentlich versteht den wer :oops: )

Gruß Jörg
 

plc_tippser

Well-known member
Beiträge
2.500
Punkte Reaktionen
301
Bei den FB´s wird das AR2 für die Anfangsadresse des FB´s genutzt. Wenn du mit dem arbeiten willst, musst Du es sichern und wiederherstellen (habe ich einmal gemacht und ging daneben).

Beim AR1 habe ich öfter mehrere indirekte Adressen und da ich AR2 nicht benutzen kann, will, biege ich das AR1 desöfteren hin und her.

Wenn ich nur eine indirekte Adresse habe, sichere ich nichts weg und habe auch noch nie Probleme gehabt.

pt
 

KaffeeSaufenderKamin

Well-known member
Beiträge
143
Punkte Reaktionen
3
Auszug aus dem Buch Automatisieren mit Step7 in AWL von Hans Berger

Step 7 verwendet bei multiinstanzfähigen Funktionsbausteinen das Adressregister 2 als Basisadressregister für Instanzdaten. Beim Aufruf einer Instanz steht P#DBX0.0 im AR2 und alle Zugriffe auf Bausteinparameter oder statische Lokaldaten im FB verwenden die registerindirekte bereichinterne Adressierung mit dem Operandenbereich DI über dieses Register. Ein Aufruf einer Lokalinstanz erhöht mit +AR2 P#y.x die Basisadresse, so daß innerhalb des aufgerufenen Funktionsbausteins, der den Instanz-Datenbaustein des aufrufenden Funktionsbausteins verwendet, relativ zu dieser Adresse zugegriffen werden kann. Auf diese Weise können Funktionsbausteine sowohl als eigenständige Instanz als auch als Lokalinstanz aufgerufen werden.

Wenn sie also in einem multiinstanzfähigen Funktionsbaustein das Adressregister AR2 verwenden wollen, müssen sie den Inhalt vorher retten und nach der Verwendung wiederherstellen. In dem Bereich, in dem Sie mit dem Adressregister AR2 arbeietn, dürfen sie keinen Zugriff auf Bausteinparameter oder statische Lokaldaten programmieren.

Beispiel: Sie wollen in einem Funktionsbaustein mit AR2 und dem DI-Register indirekt adressieren. Vorher retten sie deren Inhalte. Sie dürfen erst wieder auf Bausteinparameter oder statische Lokaldaten zugreifen, wenn sie die Inhalte von AR2 und DI-Register wieder hergestellt haben
 
Oben