# registerindirekte Adressierung



## Anonymous (15 Dezember 2005)

Hallo,

habe in einem Programm folgende Stelle:

L P##E_Var
LAR1
L D[AR1,P#6.0]

Die Variable E_Var ist vom Typ ANY und zeigt auf den E0.0.

Meine Frage lautet:
Was lade ich mit dem Befehl L D[AR1,P#6.0] in den Akku 1??

Vielleicht kann mir irgend jemand Helfen? Danke!

MFG


----------



## Rainer Hönle (15 Dezember 2005)

Beispiel: #E_Var ist P#DB10.DBX12.5 BOOL 27. Dies bedeutet: Zeiger auf 27 Bits (BOOL) in DB 10 ab Adresse DBX12.5 

ANY-Aufbau
1 BYTE 0x10 (S7) (Offset 0.0)
1 BYTE Datentyp BOOL (1) (Offset 1.0)
1 WORT Wiederholungsfaktor (27) (Offset 2.0)
1 WORT DB-Nummer (10) (Offset 4.0)
1 DWORT Bereichsübergreifender Zeiger (P#DBX12.5) (Offset 6.0)

eigentliche Antwort:
L D[AR1,P#6.0] lädt den bereichsübergreifenden Zeiger (P#DBX12.5 an Offset 6.0) auf den adressierten Bereich in AKKU1.

ABER: vor dem Zugriff mit dem geladenen Zeiger den entsprechenden DB aufmachen sonst wird die SPS böse  :!: und rot. Dies geschieht z.B mit


```
L W[AR1,P#4.0]
T LW<ein freies Lokaldatenwort>
AUF DB[LW<...>]
```

Wenn der ANY-Zeiger nicht auf einen Datenbereich zeigt, dann steht bei der DB-Nummer 0, es passiert also kein Fehler. Vorausgesetzt, der ANY-Zeiger wurde von jemandem erzeugt, der weiß wie's sein soll.


----------



## Anonymous (21 Dezember 2005)

Hallo, 

danke für die Antwort. Demnach müsste ich in folgendem Beispiel das ED6 in meinen Akku 1 laden? Stimmt das?

L P##E_Var 
LAR1 
L D[AR1,P#6.0] 

Die Variable E_Var ist vom Typ ANY und zeigt auf den E0.0. 

MFG


----------



## Rainer Hönle (21 Dezember 2005)

Anonymous schrieb:
			
		

> Demnach müsste ich in folgendem Beispiel das ED6 in meinen Akku 1 laden? Stimmt das?
> 
> L P##E_Var
> LAR1
> ...


Es wird ED 0 geladen. Der Offset 6 ist notwendig um auf den Zeiger in der Any-Struktur zuzugreifen (s.o. Strukturaufbau). 

```
L P##E_Var 
LAR1
```
AR1 zeigt auf Any-Struktur
P#6.0 ergibt den Offset

```
L D[AR1,P#6.0]
```
 lädt somit das Doppelwort auf das der Zeiger in der Any-Struktur zeigt (blöde Formulierung).


----------

