Sei sulla pagina 1di 23

Instrucciones con Direccionamiento Indirecto

y Registro de Direcciones

?
? ? 1

2
er
oint
P
ar_ -
#P
-
-
#Ini_Value -

9
10

#Counter

L W [AR1, P#200.0]

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.1
Posibilidades de Direccionamiento con STEP 7

Procedimiento de Direccionamiento

Direccionamiento Directo Direccionamiento Indirecto

absoluto simblico Indirecto por memoria Indirecto por registro

puntero de 16-bit Puntero de 32-bit Puntero de 32-bit Puntero de 32-bit


(DB, T, C) intrarea intrarea interrea

Ejemplos:

U E 4.0 U "Motor_on" AUF DB[MW10] U E[MD30] U E[AR1,P#0.0] U [AR1,P#0.0]


L EW10 L #Nmero SI T["runtime"] L EW["Nmero"] L ED[AR1,P#5.0] T W[AR1,P#0.0]

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.2
Direccionamiento Directo de Variables
rea de Tamaos de
Direccin Significado
Memoria (por ejemplo) Acceso Adicional
Byte, palabra,
E 37.4 Entradas
doble palabra
Byte, palabra,
A 27.7 Salidas
doble palabra
Byte, palabra,
PEB 655 Periferia de entradas
doble palabra
Byte, palabra,
PAB 653 Periferia de salidas
doble palabra
Byte, palabra,
M 55.0 Marcas
doble palabra

T 114 -- Temporizadores

Z 13 -- Contadores

Byte (DBB), palabra (DBW), Datos direccionados va


DBX 2001.6
doble palabra (DBD) registro DB
Byte (DIB), palabra (DIW), Datos direccionados va
DIX 406.1
doble palabra (DID) registro DI
Byte (LB), palabra (LW),
L 88.5 Pila de datos locales
doble palabra (LD)

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.3
Direccionamiento Directo de Identificadores de Operando en DBs

Mdulos de Cargar y transferir


datos abiertos en mdulos de datos

AUF DB 19 L DBB 1 Cargar el byte de datos 1


AUF "Valores" L DBW 2 Cargar la palabra de datos 2 (byte 2/3)
L5 Cargar el nmero 5
T DBW 4 Transferir a la palabra 4
AUF DI 20 L 'A' Cargar el carcter ASCII A
L DIB28 Cargar el byte de datos 28
==I Comparar

U DBX 0.0 Consultar el bit 0 del byte 0


Operaciones combinadas L DB19.DBW4 Cargar la palabra de datos 4 del DB 19
(contiene AUF DB..)
L "Valores".Numero_1 Acceso simblico de la
variable Numero_1. El DB19
tiene el nombre simblico
"Valores"
U DB10.DBX4.7 Consultar el bit 7 del byte 4 del DB 10

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.4
Analizar la Informacin del DB en el Programa

Instrucciones con Registros DB:


TDB: Intercambiar los registros DB

Registro DB 123 24

TDB
Registro DI 24 (CDB)
123

antes: despus:

Cargar el Registro DB en el ACCU1


L DBNO (cargar el nmero de DB abierto en el ACCU1)
L DINO (cargar el nmero de DI abierto en el ACCU1)

Cargar la longitud de los mdulos de datos


L DBLG (cargar la longitud/bytes del DB abierto en el ACCU1)
L DILG (cargar la longitud/bytes del DI abierto en el ACCU1)

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.5
Direccionamiento Indirecto por Memoria

Puntero de 16-bit en Formato Palabra (Direccionamiento de DBs, T, Z)


L 11
T MW 60

AUF DB[MW 60] AUF DB 11

Puntero de 32-bit en Formato Doble Palabra (Direccionamiento de


E, A, M, ...)
L P#24.0
T MD 50

L E W [MD50] L EW 24

rea Longitud Direccin


de Acceso

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.6
Estructura de Punteros con Direccionamiento Indirecto por Memoria

Estructura de un Puntero de 16-bit:


15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 146

215 27 20
Interpretacin como un entero sin signo entre 0 ... 65 535

Estructura de un Puntero de 32-bit (intrarea):


31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 0 0 0 0 0 0 0 0 0 0 B B B B B B B B B B B B B B B B X X X
215 20 22 20

no analizado Direccin de Byte (entero sin signo) Direccin


de Bit

Carga de Constantes en Punteros de 32-bit (intrarea):


L P#25.3 (P = Puntero, direccin de Byte = 25, direccin de Bit : 3)

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.7
Caractersticas Especiales del Direccionamiento Indirecto por Memoria
reas de Direccin para Almacenar Punteros de 16-bit y 32-bit:
Marcas (direccionadas absoluta o simblicamente,
por ejemplo: AUF DB[MW30], AUF DI["Motor_1"], etc.
U E[MD30], T AD[Velocidad_1"], etc.)
Pila de Datos Locales (direccionada absoluta o simblicamente,
por ejemplo: AUF DB[LW10], AUF DI[#DB_NO], etc.
U E[LD10], T AD[#Par_Puntero], etc.)
Mdulo de Datos Global (Compartido) (slo puede direccionarse absolutamente, el
DB debe abrirse previamente,
por ejemplo: AUF DB[DBW0] ( sobreescribe el registro DB !!!), AUF DI[DBW22],
etc.
U E[DBD10], T AD[DBD22], etc.)
Mdulo de Datos de Instancia (slo puede direccionarse absolutamente, el DI debe
abrirse previamente,
por ejemplo: AUF DB[DIW20], AUF DI[DIW0] ( sobreescribe el registro DI !!!), etc.
U E[DID10], T AD[DID22], etc.)

Caractersticas en el Paso de Punteros a FBs y FCs


Los punteros pasados como parmetros no pueden usarse directamente para
direccionamiento indirecto por memoria.
Los punteros pasados para el direccionamiento indirecto por memoria deben
copiarse en variable temporales antes del acceso.

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.8
Ejemplo de Direccionamiento Indirecto
FC30: Ejemplo de direccionamiento indirecto

Segm. 1: Abrir DB con direccionamiento indirecto

L #numerodb // Copiar el nmero de DB en MW100


T MW 100 //
AUF DB[MW 100] // Abrir DB

Segm. 2: Bucle para el borrado

L P#18.0 // Guarda direccin final (DBW18) como Puntero


T MD 40 // en MD 40;
L 10 // Preajustar el contador de bucle a 10
next: T MB 50 // y transferir a MB 50;
L 0 // Cargar el valor de inicializacin
T DBW[MD 40] // y transferir al DB;
L MD 40 // Cargar el Puntero
L P#2.0 // y decrementarlo en 2 bytes
-D // y entonces volverlo a transferir
T MD 40 // a MD 40;
L MB 50 // Cargar el contador de bucle
LOOP next // Decrementarlo y si es necesario saltar;

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.9
Ejercicio 12.1: Programacin de Bucles con Direccionamiento
Indirecto

DB41
Direccin de Byte

0 1.0 Valor_Med[1]
o Valor_Med[2]
n te r n
4 2.0
u i
a r_P e cc
#P
a dir
o al -
n ter B -
#Valor_Ini Pu el D -
en -

32 9.0 Valor_Med[9]
36 10.0 Valor_Med[10]
#Contador_B
40 11.0 Valor_Med[11]
.
. etc.
.

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.10
Direccionamiento Indirecto por Registro Intrarea

Puntero Intrarea en AR 1 o AR2:


31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 0 0 0 0 0 0 0 0 0 0 B B B B B B B B B B B B B B B B X X X
215 20 22 20

no analizado Direccin de Byte (entero sin signo) Direccin


deBit

Sintaxis del Comando:


LAR1 P#10.0 // Preajuste de AR1: 00000000 0000 0000 0000 0000 0101 0000

+ 200
L M W [AR1, P#200.0]

rea Registro de Instruccin: L MW 210


direcciones Ejecutada
Tamao Constante de
del acceso desplazamiento

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.11
Direccionamiento Indirecto por Registro interrea
Puntero Interrea en AR 1 o AR2:
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

1 0 0 0 0 R R R 0 0 0 0 0 B B B B B B B B B B B B B B B B X X X

Identificador de rea Direccin de Byte (entero sin signo) Direccin


de Bit
Bit 31=0: intrarea
Bit 31=1: interrea

Identificadores de rea:
000 E/S 001 Entradas (PAE)
010 Salidas (PAA) 011 Marcas
100 Datos en Registro DB 101 Datos en Registro DB 2 (DI)
110 Datos locales propios 111 DL del mdulo llamante
Sintaxis del comando:
LAR1 P#E10.0 // Preajuste de AR1: 10000001 0000 0000 0000 0000 0101 0000

L W [AR1, P#200.0] + 200

Tamao Registro Constante de Instruccin: L EW 210


de de desplazamiento Ejecutada
acceso direcciones

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.12
Instrucciones para Cargar Registros de Direcciones

Cargar el Registro de Direcciones


LARn (n =1 or 2): Cargar el contenido del ACCU1 en ARn
LARn <Direccin> Cargar el contenido de <Direccin> en ARn
LARn P#<Direccin> Cargar la direccin de <Direccin> en ARn
<Direccin>:
Registro del procesador: AR1, AR2 (p.e. LAR1 AR2 y LAR2 AR1)
Variables de 32-bit como: MDn, LDn, DBDn, DIDn (p.e. L DBD5, etc.)
Variables simblicas 32-bit : Variables globales 32-bit (p.e. LAR1 "Indice", etc.)
(global y local) y variables TEMP de OBs, FBs y FCs
(por ejemplo, LAR1 #Direccin, etc.)
P#<Direccin>
Puntero a direcciones En.m, An.m, Mn.m, Ln.m, DBXn.m, DIXn.m
binarias absolutas : (por ejemplo, LAR1 P#M5.3, LAR2 P#E3.6, etc.)
Puntero a variables OB: variables TEMP (p.e.: LAR1 P##Par_Puntero, etc.)
locales, simblicas FB: variables IN, OUT, INOUT, STAT y TEMP.
FC: variablesTEMP (LAR1 P##Bucle, etc.)

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.13
Otras Instrucciones con Registros de Direcciones

Transferir desde un Registro de Direcciones


TARn (n =1 or 2): Trasnferir el contenido del ARn al ACCU1
TARn <Direccin> Transferir el contenido del ARn a <Direccin>
<Direccin>:
Registro del procesador: AR2 (p.e.. TAR1 AR2 )
Variables 32-bit absolutas: MDn, LDn, DBDn, DIDn (p.e. TAR2 MD5, etc.)
Variables simblicas 32-bit: Variables globales de 32-bit (p.e. TAR1 "Indice", etc.)
(global y local) y variables TEMP de OBs, FBs y FCs
(p.e. TAR1 #Direccin, etc.)

Intercambiar (Swap) Registros de Direcciones


TAR Intercambia el contenido de los registros de
direcciones AR1 y AR2

Sumar a Registros de Direcciones


+ARn Suma ACCU1-L a ARn
+ARn P#n.m Suma el puntero intrarea P#n.m a AR1 AR2

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.14
Caractersticas Especiales del Direccionamiento Indirecto por Registro
Uso Interno del AR1 por el Editor AWL/KOP/FUP
Con accesos a parmetros en FCs, el registro AR1 y el registro DB
se sobreescriben si los parmetros son del tipo de datos compuestos (ARRAY,
STRUCT, DATE_AND_TIME) .
Con accesos a parmetros INOUT de FBs, el registro AR1 y el registro DB se
sobreescriben si el parmetro INOUT es del tipo de datos compuestos (ARRAY,
STRUCT, DATE_AND_TIME)
No puede tener lugar un acceso directo a los parmetros
locales entre la carga del registro de direcciones y el acceso
indirecto por registro de la variable deseada.

Uso Interno del AR2 por el Editor AWL/KOP/FUP


El registro AR2 y el registro DI se usan como registro de direcciones base para
el direccionamiento de todos los parmetros y variables STAT en un FB.
Si AR2 o DI son sobreescritos por el usuario en un FB, no puede
tener lugar un acceso a los propios parmetros del FB o a las
variables STAT despus de esto. Es decir, no sin restaurar ambos registros.
No hay restricciones en las FCs en referencia al registro AR2 y al registro DI

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.15
Ejercicio 12.2: Programacin de Bucles con Direccionamiento
Indirecto por Registro

DB42
Direccin de Byte

0 1 Numero[1]
4 2 Numero[2]

AR1
#
a l a l DB -
o e
ter n d -
n i
#ACCU1 Pu recc -
di -

32 9 Numero[9]
36 10 Numero[10]
#ACCU2
40 11 Numero[11]
.
. etc.
.

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.16
Parmetros de Mdulo del Tipo de Datos POINTER y ANY
FC... Paso de la informacin individual de una
Direc.
0.0
Decl.
in
Nombre
Numero_DB
Tipo
WORD
direccin actual (como en STEP 5):
2.0 in Puntero_Area DWORD nmero de DB
6.0 in Longitud WORD
.. .
direccin inicial
longitud del rea, etc.
L #Numero_DB
T #Numero_DB_I
OPN DB[Numero_DB_I]
Inconvenientes:
. el programador debe hacer la separacin
L # Puntero_Area
LAR1 no puede usarse el nombre simblico de la
L # Longitud direccin actual durante la llamada
...
son necearios varios parmetros para una
direccin (rea)
FC... no es corregido en la comprobacin de coherencia
Direc. Decl. Nombre Tipo
0.0 in Medida_1 POINTER Paso usando parmetros del tipo
...
8.0 in Medida_2 ANY
POINTER o ANY (STEP 7):
... el programador usa el nombre simblico de la
L P##Medida_1 direccin actual en la llamada
LAR1 la separacin de la informacin individual es
L W[AR1,P#0.0]
T #Numero_DB_I realizada por el Editor KOP/AWL/FUP
OPN DB[Numero_DB_I] slo es necesario un parmetro para una direccin
L D[AR1,P#2.0]
LAR1 es corregido en la comprobacin de coherencia
....

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.17
Estructura y Asignacin del Tipo de Datos POINTER
Estructura del Tipo de Datos: POINTER

Byte n Nmero de DB (INT) Byte n+1

Byte n+2 1OOO_ORRR_OOOO_OBBB


Byte n+3
(puntero interrea

Byte n+4 BBBB_BBBB_BBBB_BXXX


Byte n+5
de 32- bit)

Asignacin de un Parmetro del Tipo POINTER


Formato del Puntero
P#DBn .DBX x.y con: n= nmero de DB, x= nmero de byte, y= nmero de bit
P#DIn .DIX x.y (p.e.: P#DB5.DBX3.4, P#DI2.DIX10.0, etc.)
P#Zx.y con: Z= rea, p.e.: P, E, A, M y L
(p.e.: P#E5.3, P#M10.0, etc.)
Declaracin de la direccin:
MD30 (en este caso, el nmero de DB, identificador de
#Motor_on operando y direccin de bit se introducen
"Motor_1".velocidad automticamente en el POINTER)

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.18
Configuracin del Tipo de Datos ANY

Puntero ANY para Tipo de Dato Tipo de Dato Identificador


VOID 00
Byte n 16#10 Tipo de dato BOOL 01
Factor de replicacin BYTE 02
Byte n+2 CHAR 03
Byte n+4 Nmero de DB WORD 04
1OOO_ORRR_OOOO_OBBB INT 05
Byte n+6 DWORD 06
Byte n+8 BBBB_BBBB_BBBB_BXXX DINT 07
REAL 08
DATE 09
TOD 0A
TIME 0B
S5TIME 0C
Puntero ANY para Tipo de Parametro DT 0E
STRING 13
Byte n 16#10 Tipo de parmetro
Tipo de param. Identificador
Byte n+2 16#0001 BLOCK_FB 17
16#0000 BLOCK_FC 18
Byte n+4 BLOCK_DB 19
Byte n+6 16#0000 BLOCK_SDB 1A
COUNTER 1C
Byte n+8 Nmero del temporizador, contador o bloque TIMER 1D

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.19
Asignacin de Parmetros del Tipo de Datos ANY
Formato del Puntero:
P#[Bloque de datos.]Direccin de bit Tipo Nmero
P#DB10.DBX12.0 REAL 20 Puntero a un rea en el DB10, comenzando en el

Byte 12, compuesta por 20 direcciones de tipo de


datos REAL (ARRAY[1..20] OF REAL)
P#E 10.0 BOOL 8 Puntero a un campo de 8 bits en EB10
Declaracin de la direccin:
absoluta:
DB5.DBD10 Tipo de Dato: DWORD, Factor de replicacin: 1
Nmero de DB: 5, Puntero: P#DB5.DBX10.0
EW32 Tipo: WORD, FR: 1, N DB: 0, Puntero: P#E 32.0
T35 Tipo: TIMER, N.: 35
simblica:
#Motor_1.velocidad con tipos de datos simples, el compilador
Bomba".Arranque establece el tipo de dato correcto, factor de
replicacin 1 y puntero
Nota
con asignacin simblica (ARRAY, STRUCT, STRING, UDT), se establece por
el compilador el identificafor del tipo de datos 02 (BYTE) y la longitud del rea
en byte y se introducen en el puntero ANY
SIMATIC S7 Fecha: 05.04.17
SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.20
Asignacin Indirecta de Parmetros del Tipo ANY
Asignacin por medio de parmetros actuales temporales del tipo de
datos ANY
declarar una variable temporal del tipo de datos ANYen el mdulo llamante
p.e.: temp puntero_aux ANY
rellenar la variable temporal ANY con informacin de puntero
p.e.:
LAR1 P##puntero_aux // Cargar direccin de puntero aux.
L B#16#10 // Cargar identificador 10
T LB [AR1,P#0.0] // y transferir a Desplazamiento 0
L ...
...
Asignar al parmetro de mdulo del tipo ANY (campo destino) la variable
puntero auxiliar
p.e.:
CALL FC 111
campodestino:=#puntero_aux

Ventaja
reasignacin dinmica de parmetros de un puntero ANY en runtime

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.21
Evaluacin del Paso de un Puntero ANY

Direccin Declaracin Nombre Tipo Valor inicial Comentario


0.0 in Puntero_Par ANY
out
in_out
0.0 temp Tipo_dato BYTE
2.0 temp FR WORD
4.0 temp Num_DB WORD
6.0 temp Puntero_Area DWORD

Segm. 1: Establecimiento del tipo de dato, factor de replicacin, nmero


de DB, y puntero de rea

L P##Puntero_Par // Cargar direccin de #Puntero_Par en ACCU1


LAR1 // y de all cargarla en AR1;
L B [AR1,P#1.0] // Establecer el tipo de dato del puntero
T #Tipo_dato // y cargarlo en la variable temporal;
L W [AR1,P#2.0] // Establecer el factor de replicacin
T FR // y cargarlo en la variable temporal;
L W [AR1,P#4.0] // Establecer el nmero de DB
T #Num_DB // y cargarlo en la variable temporal;
L D [AR1,P#6.0] // Establecer el puntero de rea
T #Puntero_Area // y cargarlo en la variable temporal;

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.22
Ejercicio 12.3: Funcin para Calcular la Suma y el Valor Medio

Nombre Tipo
STRUCT Decl. Nombre Tipo
Medida ARRAY[1..8] in Valores_medidos ANY
REAL out Suma REAL
END_STRUCT out Valor_medio REAL

DB43
103.45
EN
FC 43 ENO
2086.5
1.7895 P#DB43.DBX0.0 REAL 8 Valores_medidos Suma
....
Valor_medio
....

SIMATIC S7 Fecha: 05.04.17


SITRAIN Formacin en
Automatizacin y Accionamientos
Siemens S.A. 2002. Todos los derechos reservados. Archivo: S7N2_12.23

Potrebbero piacerti anche