Automate programmable S7-200 Manuel système
Utilisation de pointeurs pour l'adressage indirect des zones de mémoire
S7-200
En mode d'adressage indirect, un pointeur permet d'accéder aux données en mémoire. Les pointeurs sont
des emplacements de double mot en mémoire contenant l'adresse d'un autre emplacement de mémoire.
Vous ne pouvez utiliser que des adresses de mémoire V, des adresses de mémoire L ou les accumulateurs
1, 2 ou 3 comme pointeurs. Pour créer un pointeur, vous devez utiliser l'opération Transférer double mot
pour transférer l'adresse de l'emplacement de mémoire adressé indirectement à l'emplacement du pointeur.
Vous pouvez transmettre des pointeurs en tant que paramètres à un sous-programme.
Le S7-200 permet aux pointeurs d'accéder aux zones de mémoire suivantes : I, Q, V, M, S, T (valeur en
cours uniquement) et C (valeur en cours uniquement). Vous ne pouvez vous servir de l'adressage indirect
4
pour accéder à un bit individuel ou aux zones de mémoire AI, AQ, HC, SM et L.
Pour accéder indirectement aux données dans une adresse de mémoire, vous créez un pointeur désignant
cette adresse en entrant une perluète (&) et l'adresse de mémoire à laquelle accéder. L'opérande d'entrée
de l'opération doit être précédé du signe & pour signaler qu'il faut transférer l'adresse et non la valeur
contenue à cette adresse à l'adresse précisée dans l'opérande de sortie (le pointeur).
Pour indiquer que l'opérande d'une opération est un pointeur, vous faites précéder cet opérande d'un
astérisque. Comme illustré dans la figure 4-11, entrer *AC1 signifie que AC1 est un pointeur désignant la
valeur de mot référencée par l'opération MOVW (Transférer mot). Dans cet exemple, les valeurs rangées
dans VB200 et VB201 sont transférées dans l'accumulateur 0.
V199
V200
V201
V202
V203
Figure 4-11
Comme illustré à la figure 4-12, vous pouvez modifier la valeur d'un pointeur. Comme les pointeurs sont des
valeurs de 32 bits, vous modifiez leur valeur à l'aide d'opérations sur doubles mots. Vous pouvez modifier la
valeur des pointeurs à l'aide d'opérations arithmétiques simples (additionner ou incrémenter, par exemple).
V199
V200
V201
V202
V203
V199
V200
V201
V202
V203
Figure 4-12
Conseil
N'oubliez cependant pas de prendre en compte la taille des données auxquelles se fait l'accès : pour
accéder à un octet, incrémentez la valeur du pointeur d'1 ; pour accéder à un mot ou à la valeur en cours
d'une temporisation ou d'un compteur, incrémentez cette valeur de 2 et, pour accéder à un double mot,
incrémentez cette valeur de 4.
32
AC1
adresse de VW200
1 2
3 4
5 6
AC0
1234
7 8
Création et utilisation d'un pointeur
AC1
adresse de VW200
1 2
3 4
AC0
5 6
1234
7 8
AC1
adresse de VW202
1 2
AC0
3 4
5 6 7 8
5 6
7 8
Modification d'un pointeur
MOVD &VW200, AC1
Crée le pointeur en transférant l'adresse de VB200
(adresse de l'octet initial de VW200) dans AC1.
MOVW *AC1, AC0
Transfère le mot désigné par AC1 dans AC0
MOVD &VW200, AC1
Crée le pointeur en transférant l'adresse de VB200
(adresse de l'octet initial de VW200) dans AC1.
MOVW *AC1, AC0
Transfère le mot désigné par AC1 (VW200) dans AC0.
+D +2, AC1
Ajoute 2 à l'accumulateur pour désigner l'adresse de mot suivante.
MOVW *AC1, AC0
Transfère le mot désigné par AC1 (VW202) dans AC0.