Professional Documents
Culture Documents
Direccionamiento indirecto
Abril 2003
Zona de memoria:
E -> Entrada A -> Salida T -> Temporizador M -> Marca DB -> Mdulo de datos P -> Acceso directo (PA, PE)
Descripcin
Bit, Byte, Palabra, Doble Palabra Imagen de Proceso Entradas Bit, Byte, Palabra, Doble Palabra Imagen de Proceso Salidas Byte, Palabra, Doble Palabra Byte, Palabra, Doble Palabra Entradas de Periferia Salidas de Periferia Temporizadores Contadores
Dir. palabra: rea de memoria + W + n de su 1er byte EW124 => EB124 EB125 Dir. doble palabra: rea de memoria + D + n de su 1er byte MD0 => MB0 MB1 MB2 MB3
Direccionamiento indirecto
Se puede acceder de forma indirecta a las posiciones de memoria.
L T L E P#124.0 MD 50 W [MD50]
L P#124.0 carga la direccin byte 124, bit 0 en formato de puntero. OJO: es la direccin, no el contenido. No se ha indicado la zona de memoria, que se especificar al utilizar la direccin.
L E W 124
En el puntero se almacena la direccin de bit. El tipo de acceso (bit, byte, palabra y doble palabra) y a que zona de memoria se refiere, se especifican en la instruccin.
AUF DB 11
Direccionamiento Indirecto
Direccionamiento indirecto con marcas MW o palabra de DB
Se pueden utilizar con llamadas a mdulos o para direccionar contadores, temporizadores, FCs, FBs y DBs. En la marca almacenamos el nmero del contador, temporizador o DB.
L8 T MW10 U Z [MW10] // Carga un 8 en ACU1 // Lo transfiere a la palabra de marcas 10 // Equivale a U Z 8: comprueba el contador 8
MD o doble palabra de DB
Se pueden utilizar para el resto de direccionamientos. El valor del puntero deber de ser introducido como constante de puntero en una doble palabra.
L P#124.0 T MD50 L EW[MD50] --L EW124
Direccionamiento indirecto
Registros de direcciones (AR1 y AR2) Registros de 32 bits utilizados para direccionamiento indirecto Contiene la direccin interna de memoria para realizar los direccionamientos. Cuando hacemos p#E124.0, se genera un puntero, que tiene la siguiente forma: Configuracin:
31 10000 RRR Cdigo: 23 00000 BBB 15 BBBBBBBB 7 0 BBBBBXXX
Bit 31=1 El registro contiene una direccin y la zona de memoria . Bit 31=0 El registro contiene una direccin y no la zona de memoria . Zonas de memoria (si est disponible): RRR Identificador: 000 Periferia 001 Entradas (PAE) 010 Salidas (PAA) 011 Marcas 100 Datos en DB 1 (DB) 101 Datos en DB 2 (DI) 110 Datos locales del mdulo (variables de un FC) Rango de direcciones: B...B Direccin Byte XXX Direccin Bit
Direccionamiento indirecto
La carga del registro se realiza con las instrucciones LAR1 y LAR2. Las instrucciones TAR1 y TAR2 se utilizan para ver el contenido de los registros de direcciones. El formato puntero P# hace posible el introducir la direccin de memoria en el registro de direcciones (byte/bit).
Ejemplo: LAR1 P# E 100.0 El registro 1 contiene la direccin de la entrada 100.0 .
Carga del registro de direcciones L P#125.0 - 0000 0000 0000 0011 1110 1000 LAR1 L P#E125.0 - 1000 0001 0000 0011 1110 1000 LAR1
SIMATIC S7 NIVEL II Dir_indirecto.ppt
} }
Direccionamiento Indirecto
Una vez almacenado el puntero con LAR1, podemos utilizarlo con una instruccin indirecta. En la instruccin indirecta hay que especificar una zona de acceso (E, A, M, T, C, etc..), un tipo de acceso (byte, palabra, etc.) y un desfase. LAR1 P#10.0 L M W // Preseleccin [AR1, P#200.0] L MW 210 10
+ 200
Tipo Dato
Instruccin Ejecutada
10
Direccionamiento Indirecto
11
Direccionamiento Indirecto
Otras funciones
LAR1 LAR1 P#valor LAR2 LAR2 P#valor LAR1 AR2 TAR1 TAR1 MD20 TAR +AR1 +AR2 +AR1 P#valor
AR2 --> AR1 AR1 --> ACU1 AR1 --> MD20 Intercambia AR1 y AR2 AR1 + ACU1 --> AR1 AR1 + valor --> AR1
En estas funciones, cuando se utiliza una marca, sta debe ser de 32 bits, porque el AR1 y AR2 lo son. Los valores que se introducen o suman a AR1 y AR2 deben ser punteros.
SIMATIC S7 NIVEL II Dir_indirecto.ppt
12
Ejercicio 1
Realice un programa que active el bit de la palabra de salida AW124 que indique el valor que haya en el EB124. Para valores no vlidos se apagarn todos los bits de salida. (Realice el ejercicio primero con saltos y posteriormente utilizando direccionamiento indirecto)
13
Ejercicio 2
Realice un programa que lea de un DB su contenido a travs de dir. Indirecto. Para ello suponga que en dicho DB se registra el contenido de una tabla y que se desea acceder a cualquier posicin de esa tabla mediante EB124, y que en AB124 se representa el contenido de dicha tabla.
14