Curso SIMATIC S7 Nivel II Direccionamiento indirecto Abril 2003 Dir_indirecto.ppt 1
Direccionamiento directo (I) E 0.0 Zona de memoria: E -> Entrada A -> Salida T -> Temporizador M -> Marca DB -> Módulo de datos P -> Acceso directo (PA, PE) Número de bit (0-7) Número de byte (cada zona tendrá su rango) Dir_indirecto.ppt 2
Direccionamiento directo (II) Área Ejemplo Tipo de Acceso Descripción E E 0.0 Bit, Byte, Palabra, Doble Palabra Imagen de Proceso Entradas A AB 4 Bit, Byte, Palabra, Doble Palabra Imagen de Proceso Salidas PE PEW 10 Byte, Palabra, Doble Palabra Entradas de Periferia PA PAD 24 Byte, Palabra, Doble Palabra Salidas de Periferia M M 100.0 Bit, Byte, Palabra, Doble Palabra Marcas T T15 - Temporizadores C Z80 - Contadores Dir_indirecto.ppt 3
Direccionamiento directo (III) Dentro de cada byte, palabra o doble palabra, los bits se numeran de derecha a izquierda, de 0 al 7. E 124.0 Dir. byte: área de memoria + B + nº de byte EB124 Dir. palabra: área de memoria + W + nº de su 1 er byte EW124 => EB124 EB125 Dir. doble palabra: área de memoria + D + nº de su 1 er byte MD0 => MB0 MB1 MB2 MB3 Dir_indirecto.ppt 4
Direccionamiento directo (IV) Direccionamiento directo Es necesario especificar: Zona de memoria Tipo de acceso Posición de byte Posición de bit U E 125.3 L E B 124 T M B 12 U T0 U Z3 UC FC1 CALL FC3 L DB2.DBW3 Dir_indirecto.ppt 5
Direccionamiento indirecto Se puede acceder de forma indirecta a las posiciones de memoria. L P#124.0 T MD 50 L P#124.0 carga la dirección byte 124, bit 0 en formato de puntero. OJO: es la dirección, no el contenido. No se ha indicado la zona de memoria, que se especificará al utilizar la dirección. L E W [MD50] L E W 124 Zona Tipo de Dirección acceso L 11 T MW 60 AUF DB[MW 60] AUF DB 11 En el puntero se almacena la dirección de bit. El tipo de acceso (bit, byte, palabra y doble palabra) y a que zona de memoria se refiere, se especifican en la instrucción. Dir_indirecto.ppt 6
Direccionamiento Indirecto Direccionamiento indirecto con marcas MW o palabra de DB Se pueden utilizar con llamadas a módulos o para direccionar contadores, temporizadores, FC s, FB s y DBs. En la marca almacenamos el número del contador, temporizador o DB. L 8 // Carga un 8 en ACU1 T MW10 // Lo transfiere a la palabra de marcas 10 U Z [MW10] // 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 Dir_indirecto.ppt 7
Direccionamiento indirecto Registros de direcciones (AR1 y AR2) Registros de 32 bits utilizados para direccionamiento indirecto Contiene la dirección interna de memoria para realizar los direccionamientos. Cuando hacemos p#e124.0, se genera un puntero, que tiene la siguiente forma: Configuración: 31 10000 RRR 23 00000 BBB 15 BBBBBBBB 7 0 BBBBBXXX Código: Bit 31=1 El registro contiene una dirección y la zona de memoria. Bit 31=0 El registro contiene una dirección 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 módulo (variables de un FC) Rango de direcciones: B...B Dirección Byte XXX Dirección Bit Dir_indirecto.ppt 8
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 dirección de memoria en el registro de direcciones (byte/bit). Ejemplo: LAR1 P# E 100.0 El registro 1 contiene la dirección 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 } LAR1 P#125.0 } LAR1 P#E125.0 Dir_indirecto.ppt 9
Direccionamiento Indirecto Una vez almacenado el puntero con LAR1, podemos utilizarlo con una instrucción indirecta. En la instrucción indirecta hay que especificar una zona de acceso (E, A, M, T, C, etc..), un tipo de acceso (byte, palabra, etc.) y un desfase. 10 LAR1 P#10.0 // Preselección + 200 L M W [AR1, P#200.0] L MW 210 Tipo Tipo Registro Constante de Instrucción Dato Acceso Dirección Desfase Ejecutada Dir_indirecto.ppt 10
Direccionamiento Indirecto También es posible utilizar el direccionamiento indirecto para direccionar bits. Ejemplo: LAR1 P#E 100.0 U [AR1, P#110.5] // Se quiere acceder no a la entrada 100.0 : // si no a la 100.0+110.5 =210.5 : : U E 210.5 // Equivale a esta instrucción Dir_indirecto.ppt 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. 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 válidos se apagarán todos los bits de salida. (Realice el ejercicio primero con saltos y posteriormente utilizando direccionamiento indirecto) Dir_indirecto.ppt 13
Ejercicio 2 Realice un programa que lea de un DB su contenido a través de dir. Indirecto. Para ello suponga que en dicho DB se registra el contenido de una tabla y que se desea acceder a cualquier posición de esa tabla mediante EB124, y que en AB124 se representa el contenido de dicha tabla. Dir_indirecto.ppt 14