Herunterladen Diese Seite drucken

Indirekte Adressierung Der S7-200 Speicherbereiche Durch Pointer - Siemens SIMATIC S7-200 Systemhandbuch

Vorschau ausblenden Andere Handbücher für SIMATIC S7-200:

Werbung

S7-200 Systemhandbuch

Indirekte Adressierung der S7-200 Speicherbereiche durch Pointer

Die indirekte Adressierung verwendet Pointer, um auf Daten im Speicher zuzugreifen. Pointer sind
Doppelwortwerte, die eine Adresse im Speicher enthalten. Als Pointer können Sie nur Adressen des
Variablen- und Lokaldatenspeichers bzw. einen der Akkumulatoren (AC1, AC2 oder AC3) angeben. Zum
Erstellen eines Pointers verwenden Sie die Operation Doppelwort übertragen. Diese Operation überträgt die
indirekt adressierte Adresse an die Adresse des Pointers. Pointer können auch als Parameter an ein
Unterprogramm übergeben werden.
Bei der S7-200 können Sie mit einem Pointer auf die folgenden Speicherbereiche zugreifen: E, A, V, M, S, T
(nur auf den aktuellen Wert) und Z (nur auf den aktuellen Wert). Mit der indirekten Adressierung können Sie
nicht auf einzelne Bits oder auf die Speicherbereiche AE, AA, HC, SM oder L zugreifen.
4
Wenn Sie indirekt auf Daten in einer Adresse im Speicher zugreifen möchten, können Sie einen Pointer auf
die Adresse erstellen, indem Sie das Zeichen & und die entsprechende Adresse eingeben. Dem
Eingabeoperanden der Anweisung müssen Sie das Zeichen & voranstellen, um dadurch anzugeben, dass
die Adresse und nicht der Inhalt der Adresse an die vom Ausgabeoperanden der Anweisung (Pointer)
angegebene Adresse übertragen werden soll.
Ein Stern (*) vor dem Operanden einer Operation zeigt an, dass es sich bei der Adresse um einen Pointer
handelt. In Bild 4-11 gibt *AC1 an, dass AC1 ein Pointer ist, der die Adresse für den Wortwert enthält, der
von der Operation Wort übertragen (MOVW) referenziert wird. In diesem Beispiel werden die Werte von
VB200 und VB201 in den Akkumulator AC0 übertragen.
V199
V200
V201
V202
V203
Bild 4-11
Bild 4-12 zeigt, dass Sie den Wert eines Pointers ändern können. Da es sich bei Pointern um 32-Bit-Werte
handelt, müssen Sie Pointerwerte mit Doppelwort-Operationen ändern. Mit einfachen arithmetischen
Operationen können Sie Pointerwerte ändern, z.B. durch Addieren oder Inkrementieren.
V199
V200
V201
V202
V203
V199
V200
V201
V202
V203
Bild 4-12
Tipp
Achten Sie darauf, dass Sie die Größe der Daten angeben, auf die Sie zugreifen möchten: wenn Sie auf
ein Byte zugreifen möchten, inkrementieren Sie den Wert des Pointers um 1. Wenn Sie auf ein Wort oder
einen aktuellen Wert einer Zeit oder eines Zählers zugreifen möchten, inkrementieren Sie den Wert des
Pointers um 2. Und wenn Sie auf ein Doppelwort zugreifen möchten, inkrementieren Sie den Wert des
Pointers um 4.
32
AC1
Adresse von VW200
1 2
3 4
5 6
AC0
1234
7 8
Erstellen und Verwenden eines Pointers
AC1
Adresse von VW200
1 2
3 4
AC0
5 6
1234
7 8
AC1
Adresse von VW202
1 2
AC0
3 4
5 6 7 8
5 6
7 8
Ändern eines Pointers
MOVD &VW200, AC1
Erstellt den Pointer, indem die Adresse von VB200 (Adresse des Anfangs-
byte von VW200) in AC1 übertragen wird.
MOVW *AC1, AC0
Überträgt den Wortwert, auf den AC1 zeigt, in AC0.
MOVD &VW200, AC1
Erstellt den Pointer, indem die Adresse von VB200 (Adresse des An-
fangsbyte von VW200) in AC1 übertragen wird.
MOVW *AC1, AC0
Überträgt den Wortwert, auf den AC1 (VW200) zeigt, in AC0.
+D +2, AC1
Addiert den Wert 2 zum Akkumulator, damit auf die nächste Worta-
dresse gezeigt wird.
MOVW *AC1, AC0
Überträgt den Wortwert, auf den AC1 (VW202) zeigt, in AC0.

Quicklinks ausblenden:

Werbung

loading