Manual del sistema de automatización S7-200
Como muestra la figura 4-12, es posible modificar el valor de los punteros. Puesto que los
punteros son valores de 32 bits, para cambiarlos es preciso utilizar operaciones de palabra doble.
Las operaciones aritméticas simples, tales como sumar o incrementar, se pueden utilizar para
modificar los valores de los punteros.
V199
V200
1 2
V201
3 4
5 6
V202
7 8
V203
V199
1 2
V200
3 4
V201
V202
5 6
V203
7 8
Figura 4-12
Modificar un puntero
Consejo
Recuerde que debe indicar el tamaño de los datos a los que desea acceder. Para acceder a un
byte, incremente el valor del puntero en 1. Para acceder a una palabra, o bien al valor actual de
un temporizador o de un contador, incremente el valor del puntero en 2. Para acceder a una
palabra doble, incremente el valor del puntero en 4.
Programa de ejemplo de un offset para acceder a datos de la memoria V
El presente ejemplo utiliza LD10 como puntero a la dirección VB0. El puntero se incrementa luego con un offset
almacenado en VD1004. LD10 señala entonces a otra dirección en la memoria V (VB0 + offset). El valor almacenado en
la dirección de la memoria V a la que señala LD10 se copia a continuación en VB1900. Modificando el valor en VD1004
es posible acceder a cualquier dirección de la memoria V.
38
AC1
Dirección de VW200
AC0
1234
AC1
Dirección de VW202
AC0
5 6 7 8
Network 1 //Utilizar un puntero para leer el valor
//de cualquier dirección VB:
//1º Cargar la dirección inicial de la
//memoria V en un puntero.
//2º Sumar al puntero el offset ajustado.
//3º Copiar el valor de la memoria V
//(offset) en VB1900.
LD
SM0.0
MOVD &VB0, LD10
+D
VD1004, LD10
MOVB *LD10, VB1900
MOVD &VW200, AC1
Crea el puntero transfiriendo la dirección de VB20
(dirección del byte inicial de VW200) a AC1.
MOVW *AC1, AC0
Transfiere a AC0 el valor de palabra al
que señala el puntero AC1 (VW200).
+D +2, AC1
Suma 2 al acumulador para señalar a
la siguiente dirección de palabra.
MOVW *AC1, AC0
Transfiere a AC0 el valor de palabra al
que señala el puntero AC1 (VW202).