Vous êtes sur la page 1sur 2

support.industry.siemens.com | Product Support | sbado, 4.

noviembre 2017

Tipo de artculo: Descarga, ID de artculo 19345564, Fecha del artculo: 12/02/2007

Programacin de bucles con direccionamiento indirecto

PREGUNTA:
Cmo se realiza en el STEP 7 la programacin de bucles con direccionamiento indirecto?

RESPUESTA:
El direccionamiento indirecto posibilita el direccionamiento de operandos cuyas direcciones se determinan durante la
ejecucin del programa. De esta forma, por ejemplo, se pueden ejecutar varias veces determinadas partes del programa.
En la programacin de bucles, las direcciones de los operandos utilizados se asignan en cada pasada.

Con ayuda del programa adjunto "LoopAddr", mediante programacin de un bucle se escriben 100 posiciones de
memoria seguidas con los valores de las variables de entrada "Input_1" e "Input_2. El programa contiene la funcin
FC10 con las variables de tipo IN "Input_1" e "Input_2" (de tipo DWORD) y la variable "DB_No" (de tipo WORD), la cual
contiene el nmero del DB, as como un mdulo de datos DB10 con la declaracin "Value: ARRAY[1..100] of REAL".

El valor de "Input_2" se suma en cada pasada del bucle al valor de inicio de "Input_1" o a la suma anterior, y la direccin
calculada se guarda en el mdulo de datos. Si, por ejemplo, la variable de entrada "Input_1" vale 0,5 e "Input_2" vale 1,5,
el primer valor de 0,5 se asigna a la direccin 0.0 y la suma calculada (0,5+1,5=2,0) se asigna a la siguiente direccin
(4.0), la siguiente suma calculada (2.0+1.5=3.5) se asigna a la siguiente direccin (8.), y as sucesivamente.

Input_1 = 0.5; Input_2 = 1.5 Input_1 = 0; Input_2 = 5.5

Direccin: Nombre: Valor: Direccin: Nombre: Valor:

0.0 Value[1] 0,5 0.0 Value[1] 0,0

4.0 Value[2] 2,0 4.0 Value[2] 5,5

8.0 Value[3] 3,5 8.0 Value[3] 11,0

12.0 Value[4] 5,0 12.0 Value[4] 16,5

16.0 Value[5] 6,5 16.0 Value[5] 22,0

20.0 Value[6] 8,0 20.0 Value[6] 27,7

24.0 Value[7] 9,5 24.0 Value[7] 33,0

28.0 Value[8] 11,0 28.0 Value[8] 38,5

32.0 Value[9] 12,5 32.0 Value[9] 44,0

... ... ... ... ... ...


Tabla 1: 2 ejemplos para "Input_1" e "Input_2" con el archivo de los valores sumados a las direcciones calculadas en el
DB10.

En la primera parte del FC10, se llama a la funcin del sistema SFC24 "TEST_DB" y se realiza la evaluacin
consiguiente del parmetro "RET_VAL". Con el SFC24, se recibe informacin de los mdulos de datos disponibles en la
memoria de trabajo de la CPU. De esta forma se averigua el nmero de bytes de datos de que dispone el DB
seleccionado y se comprueba si el DB est protegido contra escritura. Si el cdigo de fallo devuelto por "RET_VAL" no
es cero, se termina el programa con una instruccin de salto. La informacin de fallo del parmetro "RET_VAL" puede
ser la siguiente:
0000: Sin fallo.
80A1: El nmero del mdulo de datos es cero o superior al admitido por la CPU.
80B1: El modulo de datos indicado no est en la CPU.
80B2: El modulo de datos se cre con la palabra reservada UNLINKED.

El mdulo de datos seleccionado se abre con ayuda del siguiente direccionamiento indirecto:
L #DB_No // Nmero del DB elegido (10 para DB10).
T #Init_DB // Variable temporal de tipo WORD.
AUF DB[#Init_DB] // Se abre el DB10 (<=> AUF DB10).

El nmero de mdulo indicado (a travs del parmetro de entrada "DB_No") se carga en el AKKU1 y se copia en la
variable temporal "Init_DB" como memoria intermedia. A travs de esta variable temporal ,se abre el DB.

El valor de la variable de entrada "Input_1" se copia en la variable temporal "Init" y se suma en el bucle con el valor de la
variable "Input_2". El bucle utiliza la instruccin LOOP, en donde el contador de bucles est guardado en la variable
temporal "Count". La transferencia de la suma a cada doble palabra de datos (de tipo REAL) del DB se realiza con el
direccionamiento indirecto, a travs de la variable temporal "Point_to" (de tipo DWORD).
Antes de entrar en el bucle, se carga un puntero con la direccin del primer componente y se transfiere a las variables
"Point_to". En cada paso por el bucle, se aumenta la direccin de acceso a las variables "Point_to" en P#4.0, ya que los
valores se transfieren con formato de doble palabra (de tipo REAL).

En el OB1 se llama al FC10 y se configuran los parmetros "Input_1" e "Input_2" con MD10 y MD20. El parmetro
"DB_No" se parametriza con el valor "W#16#A"(A para DB10).
Figura 1: Programacin de bucles con direccionamiento indirecto

Download:
El Download adjunto contiene el programa de STEP 7 con los mdulos arriba descritos para la programacin de bucles
con direccionamiento indirecto.

LoopAddr.exe ( 524 KB )

Copie el archivo "LoopAddr.exe" en un directorio aparte y arrnquelo haciendo doble click sobre l. Con ello, se
descomprime automticamente el proyecto de STEP 7 V5.2 con todos sus subdirectorios. A continuacin, ya se puede
abrir y elaborar el proyecto descomprimido con el administrador SIMATIC.

Funcionalidad del test:


Este ejemplo se puede utilizar en todos los tipos de CPU del SIMATIC S7-300, S7-400 , C7 y WinAC.
En la siguiente tabla, se indican los componentes con los que se ha creado y comprobado la funcionalidad descrita:

Requerimientos del test Versin


PC SIMATIC Intel(R) Pentium(R) M processor
Sistema operativo Windows XP SP2
STEP 7 V5.4
S7-PLCSIM V5.3
Tabla 2: Requerimientos de test para el Download adjunto

Conceptos de bsqueda:
Puntero

Informacin de seguridad
Para proteger las instalaciones, los sistemas, las mquinas y las redes de amenazas
cibernticas, es necesario implementar (y mantener continuamente) un concepto de seguridad
industrial integral que sea conforme a la tecnologa ms avanzada. Los productos y las
soluciones de Siemens constituyen nicamente una parte de este concepto. Encontrar ms
informacin sobre seguridad industrial en
http://www.siemens.com/industrialsecurity.

El artculo pertenece a la(s) carpeta(s) de rbol de productos:


Este artculo est relacionado con 212 producto(s).
Mostrar / ocultar imagen 1

Siemens AG 2009-2017 - Pie de imprenta Poltica de privacidad Directivas sobre cookies Condiciones del servicio ID digital

Vous aimerez peut-être aussi