Curso SIMATIC S7 Nivel II

Direccionamiento indirecto Abril 2003

SIMATIC S7 NIVEL II Dir_indirecto.ppt

1

Direccionamiento directo (I)

Zona de memoria:

E

0

•E -> Entrada •A -> Salida •T -> Temporizador •M -> Marca •DB -> Módulo de datos •P -> Acceso directo (PA, PE)

.0 Número de bit (0 - 7) Número de byte (cada zona tendrá su rango)

SIMATIC S7 NIVEL II 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

SIMATIC S7 NIVEL II 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. Dir. byte: área de memoria + B + nº de byte

E 124.0 EB124

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

SIMATIC S7 NIVEL II 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

SIMATIC S7 NIVEL II Dir_indirecto.ppt

5

Direccionamiento indirecto Se puede acceder de forma indirecta a las posiciones de memoria. L T L

E

P#124.0 MD 50 W

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.

[MD50]

Zona Tipo de Dirección acceso L 11 T MW 60 AUF DB[MW 60]

L E W 124

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.

AUF DB 11

SIMATIC S7 NIVEL II 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. 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]

---

SIMATIC S7 NIVEL II Dir_indirecto.ppt

L EW124

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 Código:

23 00000 BBB

15 BBBBBBBB

7 0 BBBBBXXX

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

SIMATIC S7 NIVEL II 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 SIMATIC S7 NIVEL II Dir_indirecto.ppt

} }

LAR1 P#125.0 LAR1 P#E125.0

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. LAR1 P#10.0

// Preselección

L M

[AR1,

W

10

+ 200

P#200.0] L MW 210

Tipo Dato

Tipo Registro Constante de Acceso Dirección Desfase

SIMATIC S7 NIVEL II Dir_indirecto.ppt

Instrucción Ejecutada

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

SIMATIC S7 NIVEL II 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. 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 válidos se apagarán todos los bits de salida. (Realice el ejercicio primero con saltos y posteriormente utilizando direccionamiento indirecto)

SIMATIC S7 NIVEL II 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.

SIMATIC S7 NIVEL II Dir_indirecto.ppt

14