Navigation:  SPS > Liste der Operationen > Register-indirekte Adressierung >

Indirekte Adressierung mit AR1 und AR2

Vorherige SeiteKapitelübersichtNächste Seite

 

Für einige Anwendungen ist das Verfahren der speicher-indirekten-Adressierung nicht flexibel genug. Daher gibt es in der CPU zwei spezielle Register (AR 1 und AR2, Adressregister 1 u. 2.), mit deren Hilfe der Index erst während des Zugriffs berechnet wird. Vor der ersten Benutzung der Adressregister müssen diese mit einem Zeiger auf einen Operanden geladen werden. Wenn Sie auf den Operanden E 5.6 zugreifen wollen, programmieren Sie:

 

      LAR1   P#5.6        // Lade Pointer auf “irgendwas” 5.6 in AR1

 

Jetzt steht die Adresse 5.6 im Adressregister 1. Den Eingang fragen Sie nun mit folgender Operation ab:

 

      U E[AR1,P#0.0]

 

Wollen Sie aber die Adresse E 5.7 abfragen, so programmieren Sie:

 

      U E[AR1,P#0.1]

 

Der Pointer nach dem Komma wird zu dem Wert im Adressregister 1 addiert und das Resultat als Byte- und Bit-Nummer des Eingangs interpretiert. Dabei wird berücksichtigt, dass Bytes nur 8 Bits haben, Bit 5.9 wird daher zu Bit 6.0.

Wenn Sie jetzt

 

      U E[AR1,P#0.2]

 

programmieren, wird der Eingang 6.0 abgefragt.

Das Ganze nennt man registerindirekte-bereichsinterne-Adressierung. Bereichsintern deswegen, weil (im Beispiel) immer nur Eingänge abgefragt werden.

 

Natürlich können Sie durch diese nicht nur auf Bits, sondern auch auf Bytes, Words und DWords zugreifen. Beispiel:

 

      L MW[AR2,P#2.0]

 

Es gibt nun aber auch die registerindirekte-bereichsübergreifende Adressierung. Da müssen Sie im Vorfeld nicht einmal entscheiden, ob Eingänge, Ausgänge oder Merker abgefragt werden. Das geht folgendermaßen:

Sie laden das AR1 mit der Adresse A 5.3:

 

      LAR1   P#A5.3

 

Dann weisen Sie dem Ausgang A 5.3 den Wert des VKE zu, indem Sie programmieren:

 

      = [AR1,P#0.0]

 

und entsprechend den Ausgang A 17.2

 

      = [AR1,P#11.7]        // (5.3 + 11.7 = 17.2)

 

Auch hier können Sie genauso auf Bytes, Words und DWords zugreifen:

 

      L   W[AR1,P#4.0]

 

Eigenartigerweise ist der bereichsübergreifende Zugriff auf Lokaldaten in einer S7-300 nicht gestattet, bei einer S7-400 jedoch erlaubt. Wir haben diesen Zugriff in TrySim gesperrt.

 

 

!! Warnung bei Verwendung der Adressregister !!

 

S7-300 und S7-400 sind eingetragene Warenzeichen der Siemens AG.