Siemens 6ES7223-1BH22-0XA0 EM 223 Digital Input / Output Module 6ES7223-1BH22-0XA0 用户手册

产品代码
6ES7223-1BH22-0XA0
下载
页码 538
S7-200 Systemhandbuch
34
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.
AC1
Adresse von VW200
AC0
1234
1 2
3 4
5 6
7 8
V199
V200
V201
V202
V203
MOVD &VW200, AC1
MOVW *AC1, AC0
Erstellt den Pointer, indem die Adresse von VB200 (Adresse
des Anfangsbyte von VW200) in AC1 übertragen wird.
Überträgt den Wortwert, auf den AC1 (VW200) zeigt, in AC0.
AC0
5 6 7 8
1 2
3 4
5 6
7 8
V199
V200
V201
V202
V203
MOVW *AC1, AC0
Überträgt den Wortwert, auf den AC1 (VW202) zeigt,
in AC0.
+D
+2, AC1
AC1
Adresse von VW202
Addiert den Wert 2 zum Akkumulator, damit auf die
nächste Wortadresse gezeigt wird.
Bild 4-12
Ändern eines Pointers
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.
Beispielprogramm für den Zugriff auf Daten im Variablenspeicher mittels Versatz
In diesem Beispiel wird LD10 als Pointer auf die Adresse VB0 verwendet. Sie inkrementieren den Pointer dann um den
in VD1004 gespeicherten Versatz. LD10 zeigt dann auf eine andere Adresse im Variablenspeicher (VB0 + Versatz). Der
in der Adresse im Variablenspeicher gespeicherte Wert, auf den LD10 zeigt, wird dann in VB1900 kopiert. Wenn Sie den
Wert in VD1004 ändern, können Sie auf alle Adressen im Variablenspeicher zugreifen.
Netzwerk 1 //Lesen eines Werts einer beliebigen VB-Adresse
//mittels Versatz:
//
//1. Anfangsadresse des Variablenspeichers in einen
//Pointer laden.
//2. Versatzwert zum Pointer addieren.
//3. Wert aus der Adresse im Variablenspeicher (Versatz)
//in VB1900 kopieren.
//
LD
SM0.0
MOVD &VB0, LD10
+D
VD1004, LD10
MOVB *LD10, VB1900