Tutorial S7 3

download Tutorial S7 3

of 154

Transcript of Tutorial S7 3

TUTORIAL DE PROGRAMACIN UTORIAL DEEN SIMATIC S7 EN IMATIC

Versin 22/01/2002

Pg. 1 de 154

Tutorial de programacin en Simatic S7INDICE1.1. Distribucin .......................................................................................................... 8 1.2. Objetivos.............................................................................................................. 8 2. Introduccin .......................................................................................................... 9 2.1. PLCs ................................................................................................................... 9 2.2. Funcionamiento bsico........................................................................................ 9 2.3. Control ............................................................................................................... 11 2.4. Autmata ........................................................................................................... 11 2.5. Ventajas............................................................................................................. 11 2.6. Autmatas Siemens........................................................................................... 12 2.7. Ciclo de trabajo en el autmata ......................................................................... 13 2.8. Lenguajes de programacin .............................................................................. 13 3. Sistemas de numeracin.................................................................................... 15 3.1. Sistema Decimal................................................................................................ 15 3.2. Sistema Binario.................................................................................................. 15 3.3. Convertir el binario............................................................................................. 16 3.4. Bits, bytes, y palabras (words)........................................................................... 16 3.5. 0 lgico, 1 lgico ................................................................................................ 17 3.6. BCD ................................................................................................................... 17 3.7. Hexadecimal ...................................................................................................... 18 3.8. Conversin de nmeros..................................................................................... 19 4. Sistemas de numeracin.................................................................................... 20 4.1. Estructura de la memoria en Simatic S7 ........................................................... 20 4.2. Tipos de mdulos .............................................................................................. 21 4.3. Tipos de datos ................................................................................................... 22 4.4. Marcas de memoria ........................................................................................... 22 4.5. Entradas y salidas ............................................................................................. 22 4.6. Registros............................................................................................................ 23

Versin 22/01/2002

Pg. 2 de 154

4.7. Temporizadores y contadores ........................................................................... 25 5. Programacin en AWL ....................................................................................... 26 5.1. Tratamiento de los resultados ........................................................................... 26 5.2. Primera consulta................................................................................................ 26 5.3. ASIGNACION .................................................................................................... 26 5.4. Funcin AND (Y)................................................................................................ 27 5.5. Funcin OR (O) ................................................................................................. 27 5.6. Funcin XOR (O exclusiva) ............................................................................... 28 5.7. Expresiones entre parntesis ............................................................................ 28 5.8. Y antes de O...................................................................................................... 29 5.9. Ejercicio propuesto ............................................................................................ 30 5.10. Operaciones de flancos ................................................................................... 31 5.11. Set y Reset ...................................................................................................... 31 5.12. Negar, activar, desactivar y salvar el RLO ...................................................... 32 5.13. Ejercicios propuestos....................................................................................... 33 6. Acumuladores - Operaciones de carga y transferencia.................................. 34 6.1. Operacin de carga ........................................................................................... 34 6.2. Operacin de transferencia ............................................................................... 35 7. Operaciones de contaje ..................................................................................... 36 7.1. Operaciones con contadores............................................................................. 36 7.2. Cargar un valor de contaje ................................................................................ 36 7.3. Borrar un contador............................................................................................. 36 7.4. Contaje hacia adelante y hacia atrs................................................................. 37 7.5. Consulta del estado de contadores ................................................................... 37 7.6. Lectura de un valor de contaje .......................................................................... 37 7.7. Ejercicios propuestos......................................................................................... 38 8. Operaciones de temporizacin.......................................................................... 39 8.1. Operaciones con temporizadores...................................................................... 39 8.2. Cargar un valor de temporizacin...................................................................... 39 8.3. Consulta del estado de temporizadores. ........................................................... 40 8.4. Temporizador como impulso (SI)....................................................................... 41

Versin 22/01/2002

Pg. 3 de 154

8.5. Temporizador como impulso prolongado (SV) .................................................. 42 8.6. Temporizador como retardo a la conexin (SE) ................................................ 43 8.7. Temporizador como retardo a la conexin con memoria (SS) .......................... 44 8.8. Temporizador como retardo a la desconexin (SA) .......................................... 45 8.9. Elegir el temporizador adecuado ....................................................................... 46 8.10. Borrar una temporizacin ................................................................................ 47 8.11. Re-arranque de un temporizador..................................................................... 47 8.12. Lectura de un valor de temporizacin.............................................................. 48 8.13. Ejercicios propuestos....................................................................................... 49 9. Operaciones de salto ......................................................................................... 51 9.1. Operaciones de salto incondicional ................................................................... 51 9.2. Operaciones de salto condicional, en funcin del RLO ..................................... 52 9.3. Operaciones de salto condicional, en funcin de RB u OV/OS ......................... 52 9.4. Operaciones de salto condicional, en funcin de A1 y A0................................. 53 9.5. Finalizar mdulos............................................................................................... 54 9.6. Loop................................................................................................................... 55 9.7. Ejercicios propuestos......................................................................................... 55 10. Operaciones de control de programa ............................................................... 56 10.1. Llamar funciones y mdulos de funcin con CALL.......................................... 56 10.2. Llamar funciones y mdulos con CC y UC ...................................................... 57 10.3. Llamar funciones de sistema integradas ......................................................... 58 10.4. Funcin Master Control Relay ......................................................................... 58 11. Formatos de representacin de nmeros ........................................................ 60 11.1. Binario.............................................................................................................. 60 11.2. Hexadecimal .................................................................................................... 60 11.3. BCD ................................................................................................................. 60 11.4. Nmeros enteros (I)......................................................................................... 61 11.5. Nmeros dobles enteros (D)............................................................................ 62 11.6. Nmeros reales (R) ......................................................................................... 62 12. Operaciones de comparacin............................................................................ 64 12.1. Realizacin de comparaciones........................................................................ 64

Versin 22/01/2002

Pg. 4 de 154

12.2. Comparar dos nmeros enteros ...................................................................... 64 12.3. Comparar dos nmeros reales ........................................................................ 65 12.4. Ejercicios propuestos....................................................................................... 67 13. Marca de ciclo ..................................................................................................... 68 13.1. Ejercicios propuestos....................................................................................... 68 14. Operaciones aritmticas .................................................................................... 69 14.1. Operaciones aritmticas con enteros .............................................................. 69 14.2. Operaciones aritmticas con nmeros reales ................................................. 70 14.3. Ejercicios propuestos....................................................................................... 71 15. Operaciones de conversin............................................................................... 72 16. Operaciones de desplazamiento ....................................................................... 74 16.1. Desplazar palabras.......................................................................................... 74 16.2. Desplazar doble palabras ................................................................................ 74 16.3. Desplazar enteros............................................................................................ 75 16.4. Desplazar dobles enteros ................................................................................ 75 16.5. Ejercicios propuestos....................................................................................... 75 17. Operaciones de rotacin.................................................................................... 76 17.1. Rotar palabras dobles...................................................................................... 76 17.2. Ejercicios propuestos....................................................................................... 76 18. Bloques del programa de usuario..................................................................... 77 18.1. Tipos de bloques ............................................................................................. 77 18.2. Mdulos de funcin (FC) ................................................................................. 78 18.3. Tabla de declaracin de variables ................................................................... 78 18.4. Llamadas a bloques......................................................................................... 79 18.5. Ejemplo de funcin FC .................................................................................... 80 18.6. Bloques de datos (DB)..................................................................................... 82 18.7. Bloque de datos global .................................................................................... 82 18.8. Ejemplo de bloque de datos global.................................................................. 84 18.9. Formato de datos en los DB ............................................................................ 85 18.10. Bloques de funcin (FB) ............................................................................... 87 18.11. Llamada al FB................................................................................................ 88

Versin 22/01/2002

Pg. 5 de 154

18.12. Multiinstancia : Un DB de instancia para cada instancia ............................... 89 18.13. Multiinstancia : Un DB de instancia para varias instancias de un FB ............ 91 18.14. Ejercicio propuesto ........................................................................................ 92 19. Tratamiento de seales analgicas .................................................................. 93 19.1. Entrada analgica............................................................................................ 93 19.2. Salida analgica .............................................................................................. 94 19.3. Direccionamiento seales analgicas ............................................................. 94 19.4. Funcin de escalado de entradas analgicas (FC105) ................................... 95 19.5. Funcin de desescalado de salidas analgicas (FC106) ................................ 97 19.6. Parmetros de las tarjetas analgicas............................................................. 98 19.7. Ejercicios propuestos....................................................................................... 99 20. Eventos de alarma y error asncrono.............................................................. 100 20.1. Mdulo de arranque OB100 .......................................................................... 101 20.2. Alarma cclica OB35 ...................................................................................... 101 20.3. Alarma horaria OB10 ..................................................................................... 102 20.4. Interrupcin de retardo OB20 ........................................................................ 102 20.5. Ms OBs ....................................................................................................... 103 21. Direccionamiento indirecto.............................................................................. 104 21.1. Direccionamiento indirecto por memoria ....................................................... 104 21.2. Direccionamiento indirecto por registro intrarea .......................................... 106 21.3. Direccionamiento indirecto por registro interrea .......................................... 107 21.4. Operaciones con el registro de direcciones................................................... 107 21.5. Ejercicio propuesto ........................................................................................ 108 22. Array - Matrices................................................................................................. 109 23. Comunicacin de datos globales.................................................................... 111 23.1. Configuracin de una red GD ........................................................................ 112 24. Proteger un bloque (Know-How) ..................................................................... 116 24.1. Tabla de variables para visualizar / forzar ..................................................... 118 25. Ejercicios propuestos ...................................................................................... 119 25.1. Bomba de agua ............................................................................................. 119 25.2. Control de llenado de botellas ....................................................................... 120

Versin 22/01/2002

Pg. 6 de 154

25.3. Control de llenado de botellas 2 .................................................................... 121 25.4. Control de una escalera mecnica ................................................................ 122 25.5. Cintas transportadoras .................................................................................. 123 25.6. Mquina expendedora de tabaco .................................................................. 124 25.7. Gasolinera ..................................................................................................... 125 26. Soluciones ejercicios propuestos................................................................... 126 26.1. Ejercicio operaciones lgicas ........................................................................ 126 26.2. Ejercicio taladradora ...................................................................................... 127 26.3. Ejercicio motor ............................................................................................... 128 26.4. Ejercicio de control de un semforo .............................................................. 129 26.5. Ejercicios generador de pulsos y onda cuadrada.......................................... 131 26.6. Ejercicio rea de almacenamiento................................................................. 132 26.7. Ejercicio factorial de un nmero .................................................................... 133 26.8. Ejercicio multiplicacin y divisin................................................................... 134 26.9. Ejercicio desplazamiento ............................................................................... 135 26.10. Ejercicio cintas transportadoras................................................................... 136 26.11. Ejercicio detector de humo .......................................................................... 137 26.12. Ejercicio contador analgico........................................................................ 137 26.13. Ejercicio onda diente de sierra .................................................................... 137 26.14. Ejercicio repostera ...................................................................................... 139 26.15. Sistema de adquisicin de datos ................................................................. 148 Anexo I : Informacin general de Simatic S7-314IFM ........................................... 149

Versin 22/01/2002

Pg. 7 de 154

1.1. DistribucinEste documento es de libre distribucin y empleo. El autor no se responsabiliza de cualquier modificacin efectuada al original. Se permite la copia parcial o integra de su contenido. Simatic S7 es propiedad de Siemens AUT, todos los derechos son reservados. Siemens no se responsabiliza de este documento.

1.2. ObjetivosCon este tutorial se pretende ensear los conocimientos necesarios para programar en los autmatas de la serie Simatic S7 de Siemens AUT. No se va a mostrar la utilizacin del programa Step7, ya que este programa es comercial e incluye los manuales necesarios para su empleo. Todo lo aqu expuesto ha sido obtenido de los manuales del autmata, pero se ha estructurado de distinta forma, tratando que la persona que lo utilice no se pierda en ningn momento y que acceda de forma rpida a lo que busca. Por supuesto, este tutorial no es una alternativa al manual que incorpora el autmata, se debe tomar como una gua complementaria. El manual proporciona ms ejemplos y mayor detalle que el expuesto aqu. Es necesario que el lector est familiarizado con el lgebra de Boole, y si se est familiarizado con algn otro lenguaje de programacin (como basic o ensamblador) ser mucho ms sencillo y rpido. Si no conoce los conceptos de lgebra de Boole puede recurrir al tutorial disponible en la seccin de electrnica industrial en esta misma web.

Versin 22/01/2002

Pg. 8 de 154

2. Introduccin

2.1. PLCsLos Controladores Lgicos Programables (PLCs), tambin llamados autmatas programables, forman parte de la familia de los ordenadores. Se usan en aplicaciones comerciales e industriales. Un autmata monitoriza las entradas, toma decisiones basadas en su programa, y controla las salidas para automatizar un proceso o mquina. Este curso trata de suministrar la informacin bsica sobre las funciones y las configuraciones de los autmatas programables.

2.2. Funcionamiento bsico

Un autmata programable consiste en mdulos de entradas, una CPU, y mdulos de salidas. Una entrada acepta una gran variedad de seales analgicas o digitales de varios dispositivos de campo (sensores) y los convierte en una seal lgica que puede usar la CPU. La CPU tomas las decisiones y ejecuta las instrucciones de control basadas en las instrucciones del programa de la memoria. Los mdulos de salida convierten las instrucciones de control de la CPU en una seal digital o analgica que se puede usar para controlar dispositivos de campo (actuadores). Se usa un dispositivo de programacin para introducir las instrucciones deseadas. Estas instrucciones especifican lo que debe hacer el autmata segn una entrada especifica. Un dispositivo operador permite procesar la informacin para ser visualizada e introducir nuevos parmetros de control.

Versin 22/01/2002

Pg. 9 de 154

Los pulsadores (sensores), del siguiente ejemplo, conectados a las entradas del autmata, pueden usarse para arrancar y parar un motor conectado a un autmata a travs de un arrancador (actuador).

Versin 22/01/2002

Pg. 10 de 154

2.3. Control

Anteriormente a los autmatas, muchas de estas tareas de control se solucionaban mediante rels o contactores. Esto con frecuencia se denominaba control mediante lgica cableada. Se tenan que disear los diagramas de circuito, especificar e instalar los componentes elctricos, y crear listas de cableado. Entonces los electricistas deban cablear los componentes necesarios para realizar una tarea especifica. Si se cometa un error, los cables tenan que volver a conectarse correctamente. Un cambio en su funcin o una ampliacin del sistema requera grandes cambios en los componentes y su recableado.

2.4. Autmata

Lo mismo, adems de tareas ms complejas, se puede hacer con un autmata. El cableado entre dispositivos y los contactos entre rels se hacen en el programa del autmata. Aunque todava se requiere el cableado para conectar los dispositivos de campo, ste es menos intensivo. La modificacin de la aplicacin y la correccin de errores son ms fciles de realizar. Es ms fcil crear y cambiar un programa en un autmata que cablear y recablear un circuito.

2.5. Ventajas Menor tamao fsico que las soluciones de cableado La realizacin de cambios es ms fcil y ms rpida. Los autmatas llevan integradas funciones de diagnstico. Los diagnsticos estn disponibles centralmente en la PG. Las aplicaciones pueden ser inmediatamente documentadas. Se pueden duplicar las aplicaciones ms rpidamente y con menor coste.

Versin 22/01/2002

Pg. 11 de 154

2.6. Autmatas Siemens

Siemens fabrica varios lneas de autmatas de la familia SIMATIC S7. Son: S7-200, S7-300, y S7-400.

S7-200Al S7-200 se le denomina microsistema a causa de su pequeo tamao. El S7-200 tiene un diseo compacto que significa que la fuente de alimentacin y las Entradas/Salidas las lleva incorporadas. El S7-200 puede usarse en pequeas aplicaciones independientes como ascensores, lavado de coches, o mquinas mezcladoras. Tambin puede utilizarse en aplicaciones industriales ms complejas como mquinas de embotellado y empaquetado.

S7-300 y S7-400 Estos autmatas se usan en aplicaciones ms complejas que necesitan de un mayor nmero de Entradas/Salidas. Ambos son modulares y ampliables. La fuente de alimentacin y las Entradas/Salidas consisten en mdulos independientes conectados a la CPU. La eleccin entre el S7-300 y el S7-400 depende de la complejidad de la tarea y de una posible ampliacin futura.

Versin 22/01/2002

Pg. 12 de 154

2.7. Ciclo de trabajo en el autmataEl autmata va a ejecutar nuestro programa de usuario en un tiempo determinado, el cual va a depender sobre todo de la longitud del programa. Esto es debido a que cada instruccin tarda un tiempo determinado en ejecutarse, por lo que en procesos rpidos ser un factor crtico. En un sistema de control mediante autmata programable tendremos los siguientes tiempos: 1. Retardo de entrada. 2. Vigilancia y exploracin de las entradas. 3. Ejecucin del programa de usuario. 4. Transmisin de las salidas. 5. Retardo en salidas. Los puntos 2, 3 y 4 sumados dan como total el tiempo de ciclo del autmata. Tras este ciclo es cuando se modifican las salidas, por lo que si varan durante la ejecucin del programa tomarn como valor el ltimo que se haya asignado. Tambin supone que una variacin en las entradas no se ver durante la ejecucin del programa, hasta que se inicie un nuevo ciclo. Esto es as debido a que no se manejan directamente las entradas y las salidas, sino una imagen en memoria de las mismas que se adquiere al comienzo del ciclo (2) y se modifica al final de ste (retardo). En la etapa de vigilancia (watchdog) se comprueba si se sobrepas el tiempo mximo de ciclo, activndose en caso afirmativo la seal de error correspondiente.

2.8. Lenguajes de programacinPara toda la familia de autmatas Simatic S7 se emplean los siguientes lenguajes de programacin: - Lista de instrucciones (AWL). - Esquema de contactos (KOP): se representa grficamente con smbolos elctricos. Internamente el autmata solo trabaja con lista de instrucciones, KOP es traducido a AWL por Step7. En este tutorial solo veremos la programacin en lista de instrucciones. Las instrucciones son las rdenes lgicas elementales que el sistema debe obedecer. Suelen ocupar una lnea de programa (dos en algunas instrucciones), y no pueden escindirse en instrucciones parciales. Las instrucciones AWL se dividen en: OPERACION: indica la instruccin que se ha de realizar (ej. AND). OPERANDO: indica una constante o direccin con la que debe trabajar la operacin. Si se trata de una direccin se puede manejar en modo bit, byte o palabra (tal y como veremos ms adelante).

Versin 22/01/2002

Pg. 13 de 154

Operacin | | Identificador del operando | | U E 32.0 //Operacin AND lgica | | Operando Comentarios

Una instruccin puede no contener operando (ej. NOT). El operando puede ser sustituido por un nombre simblico (ej. MOTOR_ON), el cual debe ser especificado al comienzo del programa para indicar a que entrada o salida equivale.

Versin 22/01/2002

Pg. 14 de 154

3. Sistemas de numeracinDado que un autmata es un ordenador, almacena informacin en forma de condiciones On y Off (1 0), refirindose a dgitos binarios (bits). A veces los dgitos binarios se usan individualmente y otras son utilizados para representar valores numricos.

3.1. Sistema Decimal En los autmatas se usan varios sistemas numricos. Todos los sistemas de nmeros tienen las mismas caractersticas: dgitos, base, potencia. El sistema decimal, que es de utilizacin comn en la vida diaria, tiene las caractersticas siguientes: Diez dgitos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Base 10 Potencias 1, 10, 100, 1000, ...

3.2. Sistema Binario El sistema binario se usa en los controladores programables. Tiene las siguientes caractersticas: Dos dgitos 0, 1 Base 2 Potencias de base 2 (1, 2, 4, 8, 16, ...) En el sistema binario los 1s y 0s se ordenan en columnas. Cada columna tiene un peso. La primera columna tiene un peso binario de 20. Esto equivale al decimal 1. A ste se le denomina bit menos significativo. El peso binario se dobla en cada columna sucesiva. La siguiente columna, por ejemplo, tiene un peso de 21, que equivale al decimal 2. El valor decimal se dobla en cada columna sucesiva. El nmero ms a la izquierda se denomina bit ms significativo. En el ejemplo, el bit ms significativo tiene un peso binario de 27. Es equivalente al decimal 128.

Versin 22/01/2002

Pg. 15 de 154

3.3. Convertir el binarioLos siguientes pasos se pueden usar para interpretar un nmero decimal desde un valor binario: 1. Buscar de derecha a izquierda (de menos significativo a ms significativo) los 1s. 2. Escribir la representacin decimal de cada columna que contenga un 1. 3. Sumar los valores de esas columnas. En el ejemplo siguiente, las columnas cuarta y quinta desde la derecha contienen un 1. El valor decimal de la cuarta columna desde la derecha es 8, y el valor decimal de la quinta columna desde la derecha es 16. El decimal equivalente de este nmero binario es 24. La suma de todas las columnas con peso que contienen un 1 es el nmero decimal que el autmata ha almacenado.

En el siguiente ejemplo las columnas cuarta y quinta desde la derecha contienen un 1. El valor decimal de la cuarta columna desde la derecha es 8, y el valor decimal de la sexta columna desde la derecha es 32. El decimal equivalente de este nmero binario es 40.

3.4. Bits, bytes, y palabras (words)Cada unidad binaria de datos es un bit. Cada 8 bits hacen 1 byte. 2 bytes 16 bits, hacen 1 palabra.

Versin 22/01/2002

Pg. 16 de 154

3.5. 0 lgico, 1 lgicoLos controladores programables slo pueden entender una seal que sea On o Off (presente o no presente). El sistema binario es un sistema en el cual slo hay dos nmeros, 1 y 0. El binario 1 indica que una seal est presente, o el interruptor est On. El binario 0 indica que la seal no est presente, o el interruptor est Off.

3.6. BCDEl cdigo BCD (Binary-Coded Decimal) son nmeros decimales en los que cada dgito est representado por un nmero binario de 4 bits. Un contador de vueltas es un ejemplo de un dispositivo de entrada de 4 bits. El BCD se usa comnmente con dispositivos de entrada y salida. Los nmeros binarios se rompen en grupos de 4 bits, cada grupo representa un decimal equivalente. Un contador de vueltas de 4 dgitos, como el que se muestra abajo, podra controlar 16 (4 x 4) entradas al autmata.

Versin 22/01/2002

Pg. 17 de 154

3.7. HexadecimalEl hexadecimal es otro sistema usado en los autmatas programables. El sistema hexadecimal tiene las caractersticas siguientes: 16 dgitos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Base 16 Potencias de base 16 (1, 16, 256, 4096 ...) Se utilizan los diez dgitos del sistema decimal para los primeros diez dgitos del sistema hexadecimal. Se usan las primeras seis letras del alfabeto para los seis dgitos restantes. A = 10 B = 11 C = 12 D = 13 E = 14 F = 15

El sistema hexadecimal se utiliza en los autmatas programables porque permite representar el estado de un gran nmero de bits binarios en un pequeo espacio como es la pantalla de un ordenador o un visualizador de programacin. Cada dgito hexadecimal representa el estado exacto de 4 bits binarios. Para convertir un nmero decimal a un nmero hexadecimal el nmero decimal se dividir por base 16. Por ejemplo, para convertir el decimal 28 a hexadecimal:

El decimal 28 dividido entre 16 es 1 con un resto de 12. Doce es equivalente a C en hexadecimal. El hexadecimal equivalente del decimal 28 ser pues 1C. El valor decimal de un nmero hexadecimal se obtiene multiplicando individualmente los dgitos hexadecimales por el peso de base 16 y despus sumando los resultados. En el siguiente ejemplo el nmero hexadecimal 2B se convierte a su decimal equivalente que es 43. 160= 1 161= 16 B =11

Versin 22/01/2002

Pg. 18 de 154

3.8. Conversin de nmerosLa siguiente tabla muestra unos pocos valores numricos en representacin decimal, binario, BCD, y hexadecimal.

Versin 22/01/2002

Pg. 19 de 154

4. Sistemas de numeracin4.1. Estructura de la memoria en Simatic S7La memoria del autmata est estructurada en las siguientes zonas: MEMORIA DE PROGRAMA:

Aqu es donde se va a introducir el programa que hagamos. La capacidad vara segn la CPU que utilicemos, para la S7-314 IFM tenemos 24K bytes, lo cual equivale a una media de 8K (8192) lneas de programa. Como se puede observar cada lnea de programa suele ocupar 4 bytes de memoria.IMAGENES DE ENTRADAS Y SALIDAS:

Tal y como vimos en 2.1, el autmata maneja una imagen en memoria de las entradas y las salidas, actualizando stas al final del ciclo y recogiendo su estado al principio de otro.MARCAS DE MEMORIA:

Aqu almacenaremos los datos intermedios que deseemos preservar. Solo se admiten datos de 1 bit, aunque pueden manejarse en modo bit, byte, etc.E/S DE LA PERIFERIA:

Esta zona se emplea para tener acceso directo a los mdulos de E/S externos que pueden ser aadidos a la CPU.ESTADO DE TEMPORIZADORES Y CONTADORES: El valor de temporizacin y de contaje, preseleccin y estado actual, se almacena en esta rea. Por batera se pueden retener los valores de contaje y temporizacin que deseemos. MODULOS DE DATOS: Aqu podemos almacenar constantes y valores obtenidos mediante operaciones de cualquier longitud (bit, byte, etc.). Estos mdulos pueden ser accesibles desde cualquier mdulo de programa. DATOS TEMPORALES: Aqu se almacenan distintos datos, como las pilas de salto, que se utilizan durante la ejecucin del programa y se pierden al final de cada ciclo.

Versin 22/01/2002

Pg. 20 de 154

4.2. Tipos de mdulosEl Simatic S7 dispone de una serie de mdulos que dividen la memoria de programa y la de datos en secciones, permitiendo una programacin estructurada y un acceso ordenado a los datos. El nmero de mdulos va a depender del tipo de CPU empleada, disponiendo en general de los siguientes: Mdulos de organizacin (OB) Constituyen la forma de comunicacin entre el sistema operativo de la CPU y el programa de usuario. Existen 3 tipos de OB, los cuales estn accesibles o no segn el tipo de CPU: OB 1 (ciclo libre): es el mdulo principal, el que se ejecuta cclicamente y del que parten todos los saltos a otros mdulos.+-----+ | | | | | | | OB1 | | | | | | | | | | | +-----+ ===> +-----+ | | +-----+ | | ===> +-----+ | | | | | | AW4=AAAA Si 2 => AW4=5555 Si 3 => AW4=0000

Ejercicio 1: Factorial de un nmeroHacer el factorial del n 7, o sea, 7 x 6 x 5 x 4 x 3 x 2 x 1 mediante un bucle.

Versin 22/01/2002

Pg. 55 de 154

10. Operaciones de control de programa10.1. Llamar funciones y mdulos de funcin con CALLInstruccin: "CALL" La operacin CALL se emplea para llamar funciones (FC's) y mdulos de funcin (FB's) creados para el usuario para el programa en cuestin o adquiridos en Siemens como mdulos de funcin estndar. La operacin CALL llama la funcin FC o mdulo FB indicado como operando, independientemente del resultado lgico o cualquier otra condicin. Si se desea llamar un mdulo de funcin con la operacin CALL, se deber asignar un mdulo de datos de instancia (DB de instancia). La llamada de una funcin (FC) o de un mdulo de funcin (FB) puede programarse, es decir, es posible asignar operandos a la llamada. El programa ejecutar con estos operandos la funcin (FC) o el mdulo de funcin (FB). Para ello hay que indicar los operandos que se desean usar para ejecutar la funcin o el mdulo de funcin. Estos parmetros se denominan parmetros actuales (entradas, salidas, marcas de memoria...). El programa que contiene la funcin o el mdulo de funcin tiene que poder acceder a estos parmetros actuales, por lo que se deber indicar en el programa el parmetro formal que corresponda al parmetro actual . Si no se especifica la correspondencia en mdulos de funcin el programa acceder a travs del mdulo de datos de instancia a los datos del parmetro formal. En la llamada a funciones todos los parmetros formales tienen que ser asignados a parmetros actuales. La lista de parmetros formales es parte integrante de la operacin CALL. El parmetro actual que se indica al llamar un mdulo de funcin tiene que ser del mismo tipo de datos que el parmetro formal. Los parmetros actuales empleados al llamar una funcin o un mdulo de funcin se suelen indicar con nombres simblicos. El direccionamiento absoluto de parmetros actuales slo es posible con operandos cuyo tamao mximo no supere una palabra doble. Registros afectados: ninguno Ejemplo de llamada a un FB con un DB de instancia y parmetros de mdulo:CALL ON1: ON2: OFF1: L FB40,DB41 = E1.0 = MW2 = MD20 DB20 //llamamos al mdulo FB40 con el mdulo de instancia DB41 //ON1 (parmetro formal) es asignado a E1.0 (p. actual) //ON2 (parmetro formal) es asignado a MW2 (p. actual) //OFF1 (parmetro formal) es asignado a MD20 (p. actual) //el programa accede al parmetro formal OFF1.

En el ejemplo anterior se ha supuesto que los parmetros formales pertenecen a los siguientes tipos de datos: ON1: BOOL (binario) ON2: WORD (palabra) OFF1: DWORD (palabra doble) Ejemplo de llamada a un FC con parmetros de mdulo:CALL INK1: INK2: OFF: FC80 = M1.0 = EW2 = AW4 //llamamos la funcin FC80 //INK1 (p. formal) es asignado a M 1.0 (p. actual) //INK2 (p. formal) es asignado a EW2 (p. actual) //OFF (p. formal) es asignado a AW4 (p. actual)

Versin 22/01/2002

Pg. 56 de 154

En el ejemplo anterior se ha supuesto que los parmetros formales pertenecen a los siguientes tipos de datos: INK1: BOOL (binario) INK2: INT (entero) OFF: WORD (palabra) Es posible crear una funcin que d un valor de retorno. Si se desea crear por ejemplo una operacin aritmtica con nmeros de coma flotante, entonces puede utilizar este valor de retorno como salida para el resultado de la funcin. Como nombre de la variable puede introducirse "RE_VAL" y como tipo de datos REAL. Al llamar despus esta funcin en el programa se ha de proveer la salida RET_VAL de una direccin de palabra doble de forma que pueda acoger el resultado de 32 bits de la operacin aritmtica.

10.2. Llamar funciones y mdulos con CC y UCInstrucciones: "CC" y "UC" Estas operaciones se emplean para llamar funciones (FC) creadas para el programa del mismo modo como se utiliza la operacin CALL. Sin embargo, no es posible transferir parmetros. CC llama la funcin indicada como operando si el RLO=1. UC llama la funcin indicada como operando, independientemente de cualquier condicin. Las operaciones CC y UC pueden llamar una funcin con direccionamiento directo o indirecto de la memoria, o a travs de una FC transferida como parmetro. El rea de memoria es FC ms el nmero del FC. Mx. rea de direccionamiento directo Mx. rea de direccionamiento indirecto [DBW] [DIW] [LW] [MW]

0 a 65535

0 a 65534

El nombre del parmetro formal o nombre simblico para el caso de llamar una FC a travs de una FC transferida como parmetro es BLOCK_FC (los parmetros de tipo BLOCK_FC no pueden utilizarse con la operacin CC en mdulos FC). Registros afectados: ninguno Ejemplos: CC FB12 //llamar a FB12 si RLO=1 UC FB12 //llamar a FB12 independientemente del RLO

Versin 22/01/2002

Pg. 57 de 154

10.3. Llamar funciones de sistema integradasInstruccin: "CALL" La operacin CALL puede emplearse tambin para llamar funciones del sistema (SFC) y mdulos de funcin del sistema (SFB) integrados en el sistema operativo S7. Cada SFB o SFC ejecuta una funcin estndar determinada. Por ejemplo, si se desea averiguar al hora actual del sistema se utiliza al siguiente operacin: CALL SFC64 La operacin de llamada CALL solamente puede llamar una SFC o un SFB con direccionamiento directo.

10.4. Funcin Master Control RelayInstrucciones: "MCRA", "MCRD", "MCR(:", ")MCR:" El Master Control Relay (MCR) se emplea para inhibir el funcionamiento de una determinada parte del programa (secuencia de instrucciones que escribe un cero en lugar del valor calculado, o bien no modifican el valor de memoria existente). Las siguientes operaciones dependen del MCR: = S R T (con bytes, palabras o palabras dobles)

Se utiliza en los esquemas de rels para activar y desactivar el flujo de seales. Mcr : Activa o desactiva una parte del circuito segn el estado de seal de MCR (1 bit)

Asignacin: Si desactivo, pongo a 0

Versin 22/01/2002

Pg. 58 de 154

Si el bit de MCR es igual a 1 ON --> Ejecucin normal Si bit MCR=0 Desactivacin, el MCR afecta a las siguientes instrucciones: o o o Asignacin = : Escribe 0. Set y Reset S y R : No escribe. Permanecen en su estado actual. Transferencia T de bytes, palabras y doble palabras: Escribe 0.

Ejemplo:

MCRA U E0.0 MCR( U = U S U R L T E0.1 A4.0 E0.2 A4.1 E0.3 A4.1 MW20 AW10

//Activa el rea MCR //Consulto //Inicia el rea MCR : Si RLO=1 --> MCR ON Si RLO=0 --> MCR OFF //Si MCR OFF --> A4.0=0 sin considerar E0.1 //Si MCR OFF --> Mantiene el valor de A4.1

//Si MCR OFF --> Transfiero 0 a AW10

)MCR MCRD U = E1.0 A5.0

//Finalizo rea MCR //Desactivo rea MCR //Como est fuera del rea MCR no depende del bir MCR

Versin 22/01/2002

Pg. 59 de 154

11. Formatos de representacin de nmerosTenemos 3 formatos de representacin numrica: Binario, Hexadecimal y BCD Tenemos 3 formatos de nmeros: Entero, doble entero y real.

11.1. BinarioRepresenta nmeros naturales mayores o iguales que cero. 0; 01; 10; 11; 100... Lmite 32 bits => 232 1 = 4.294.967.295 Ejemplo:L 2#0110 //Cargo en ACU1 el nmero 7 en formato binario

Rango: Palabra: 2#0 2#1....1 (16 unos) Doble palabra: 2#0 2#1....1 (32 unos)

11.2. HexadecimalEjemplo:L L L B#16#1A //Cargo una constante hexadecimal de 8 bits en ACU1 W#16#FAFB //Cargo una constante hexadecimal de 16 bits en ACU1 DW#16#1FFE_1ABC //Cargo una constante hexadecimal de 32 bits en ACU1

Rango: Byte: B#16#0 B#16#FF

Palabra: W#16#0 W#16#FFFF Doble palabra: DW#16#0 DW#16#FFFFFFFF

11.3. BCDBCD Decimal codificado en binario. Cada 4 bits representan un dgito. Hay 2 formatos de BCD, de 3 cifras y de siete cifras. Palabra (16 bits): BCD de 3 cifras con signo

Versin 22/01/2002

Pg. 60 de 154

Ejemplo: +310 0000 0011 0001 0000 + 3 1 0

signo: 0000 -> positivo 1111 -> negativo Rango: -999 999

Doble palabra (32 bits): 7 cifras con signo. Rango: Lo que cabe en ACU1: 9999999 Ejemplo:L LC LC 2#0000_0011_0001_000 T1 Z1 //Cargo +310 en BCD formato en ACU1 //Cargo el valor de temporizacin de T1 en formato BCD en ACU1 // Cargo el valor del contador Z1 en formato BCD en ACU1

11.4. Nmeros enteros (I)Los nmeros enteros se denominan como I (de Integer). Un nmero entero es un nmero binario de 16 bits que tiene como signo el bit ms significativo. Lmite: N positivos: 215-1 = 32767 (El 0 se considera positivo) N negativos: 215= -32768 Ejemplo:L 1 //Carga el nmero entero 1 en ACU1

15

0

0000 0000 0000 0001 signo 15 bits

N negativo: Se hace el complemento a 2, cambiando ceros por unos y sumando 1. Ejemplo:L -3 //Carga el nmero entero 3 en ACU1

3 = 0000 0000 0011 C1= 1111 1111 1100 +1 = 1111 1111 1101

Versin 22/01/2002

Pg. 61 de 154

El nmero 3 por tanto sera:15 0

1111 1111 1111 1101 signo 15 bits

11.5. Nmeros dobles enteros (D)Los nmeros dobles enteros se denominan como D. Son nmeros binarios de 32 bits.

31

0

1111 1111 1111 1101 signo 32 bits Lmite: N positivos: 231-1 = 2147483647 (El 0 se considera positivo) N negativos: 231 = -21474863648 Ejemplo:L L#-1 //Carga el nmero doble entero -1 en ACU1

byte

11.6. Nmeros reales (R)Los nmeros reales se denominan como R. Son nmeros binarios de 32 bits que constan de 2 partes: Mantisa : los 3 bytes ms altos Exponente : el byte ms alto31 0

1111 1111 1111 1101 signo signo expon. mantisa exponente mantisa

Versin 22/01/2002

Pg. 62 de 154

Se puede expresar de forma exponencial o como quebrados. Ejemplo:L 4.83 //Carga el nmero real 4,83 en ACU1

El editor Step-7 lo pasa automticamente a la forma exponencial:L 4.830000e+000

Se redondea con exactitud hasta el 6 dgito

Ejemplo:L 4780000000.0 = L 4.780000e+010

el punto es obligatorio

Versin 22/01/2002

Pg. 63 de 154

12. Operaciones de comparacin12.1. Realizacin de comparacionesLas operaciones de comparacin sirven para comparar los siguientes pares de valores numricos: Dos enteros (16 bits) Dos enteros dobles (32 bits) Dos nmeros reales (de coma flotante, 32 bits, IEEE-FP) Los valores numricos se cargan en los ACU's 1 y 2. Las operaciones de comparacin comparan el valor del ACU2 con el valor depositado en el ACU1. El resultado de la comparacin es un dgito binario. Un 1 significa que el resultado de la comparacin es verdadero, mientras que un 0 significa que el resultado de la comparacin es faso. Este resultado se encuentra almacenado en el bit de resultado lgico (RLO). Este resultado puede emplearse para su posterior procesamiento. Cuando se ejecuta una comparacin tambin se activan los bits de estado A1 y A0.

12.2. Comparar dos nmeros enterosInstrucciones y descripcin:

Operac in ==I ==D I D >I >D =D = ACU1

ACU2 I = A

1.0

2.0

12.3. Comparar dos nmeros realesInstrucciones y descripcin: Opera cin ==R Comparacin efectuada El nmero de coma flotante de 32 bits IEEE-FP del ACU 2 es igual al nmero de coma flotante de 32 bits IEEE-FP del ACU 1 El nmero de coma flotante de 32 bits IEEE-FP del ACU 2 no es igual al nmero de coma flotante de 32 bits IEEE-FP del ACU 1

R

Versin 22/01/2002

Pg. 65 de 154

>R

El nmero de coma flotante de 32 bits IEEE-FP del ACU 2 es mayor que el nmero de coma flotante de 32 bits IEEE-FP del ACU 1 El nmero de coma flotante de 32 bits IEEE-FP del ACU 2 es menor que el nmero de coma flotante de 32 bits IEEE-FP del ACU 1 El nmero de coma flotante de 32 bits IEEE-FP del ACU 2 es mayor o igual que el nmero de coma flotante de 32 bits IEEE-FP del ACU 1 El nmero de coma flotante de 32 bits IEEE-FP del ACU 2 es menor o igual que el nmero de coma flotante de 32 bits IEEE-FP del ACU 1

=R

=

0

no aplicable

R = MD24 +1.00E+00 //introducimos en el ACU1 la palabra doble de marcas MD24 //introducimos en el ACU1 un valor en coma flotante de 32 bits, el antiguo contenido del ACU1 (MD24) pasa al ACU2 //comparamos el ACU2 para ver si es mayor que el ACU1 //la salida 1.0 se excitar si la condicin es cierta

A

1.0

Versin 22/01/2002

Pg. 66 de 154

12.4. Ejercicios propuestosEjercicio 1 : rea de almacenamientoLa figura muestra un sistema de dos cintas transportadoras con un rea de almacenamiento temporal entre ellas. La cinta 1 lleva paquetes al rea de almacenamiento. Una barrera fotoelctrica situada al final de la cinta 1, junto al rea de almacenamiento, se encarga de determinar cuntos paquetes se han suministrado al rea de almacenamiento. La cinta 2 transporta paquetes desde el rea de almacenamiento temporal a un cargador donde llegan camiones para recoger los paquetes y suministrarlos a los clientes. Una barrera fotoelctrica al final de la cinta transportadora 2, junto al rea de almacenamiento, determina cuntos paquetes salen del rea hacia el cargador. Un panel de cinco lmparas indica el nivel de llenado del rea de almacenamiento temporal.

Versin 22/01/2002

Pg. 67 de 154

13. Marca de cicloUna marca de ciclo es una marca que cambia peridicamente de valor binario.

M100.0

0,5 s

0,5 s CPU Pestaa Ciclo/Marca de ciclo

Se define en las propiedades de la CPU: HW Config Para crear una marca de ciclo : 1. Introducir la direccin del byte de marcas. 2. Activar la casilla de verificacin 3. Guardar y compilar y Cargar en mdulo

Cada bit del byte de marca de ciclo lleva asignada una duracin de periodo / frecuencia en seg: Bit: Duracin del perodo (seg): 7 2 6 1,6 5 1 4 0,8 3 0,5 2 0,4 1 0,2 0 0,1

Ejemplo:U M100.3 = A4.0 //Si defino la marca 100 como marca de ciclo //el led parpadear con una frecuencia de 0,5 seg.

13.1. Ejercicios propuestosEjercicio : Marca de cicloMediante interruptores realizar:

Entradas Salidas E0.0 A4.0 parpadee 2 seg. E0.1 A4.1 parpadee 0,5 seg. A4.0 parpadee 1,6 seg. E0.2 A4.1 parpadee 0,8 seg.

Versin 22/01/2002

Pg. 68 de 154

14. Operaciones aritmticas

14.1. Operaciones aritmticas con enterosPara enteros instrucciones: "+I", "I", "*I", "/I" Para dobles enteros instrucciones: "+D", "D", "*D", "/D" Combinan el contenido de ACU1 y ACU2. El resultado se deposita en ACU1 y el ACU2 permanece inalterado. En el S7-400 despus de la operacin: ACU2 ACU3 ACU4

Son operaciones incondicionales del RLO y no lo afectan.

La instruccin de suma +I, +D suma el contenido de ACU2 con ACU1 y el resultado lo almacena en ACU1. En el caso de sumar dos enteros esta operacin acta sobre las palabras bajas de los acumuladores y el resultado lo almacena en la palabra baja del ACU1. Ejemplo:L L +I 8 9 //ACU2+ACU1 ACU1=17; ACU2=8

La instruccin de resta I, D resta el contenido de ACU2 con ACU1 y el resultado lo almacena en ACU1. Ejemplo:L L I 10 3 //ACU2-ACU1 ACU1=7; ACU2=10

La instruccin de multiplicacin *I, *D multiplica el contenido de ACU2 por ACU1 y el resultado lo almacena en ACU1. Si se multiplican dos enteros el resultado se almacena como doble entero en ACU1. Ejemplo:L L *D L#2 L#100 //ACU2*ACU1 ACU1=200; ACU2=2

Versin 22/01/2002

Pg. 69 de 154

La instruccin de divisin /I, /D divide el contenido de ACU2 entre ACU1 y el resultado se almacena de dos formas distintas segn se multipliquen enteros y dobles enteros: En caso de divisin de enteros el resultado se almacena en ACU1 en forma de dos enteros de 16 bits:ACU1

1111

1111

Resto Palab. alta ACU1

Cociente Palab. baja de ACU1

En caso de dividir dos enteros dobles el cociente se almacena en ACU1 y el resto de la divisin se obtiene realizando la operacin MOD. Ejemplo:L ED10 L MD14 /I T MD20 MOD T MD24

//Almaceno el cociente //Almaceno el resto

14.2. Operaciones aritmticas con nmeros reales

Instrucciones: "+R", "R", "*R", "/R"

La instruccin de suma +R, suma el contenido de ACU2 (32bits) con ACU1 (32bits) y el resultado lo almacena en ACU1 (32 bits). Ejemplo:L L +R 1.0 2.4 //ACU2+ACU1 ACU1=3.4; ACU2=1.0

La instruccin de resta R resta el contenido de ACU2 (32bits) con ACU1 (32bits) y el resultado lo almacena en ACU1 (32 bits). Ejemplo:L L R 25.0 13.4 //ACU2-ACU1 ACU1=11.6; ACU2=25.0

Versin 22/01/2002

Pg. 70 de 154

La instruccin de multiplicacin /R divide el contenido de ACU2 (32bits) entre ACU1 (32bits) y el resultado lo almacena en ACU1 (32 bits). Ejemplo:L L /R 10.0 2.0 //ACU2*ACU1 ACU1=5.0; ACU2=10.0

Instruccin ABS: Valor absoluto de ACU1, y el resultado se deposita en ACU1. Instruccin SQRT: Raz cuadrada de ACU1 (debe ser 0), y el resultado se deposita en ACU1. Instruccin SQR: Cuadrado de ACU1, y el resultado se deposita en ACU1. Instruccin LN: Logaritmo natural de ACU1 (logaritmo con base e), y el resultado se deposita en ACU1. Instruccin EXP: Calcula el exponente (valor exponencial con base e) de ACU1, y el resultado se deposita en ACU1. Instrucciones SIN, COS y TAN: Calculan el seno, coseno o tangente de un ngulo indicado en radianes, y el resultado se deposita en ACU1. Instruccin ASIN : Calcula el arcoseno de ACU1 (entre 1 y 1). El resultado es un ngulo indicado en radianes: -/2 arcoseno(ACU1) /2 Instruccin ACOS : Calcula el arcocoseno de ACU1 (entre 1 y 1). El resultado es un ngulo indicado en radianes: 0 arcocoseno(ACU1) Instruccin ATAN : Calcula el arcotangente de ACU1. El resultado es un ngulo indicado en radianes: /2 arcotangente(ACU1) /2

14.3. Ejercicios propuestosEjercicio : Multiplicacin y divisinCon la entrada E0.5 cargo el valor de EB1 en ACU1. A cada pulso de la entrada E0.0 ir multiplicando ese valor por 2 hasta un mximo de 255. Adems, a cada pulso de la entrada E0.1 podr ir dividiendo ese valor entre 2 hasta un mnimo de 1.

Versin 22/01/2002

Pg. 71 de 154

15. Operaciones de conversinInstrucciones: "BTD", "BTI", "DTB", "DTR","DTR","ITB","ITD","RND","RND+","RND-" y "TRUNC"

Son operaciones incondicionales, no dependen ni afectan el RLO. Se efectan sobre el ACU1, donde tambin se almacena el resultado.

Instruccin BTD : Convierte el nmero BCD de 7 dgitos en doble entero. Valores admisibles: -9999999 9999999 Resultado de la conversin: Bits 0 27 Nm convertido Bits 28 30 No se usan Bit 31 Bit de signo

Instruccin BTI : Convierte el nmero BCD de 3 dgitos de la palabra baja de ACU1 en un entero (16 bits) que se guarda en la palabra baja de ACU1. Valores admisibles: -999 999 Resultado de la conversin: Bits 0 11 Nm convertido Bits 12 14 No se usan Bit 15 Bit de signo

Instruccin DTB : Convierte un entero doble (32 bits) de ACU1 en un BCD de 7 dgitos. Resultado de la conversin: Bits 0 27 N BCD Bits 28 31 Bit de signo: + = 0000 = 1111 Instruccin DTR : Convierte un entero doble (32 bits) de ACU1 en real (32 bits). Si es necesario se redondea el resultado. Un entero de 32 bits es ms exacto que un real.

Versin 22/01/2002

Pg. 72 de 154

Instruccin ITB : Convierte un entero (16 bits) de ACU1 en BCD de 3 dgitos. El resultado lo guarda en la palabra baja del ACU1. Resultado de la conversin: Bits 0 11 N BCD Bits 12 15 Bit de signo: + = 0000 = 1111

Instruccin ITD : Convierte un entero (16 bits) de la palabra baja de ACU1 en doble entero (32 bits).

Observacin: No hay una instruccin que convierta de entero a real. Hay que hacer dos conversiones consecutivas: ITD y DTR.

Instruccin RND : Redondea un nmero real (32 bits) a entero (32 bits). Primero lo convierte y luego lo redondea al entero ms prximo. Si el primer decimal despus de la coma es de 0 a 4, redondea a la baja; si el decimal es de 5 a 9, redondea al alza. Ejemplos: 148.7 148.4 RND = 149 RND = 148

Instruccin RND+ y RND: RND+ redondea el resultado al nmero entero mayor o igual que el real convertido. RND+ redondea el resultado al nmero entero menor o igual que el real convertido. Ejemplos: 148.7 RND+ = 149 RND = 148 RND+ = 149 RND = 148 RND+ = 5 RND = 6

148.4

5.7

Instruccin TRUNC : Convierte un real (32 bits) a doble entero (32 bits) y lo redondea al entero de menor valor absoluto. Ejemplos: 8.34 RND = 8 TRUNC = 8 RND = 9 TRUNC = 8 RND = 9 TRUNC = 8

8.7

8.7

Versin 22/01/2002

Pg. 73 de 154

16. Operaciones de desplazamientoInstrucciones: "SRW", "SLW", "SRD", "SLD", "SSI", "SSD" Desplazan el contenido de ACU1 bit a bit. Son incondicionales, no dependen del RLO. Podemos desplazar, tanto a la derecha como a la izquierda, palabras, doble palabras, enteros y dobles enteros.

16.1. Desplazar palabras A la derecha: SRW Desplaza la palabra baja (bits 0 al 15) de ACU1 n bits (0-15) a la derecha. Los bits vacos se rellenan con cero. Nota: SWR 0 = NOP SRW Desplaza a la dcha. Tantas posiciones segn el n de el byte ms bajo de ACU2. (0255) A la izquierda: SLW Desplaza la palabra baja (bits 0 al 15) de ACU1 n bits (0-15) a la izquierda. Los bits vacos se rellenan con cero. SLW Desplaza a la izda. segn el n de el byte ms bajo de ACU2.

16.2. Desplazar doble palabras A la derecha: SRD Desplaza el contenido de ACU1 n bits (0-32) a la derecha. Los bits vacos se rellenan con cero. SRD Desplaza a la dcha. segn el n de el byte ms bajo de ACU2.

A la izquierda: SLD Desplaza el contenido de ACU1 n bits (0-32) a la izquierda. Los bits vacos se rellenan con cero. SLD Desplaza a la dcha. segn el n de el byte ms bajo de ACU2.

Versin 22/01/2002

Pg. 74 de 154

16.3. Desplazar enteros A la derecha: SSI Desplaza la palabra baja (bits 0 al 15) de ACU1 n bits (0-15) a la derecha. Los bits vacos se rellenan con el bit de signo (el bit 15) Nota: SSI 0 = NOP SSI Desplaza a la dcha. segn el n de el byte ms bajo de ACU2.

16.4. Desplazar dobles enteros A la derecha: SSD Desplaza el contenido de ACU1 n bits (0-31) a la derecha. Los bits vacos se rellenan con el bit de signo (el bit 32) Nota: SSI 0 = NOP SSD Desplaza a la dcha. segn el n de el byte ms bajo de ACU2.

16.5. Ejercicios propuestosEjercicio 1 : Haremos que los leds de la palabra de salida se iluminen consecutivamente durante 0,5 seg desde arriba hacia abajo y viceversa

A4.0

A4.7 A5.0

A5.7

Versin 22/01/2002

Pg. 75 de 154

17. Operaciones

de rotacin

Instrucciones: "RRD", "RLD" Rotan el contenido de ACU1 equis posiciones de bit.

17.1. Rotar palabras dobles A la derecha: RRD Rota el ACU1 n bits (0-32) a la derecha. Los bits que van quedando vacos se llenan con los que salen del ACU1. Nota: RRD 0 = NOP 0 RRD Desplaza a la dcha. segn el n de el byte ms bajo de ACU2 A la izquierda: RLD Rota el ACU1 n bits (0-32) a la izquierda. Los bits que van quedando vacos se llenan con los que salen del ACU1. Nota: RRL 0 = NOP 0 RLD Desplaza a la dcha. segn el n de el byte ms bajo de ACU2 Ejemplo: ACU1 1 0 1 0 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 Despus de RLD 4: ACU1 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 1 0 1 0

17.2. Ejercicios propuestosEjercicio 1 : Hacer lo siguiente: Pulsador E0.1 : Carga el valor a rotar Pulsador E0.0 : Rota un bit a la izquierda.

Versin 22/01/2002

Pg. 76 de 154

18. Bloques del programa de usuarioEl software de programacin STEP 7 permite estructurar el programa de usuario, es decir, subdividirlo en distintas partes. Esto aporta las siguientes ventajas: los programas de gran tamao se pueden programar de forma clara se pueden estandarizar determinadas partes del programa se simplifica la organizacin del programa las modificaciones del programa pueden ejecutarse ms fcilmente se simplifica el test del programa, ya que puede ejecutarse por partes se simplifica la puesta en servicio.

18.1. Tipos de bloques En un programa de usuario S7 se pueden utilizar diversos tipos de bloques:

Bloque Bloques de organizacin (OB) Bloques de funcin del sistema (SFBs) y funciones de sistema (SFCs) Bloques de funcin (FB) Funciones (FC) Bloques de datos de instancia (DBs de instancia) Bloques de datos (DB)

Descripcin breve de la funcin Los OBs definen la estructura del programa de usuario.

Los SFBs y SFCs estn integrados en la CPU S7, permitindole acceder a importantes funciones del sistema.

Los FBs son bloques con "memoria" que puede programar el mismo usuario. Las FCs contienen rutinas de programa para funciones frecuentes. Al llamarse a un FB/SFB, los DBs de instancia se asocian al bloque. Los DBs de instancia se generan automticamente al efectuarse la compilacin. Los DBs son reas de datos para almacenar los datos de usuario. Adicionalmente a los datos asociados a un determinado bloque de funcin, se pueden definir tambin datos globales a los que pueden acceder todos los bloques.

Los OBs, FBs, SFBs, FCs y SFCs contienen partes del programa, por lo que se denominan tambin bloques lgicos. El nmero permitido de bloques de cada tipo y su longitud admisible dependen de la CPU.

Versin 22/01/2002

Pg. 77 de 154

18.2. Mdulos de funcin (FC)OB1 FC1CALL FC1 UC FC1 CC FC1

FC3

CALL FC3

CALL FC2

FC2

Los mdulos de funcin, tambin llamados FC, son mdulos en los que podemos incluir parte del programa de usuario, as obtenemos un programa mucho ms estructurado. A estos mdulos se puede acceder desde el OB1 o cualquier otro FC o FB. En el FC podemos almacenar variables temporales temp, pero se pierden tras el tratamiento del FC. Por ello para memorizar los datos se suelen utilizar bloques de datos globales. Las funciones se pueden utilizar para: devolver un valor de funcin al bloque invocante (ejemplo: funciones matemticas) ejecutar una funcin tecnolgica (ejemplo: control individual con combinacin binaria).

Creacin de un FC : Hacer clic con el botn izquierdo del ratn en la carpeta de Bloques eInsertar nuevo objeto... -> Funcin. Se le puede dar un nombre simblico. Para abrirlo hacer doble clic sobre l. Tiene una tabla de declaracin de variables estndar.

18.3. Tabla de declaracin de variables

En las tabla de declaracin de variables se definen las variables locales, que pueden ser temporales temp y estticas stat (slo FBs) y los parmetros formales de bloque, que pueden ser de entrada in, de salida out o de entrada_salida in_out.

Versin 22/01/2002

Pg. 78 de 154

Parmetros: in: Son valores de entrada al bloque. Pueden ser constantes, direcciones absolutas o simblicas. out: Son valores que devuelve el bloque al programa que lo llam despus de la ejecucin del bloque. Pueden ser direcciones absolutas o simblicas. in_out: Recogen y mandan informacin. . Pueden ser direcciones absolutas o simblicas.

Variables: temp.: Variables o datos locales que se usan dentro del bloque y no salen fuera. Pierden su valor cuando salimos del bloque. stat: Variables que mantienen su valor al salir del mdulo. Los FC no permiten este tipo de variables. Slo para bloques FB.

18.4. Llamadas a bloquesInstrucciones: "CALL", "UC y "CC" CALL llama a funciones FC y FB independientemente del RLO. Una vez procesado el bloque, el programa invocante seguir procesndose. Se puede llamar al bloque de forma absoluta o simblica. Ejemplo:CALL FC1 //Llama a la funcin FC1 de forma incondicional

Se pueden transferir parmetros a una funcin de la siguiente forma: 1. Crear en el FC una Tabla de declaracin de variables, con sus parmetros in, out e in_out segn corresponda. 2. Cuando en el bloque invocante se introduzca la funcin CALL a ese FC, automticamente se crea una tabla de parmetros formales que son cogidos de la tabla de declaracin de variables del FC.CALL FC1 Num de motor:= Velocidad:= Potencia:=

Parmetros formales

3. Hay que asignar a esos parmetros formales los parmetros actuales del bloque invocante.CALL FC1 Num de motor:= MW100 Velocidad:= MW110 Potencia:= A0.1

Parmetros actuales

En el caso de los bloques FC no se puede dejar ningn parmetro actual sin definir.

Versin 22/01/2002

Pg. 79 de 154

La instruccin UC llama incondicionalmente al bloque. Es igual que la funcin CALL, pero no podemos transferir parmetros. Ejemplo:UC FC1 //Llama a la funcin FC1 de forma incondicional

La instruccin CC llama de forma condicional al bloque, en funcin del RLO. No podemos transferir parmetros. Ejemplo:U CC E0.0 FC1 //Llama a la funcin FC1 si E0.0=1

18.5. Ejemplo de funcin FCVamos a crear una funcin matemtica que nos realice la suma de dos nmeros enteros y nos devuelva el resultado. 1. Creamos la funcin FC1, al que podemos darle el nombre simblico de Suma, y rellenamos su tabla de declaracin de variables con dos parmetros de entrada que sern los dos operandos a sumar y un parmetro de salida que ser el resultado de la suma:

En el rea de instrucciones del FC escribimos el programa en AWL:L L +I T #valor1 #valor2 #resultado

El smbolo # significa variable temporal, se pone automticamente. Es importante guardar el bloque FC1.

2. Desde el OB1 llamaremos a la funcin. Al introducir la instruccin CALL automticamente nos crea la tabla de parmetros formales que rellenaremos con los valores que queramos.L 2 L MW20 CALL Suma valor1:= MW20 valor2:= 3 resultado:= MW100

Guardamos el OB1.

Versin 22/01/2002

Pg. 80 de 154

Para terminar hay que transferir al autmata los dos bloques, OB1 y FC1.

Marcando la carpeta Bloques y pinchando en el icono Carga transferimos a la CPU todos los bloques del susodicho programa. Comprobar con Observar/Forzar el valor de MW100.

Versin 22/01/2002

Pg. 81 de 154

18.6. Bloques de datos (DB)Los bloques de datos, tambin llamados DBs, son reas de datos donde se almacenan datos de usuario. Un DB no contiene instrucciones S7. Hay dos tipos de bloques de datos: Bloques de datos globales: A sus datos pueden acceder todos los bloques. Bloques de datos de instancia: Asociados a un bloque de funcin FB.

18.7. Bloque de datos global

OB1

FC1

DB Global

Los DB Globales sirven para depositar datos con los que trabaja el programa de usuario. Estos datos los puede utilizar cualquier tipo de bloque (OB, FC y FB) para leer datos o escribir datos que se conservan an despus de salir del DB. Un DB no tiene rea de instrucciones S7, sino que es una tabla de datos que forma una estructura:

Los datos almacenados estarn comprendidos entre STRUCT y END_STRUCT.

Creacin de un DB : Hacer clic con el botn izquierdo del ratn en la carpeta de Bloques eInsertar nuevo objeto... -> Bloque de datos. Se le puede dar un nombre simblico. Para abrirlo hacer doble clic sobre l. 1. Seleccione el bloque de datos global, es decir, un bloque no asociado a ningn UDT o FB. 2. Active la vista "Declaracin" (en men Ver) del bloque de datos en caso de que sta no se visualice todava. 3. Defina la estructura rellenando la tabla visualizada conforme a los datos que se indican a continuacin:

Versin 22/01/2002

Pg. 82 de 154

Columna Direccin

Explicacin Indica la direccin que STEP 7 asigna automticamente a la variable al terminar de introducir una declaracin.

Designacin Introduzca el nombre que debe asignar a cada variable. Tipo Introduzca el tipo de datos de la variable (BOOL, INT, WORD, ARRAY, etc.). Las variables pueden pertenecer a los tipos de datos simples, a los tipos de datos compuestos, o bien, a los tipos de datos de usuario. Indique el valor inicial, en caso de que el software no deba tomar el valor predeterminado del tipo de datos introducido. Todos los valores introducidos deben ser compatibles con los tipos de datos. Cuando guarde por primera vez el bloque de datos, el valor inicial ser adoptado como valor actual de la variable, a menos que defina expresamente su valor actual. En este campo puede introducir un comentario para documentar la variable. El comentario no debe tener ms de 80 caracteres.

Valor inic.

Comentario

Acceso a los datos de un DB:Hay 2 mtodos: 1) Para acceder a los datos de un DB primero hay que abrirlo. Instruccin: "AUF" Ejemplo:AUF AUF DB1 Datos //Abre el DB1 //Abre el bloque de datos cuyo simblico es Datos

Una vez abierto el DB el acceso a los datos se hace mediante carga (L) y transferencia (T) Se puede consultar un bit de la siguiente forma : U DBXByte.Bit De bloque de datos Ejemplo:U DBX3.1 //Consulta el bit 3.1 del bloque de datos abierto

significa bit

Adems se pueden cargar y transferir bytes, palabras y doble palabras. Ejemplos:L L T L T DBB1 5 DBW4 L#3 DBD2 //Carga en ACU1 el byte 1 del DB abierto //Cargo 5 en ACU1 //y lo transfiero a la palabra 4 del DB abierto //Cargo el doble entero 3 //y lo transfiero a la doble palabra 2 del DB abierto

Versin 22/01/2002

Pg. 83 de 154

No existe ninguna instruccin para cerrar un DB, slo se cierra abriendo otro DB. Ejemplo:AUF L AUF T DB5 DBW8 DB7 DBW6 //Abro DB5 //Carga en ACU1 la palabra 8 del DB5 //Abro DB5 //Transfiero el contenido de ACU1 a la palabra 6 del DB7

2) La forma ms sencilla de acceder a los datos de un DB es indicando en la misma instruccin el nmero del DB. En este caso no es necesario abrir el DB con la instruccin AUF. Ejemplo:U L L L L DB1.DBX3.0 DB1.DBB7 DB2.DBW4 DB1.DBD4 Datos.Dato //Consulto //Carga en //Carga la //Cargo la //Cargo la el bit 3.0 del DB1 ACU1 el byte 7 del DB1 palabra 4 del DB2 doble palabra 4 del DB1 variable Dato del DB llamado Datos

18.8. Ejemplo de bloque de datos globalVamos a crear una funcin matemtica que nos realice la multiplicacin de dos nmeros enteros y nos devuelva el resultado. Todos los datos van a estar almacenados en un DB Global. 1. Creamos un DB y le damos el valor simblico Datos. Lo seleccionamos como no asociado a ningn bloque, es decir, global.

2. El siguiente paso es declarar los datos. Para ello vamos al men Ver y marcamos Declaracin. Definimos la estructura rellenando la tabla:

El valor inicial es valor predeterminado del tipo de variable que el programa usar si no hemos definido nosotros ningn valor actual.

Versin 22/01/2002

Pg. 84 de 154

Para definir los valores actuales vamos a men Ver y marcamos Datos. Los valores actuales son en realidad los que estn almacenados en el DB y que podemos leer mediante la instruccin L de carga y escribir mediante la instruccin T de transferencia.

A la variable valor1 le damos valor actual 2. Si a la variable valor2 no le damos valor actual alguno, al guardar el DB el valor inicial se transferir al actual, o sea, 3. Guardamos el DB.

3. En el OB1 escribimos el programaL L *I T Datos.valor2 Datos.valor1 Datos.resultado

Transferimos los dos bloques, OB1 y DB1 al autmata. Para ver el valor del resultado ir a Observar/Forzar

18.9. Formato de datos en los DBDatos simples: BOOL : 0 (FALSE) 1 (TRUE) BYTE: Formato: B#16#3F No permite introducirlo de la forma: 2#10010001 WORD: W#16#AF Permite introducirlo de la forma 2#1001..., pero lo traduce a W#16#.. DWORD: DW#16#FFFFAF2D Permite introducirlo de la forma 2#1001..., pero lo traduce a W#16#.. INT: Nmeros entre-32768 y 32767 DINT: Nmeros entre 32768 y 2147483647 y entre 32769 y 2147483648 Tambin se pueden introducir de la forma: L#5, L#-10 REAL: Nmero Entre 1 (1.000000e+000) S5TIME: Mx: S5T#9990S TIME: Mx: T#24D20H31H23S647MS

Versin 22/01/2002

Pg. 85 de 154

DATE: D2000-1-24 (Mx: D#2168-12-31) TIME_OF_DAY: Mx: TOD#23:59:59.999 CHAR: Formato: C Slo un carcter que ocupa 1 byte

Datos compuestos: DATE_AND_TIME: DT#00-11-21-23:59:59.999 STRING[N de caracteres]: Cadena de caracteres entre comillas: Siemens STRING[7] El mximo de caracteres es 254 ARRAY: Matrices STRUCT: Es una estructura dentro del DB. Sirve para agrupar conjuntos de datos de distinto tipo, simples o complejos. Empieza en STRUCT y acaba en END_STRUCT. Se pueden anidar hasta 8 subestructuras.

Ejemplo:

Ejemplos de acceso a los datos:L T L Datos.Ficha.Nombre Datos.Ficha.telefono.fijo DB5.DB8.DW0 //accede a Datos.Ficha.telefono.fijo

Versin 22/01/2002

Pg. 86 de 154

18.10. Bloques de funcin (FB)Los bloques de funcin FB son bloques programables. Un FB es un bloque "con memoria". Dispone de un bloque de datos DB asignado como memoria (bloque de datos de instancia). Los parmetros que se transfieren al FB, as como las variables estticas stat, se memorizan en el DB de instancia. Las variables temporales se memorizan en la pila de datos locales. Los datos memorizados en el DB de instancia no se pierden al concluir el tratamiento del FB. Los datos memorizados en la pila de datos locales se pierden al concluir el tratamiento del FB. OB1 FB1CALL FB1,DB1

DB1

Creacin de un FB :1. Hacer clic con el botn izquierdo del ratn en la carpeta de Bloques e Insertar nuevo objeto... -> Bloque de funcin. Se le puede dar un nombre simblico. Rellenar su tabla de declaracin de variables (vase captulo 16.3) 2. Crear un bloque de datos DB y asignarlo como bloque de datos de instancia a ese FB:

Al asociar el DB a ese FB, el DB ser una tabla de variables copia exacta de la tabla de declaracin de variables del FB.

Versin 22/01/2002

Pg. 87 de 154

18.11. Llamada al FBInstruccin: "CALL FBn ,DBn CALL FBn , DBn llama al FB independientemente del RLO. Hay que asignarle un bloque de datos de instancia. Una vez procesado el FB invocado, el programa del bloque invocante seguir siendo procesado. Ejemplo:CALL FB1,DB1 //Llama al bloque de funcin FB1 de forma incondicional

Se pueden intercambiar datos con el bloque FB: 4. Crear en el FB una Tabla de declaracin de variables, con sus parmetros in, out e in_out segn corresponda. 5. Cuando en el bloque invocante se introduzca la funcin CALL FBn,DBn, automticamente se crea una tabla de parmetros formales que son cogidos de la tabla de declaracin de variables del FB.CALL FB1,DB1 Num de motor:= Velocidad:= Potencia:=

Parmetros formales

6. Hay que asignar a esos parmetros formales los parmetros actuales del bloque invocante.CALL FB1,DB1 Num de motor:= MW100 Velocidad:= MW110 Potencia:= A0.1

Parmetros actuales

Observaciones: Si se llama varias veces al FB, slo hay que introducir los parmetros actuales que han cambiado respecto a la ltima llamada, ya que estos se han guardado en el DB de instancia una vez procesado el FB. Si el parmetro actual es un DB, se debe indicar siempre la direccin absoluta completa. Asignacin de parmetros actuales a los parmetros formales de un FB: o o Si al FB se le indican los parmetros actuales en la instruccin de llamada, las operaciones del FB utilizan estos. Si en la instruccin de llamada no se indica ningn parmetro actual, el FB utiliza los valores memorizados en el DB de instancia. A su vez pueden ser los valores iniciales declarados en el FB (excepto los temporales).

Versin 22/01/2002

Pg. 88 de 154

18.12. Multiinstancia : Un DB de instancia para cada instancia

Un mismo DB puede estar asociado a varios DBs, a estos DBs se les llama instancias, y cada una de esas instancias contiene distintos datos; dependiendo de cmo se llame al FB ste utilizar un DB u otro. Por ejemplo, si se asignan varios bloques de datos de instancia aun bloque de funcin FB que controle un motor, se puede utilizar el mismo FB para controlar varios motores. OB1 FB1 DB1 DB2 DB3 Aqu estarn los datos del motor 1 como variable stat o in Aqu estarn los datos del motor 2 como variable stat o in Aqu estarn los datos del motor 3 como variable stat o in

Dependiendo de cmo se llame al FB1:CALL FB1,DB1 CALL FB1,DB2 CALL FB1,DB3

Utiliza los datos del motor 1 Utiliza los datos del motor 2 Utiliza los datos del motor 3

Ejemplo: Dependiendo de si es motor 1 (E0.0) o motor 2 (E0.1) activamos ese motor (con E0.2) un tiempo de 2 seg. o 5 seg. respectivamente. Primero creamos un FB1. Y en su tabla de declaracin de variables declaro la variable tiempocomo parmetro tipo in o stat:

En el rea de cdigo del FB1:U L SV U = E0.2 #tiempo T0 T0 A4.0

Ahora es el momento de crear el DB asociado al FB: despus de definir las variables en la tabla de declaracin de variables del FB. Creamos pues un DB1 asociado al FB1. Al abrir el DB1 vemos que contiene la variable tiempo, en la cual introducimos el valor actual de tiempo para el motor 1 (men Ver Datos):

Versin 22/01/2002

Pg. 89 de 154

Por el momento no creamos el DB2.

En el OB1 escribimos el siguiente cdigo:

U SPB U SPB BEA

E0.0 mot1 E0.1 mot2

mot1: CALL FB1, DB1 BEA mot2: CALL FB1, DB2 BEA //Como el DB2 no existe, al introducir la llamada,

automticamente el programa nos pregunta si queremos crearlo. En el DB2 introduzco el valor actual de tiempo para el motor2.

Versin 22/01/2002

Pg. 90 de 154

18.13. Multiinstancia : Un DB de instancia para varias instancias de un FB

En el caso anterior si tuviramos 100 motores, habra que hacer 100 instancias = 100 DBs de instancia. Esto consume mucha memoria en el autmata. A un FB se pueden transferir conjuntamente en un DB de instancia los datos de instancia para diferentes motores. A tal efecto, la llamada de los controles de motores se ha de efectuar en otro FB y en el rea de declaracin del FB invocante se deben declarar las variables estticas con el tipo de datos de un FB para las diferentes instancias. Utilizando un DB de instancia para varias instancias de un FB se ahorra capacidad de memoria y optimiza el uso de los bloques de datos. OB1 FB1 DB1

Aqu tengo almacenados los valores de tiempo de todos los motores: motor1.tiempo,motor2.tiempo, ... motor100.tiempo

CALL FB1, DB1

CALL motor1 CALL motor2 CALL motor3 . . . CALL motor100

Aqu declaro cada motor como variable esttica de tipo de datos compuesto FB. Hago las llamadas a cada motor Aqu realizo la funcin para el control del motor. Declaro la variable tiempo. No necesita DB propio, ya que los valores de tiempo para cada uno de los motores se memorizan en el DB de instancia del FB invocante

FB2

Versin 22/01/2002

Pg. 91 de 154

18.14. Ejercicio propuesto

El programa consiste en un mezclador de repostera . Hay una vlvula para introducir leche (A4.0) y otra para introducir harina (A4.1); la mezcla se agita mediante una paleta accionada por un motor (A4.2). Dependiendo de los tiempos de introduccin de los ingredientes y de funcionamiento de la paleta, podremos hacer tres diferentes productos segn la tabla siguiente:

Leche A4.0 Magdalenas Bizcochos Rosquillas 5 seg 2 seg 3 seg

Harina A4.1 2 seg 3 seg 4 seg

Agitador A4.2 4 seg 5 seg 2 seg

A 4.0 Leche

A 4.1 Harina Pulsador para Magdalenas (E0.1) Pulsador para Bizcochos (E0.2) Pulsador para Rosquillas (E0.3) A 4.2Pulsador activacin de proceso (E0.4)

Realizar el automatismo de una manera estructurada:

1) Usando FCs 2) Usando un DB global 3) Usando FBs con DBs de instancia 4) Usando DB de multiinstancia

Versin 22/01/2002

Pg. 92 de 154

19. Tratamiento de seales analgicasEntradas analgicas: Se leen directamente de la periferia (PEW), no de la PAE. Salidas analgicas: Se escriben directamente en la periferia, no en la PAA.

Seal digital

Seal analgica

5V

E0.0

300 100

0V

19.1. Entrada analgicaUna entrada analgica es una seal de entrada que tiene una seal continua (ininterrumpida). Las entradas analgicas tpicas varan de 0 a 20 mA 4 a 20 mA, o de 0 a 10 V. En el ejemplo siguiente, un medidor de nivel de 4 a 20mA monitoriza el nivel de liquido en un tanque. Rango de medida 0 a 1000 litros. Dependiendo del medidor de nivel, la seal al autmata puede incrementarse o reducirse en la misma medida que el nivel se incremente o disminuya.

El autmata incorpora un convertidor analgico digital (A/D), en cada ciclo muestrea un valor y despus lo traduce a bit. Cuantos ms bits, ms definicin y precisin.20 mA (1000 l)

4 mA (0 l) t

Estos valores van a ser un nmero entero, con la siguiente resolucin mxima: 216 = 65536 unipolar -32767 a +32767 bipolar

Versin 22/01/2002

Pg. 93 de 154

Para un mdulo de entradas de 12 bits la resolucin ser: 212 = 4096. Pero nosotros veremos X cantidad de resolucin, dependiendo de la tarjeta analgica. Tarjeta 8 bits= 28 =256 de resolucin x 128 =32768 cantidad de resolucin Tarjeta 12 bits= 212 =4096 de resolucin x 8 =32768 cantidad de resolucin La resolucin en la prctica es 27648. As, y en el ejemplo, con 0 litros obtendr el entero 0, con 500 litros obtendr 13824, y con 1000 litros obtendr 27648. Despus escala esos valores y los convierte en un nmero real.

1000.0

00

Medidor de nivel

A/D

registro 0 27648

Escalado

Programa

Autmata

19.2. Salida analgicaUna salida analgica es una seal de salida que tiene una seal continua. La salida puede ser algo tan simple como un tensin de 0-10 VCC que acciona un aparato de medida analgico. El tratamiento se hace mediante un convertidor digital-analgico (D/A)

Programa

Desescalado

registro 0 27648

D/A Autmata

Transductor

19.3. Direccionamiento seales analgicasLa CPU accede directamente a las entradas y salidas de mdulos de entradas/salidas analgicas. Direccionamiento de periferia (acceso directo): Las entradas y salidas disponen de su propia rea de direcciones. La direccin de un canal de entrada o salida analgico es siempre una direccin de palabra. La direccin de canal depende siempre de la direccin inicial del mdulo.

Versin 22/01/2002

Pg. 94 de 154

ENTRADAS EXTERNAS: Byte de entrada de la periferia Palabra de entrada de la periferia Palabra doble de entrada de la periferia SALIDAS EXTERNAS: Byte de salida de la periferia Palabra de salida de la periferia Palabra doble de salida de la periferia PAB 0 a 65535 PAW 0 a 65534 PAD 0 a 65532 PEB 0 a 65535 PEW 0 a 65534 PED 0 a 65532

Si p.ej. el primer mdulo analgico est enchufado en el slot 4, tiene la direccin inicial prefijada 256. La direccin inicial de cada mdulo analgico aadido se incrementa en 16 por cada slot. Un mdulo de entrada/salida analgica tiene las mismas direcciones iniciales para los canales de entrada y salida analgicos.Ejemplo para mdulos analgicos:

19.4. Funcin de escalado de entradas analgicas (FC105)Funcin: FC105 SCALE Est funcin se inserta: Men Insertar Elementos de programa --> Libreras --> Standard Library --> TI-S7 Converting Blocks --> FC105CALL "SCALE" IN := HI_LIM := LO_LIM := BIPOLAR:= RET_VAL:= OUT :=

La funcin toma un valor entero a la entrada IN y lo convierte a un valor real, convirtindolo a escala entre un rango comprendido entre un lmite inferior y un lmite superior (LO_LIM y HI_LIM). El resultado se escribe en la salida (OUT). Versin 22/01/2002 Pg. 95 de 154

Formula:

OUT =

(IN K1) x (HI _ LIM LO _ LIM ) + LO _ LIMK1 K 2

donde K1, K2: Bipolar: Se supone que el valor entero de entrada deber estar entre K1= 27648 y K2= 27648. Unipolar: K1=0 y K2=27648

Por ejemplo, cuntos litros se corresponden con el valor interno de tarjeta de 10000?

HI_LIM = 1000 l OUT = Litros LO_LIM = 0 l

K2 = 27648 IN = 10000 K1 = 0

Litros =

(10000 0) x (1000 0) + 0 = 361'68 l27648 0

Parmetros de la funcin SCALE (FC105): Parmetros de entrada: IN (INT) : Valor de entrada a escalar en valor real HI_LIM (REAL) : Lmite superior del rango de escala LO_LIM (REAL) : Lmite inferior del rango de escala BIPOLAR (BOOL) : 1 para entrada bipolar, 0 para entrada unipolar Parmetros de salida: OUT (REAL) : Resultado de la conversin a escala RET_VAL (WORD) : Cdigo de retorno. Si devuelve el cdigo W#16#0000 es que no se han producido errores. Para otros cdigos vase la ayuda.

Observaciones: Los nmeros reales (32 bits) se introducen con el formato correspondiente. Ej.: 10.0 La OUT al ser un nmero real se deber guardar como doble palabra. Ej.: MD100

Versin 22/01/2002

Pg. 96 de 154

19.5. Funcin de desescalado de salidas analgicas (FC106)Funcin: FC106 UNSCALECALL "UNSCALE" IN := HI_LIM := LO_LIM := BIPOLAR:= RET_VAL:= OUT :=

La funcin toma en la entrada IN un valor real que est ajustado a escala entre un rango comprendido entre un lmite inferior y un lmite superior (LO_LIM y HI_LIM), y lo convierte a un valor entero. El resultado se escribe en la salida (OUT). Formula:OUT =

(IN LO _ LIM ) x (K 2 K1) + K1 (HI _ LIM LO _ LIM )

donde K1, K2: Bipolar: K1= 27648 y K2= 27648. Unipolar: K1=0 y K2=27648

Parmetros de la funcin UNSCALE (FC106): Parmetros de entrada: IN (REAL) : Valor de entrada a desescalar, convirtindolo en un valor entero HI_LIM (REAL) : Lmite superior del rango de escala LO_LIM (REAL) : Lmite inferior del rango de escala BIPOLAR (BOOL) : 1 para entrada bipolar, 0 para entrada unipolar Parmetros de salida: OUT (INT) : Resultado del desescalado RET_VAL (WORD) : Cdigo de retorno. Si devuelve el cdigo W#16#0000 es que no se han producido errores. Para otros cdigos vase la ayuda.

Versin 22/01/2002

Pg. 97 de 154

19.6. Parmetros de las tarjetas analgicasPara configurar los parmetros de las tarjetas analgicas, ir al HW Config y hacer doble clic sobre la tarjeta.

Parmetros: Habilitar :

"Alarma de diagnstico" : Si est activada y se presenta un evento de diagnstico, el mdulo desencadena una alarma de diagnstico (OB80), que se produce por: Error de configuracin / parametrizacin Error de modo comn Rotura de hilo (Requisito: La comprobacin de la rotura de hilo est activada) Rebase por defecto del margen de medida Margen de medida rebasado Falta tensin de carga L+ Alarma de proceso al rebasar lmites : Cuando el valor de entrada sale del margen limitado por "Lmite superior" y "Lmite inferior", entonces el mdulo dispara una alarma de proceso (=alarma de lmite). Alarma de proceso al final del ciclo : Un ciclo abarca la conversin de los valores medidos en todos los canales de entrada activos en el mdulo con entradas analgicas. El mdulo procesa los canales uno tras otro. Tras la conversin de valores medidos, el mdulo notifica que todos los canales presentan valores de medicin nuevos a la CPU mediante una alarma de proceso (=alarma fin de ciclo). Se puede utilizar la alarma de proceso para cargar continuamente los valores analgicos actuales convertidos. Para reducir el tiempo de ciclo desactive los canales que no utilice. Versin 22/01/2002 Pg. 98 de 154

"Diagnstico colectivo : Si est activado y se produce un evento de diagnstico, entonces se introduce una informacin al respecto en el rea de datos de diagnstico del mdulo. Regla: si hay un grupo de canales que no est conectado, seleccione "desactivado". Entonces se actualizarn a intervalos ms breves los dems valores de entrada. Tipo : Haga clic en este campo para hacerse mostrar los tipos de medicin disponibles (tensin, intensidad...) y elegir uno de ellos. Margen : Haga clic en este campo para hacerse mostrar los mrgenes de medida disponibles para el respectivo tipo de medicin y elija uno de ellos.

19.7. Ejercicios propuestosEjercicio 1: Detector de humo

Cuando la seal del detector de humo, para nosotros la entrada del potencimetro del entrenador (rango 0 10V), sea mayor de 5V, activar la seal de alarma A4.0.

Ejercicio 2: Contador analgico

Realizar un contador analgico de 0 a 27 pasos que se visualice en el voltmetro de 0 a 10V.

10V

0

27

t

Ejercicio 2: Onda diente de sierra

Simular una salida analgica en diente de sierra, pero utilizando instrucciones digitales (no entradas analgicas).

10V

0 4 seg.

t

Versin 22/01/2002

Pg. 99 de 154

20. Eventos de alarma y error asncronoLa serie Simatic S7 dispone de la capacidad de poder interrumpir el programa de usuario para poder atender de forma inmediata o retardada a un determinado evento. Las respuestas a las alarmas se deben programar, para definir los mdulos OB a los cuales se saltar cuando se produzcan. Se puede definir la prioridad de las alarmas, dando un orden de preferencia en la respuesta de las mismas, lo cual es imprescindible en aquellas situaciones en que se presenten varias alarmas. Tambin se puede bloquear el tratamiento de las alarmas y eventos de error, aunque no puede ser desactivado por la llamada de una FC estndar, si esta FC estndar incluye tambin los citados eventos que se habilitan nuevamente. Para la programacin de los eventos de alarma y error asncrono se emplean las SFC 39 a 42 (ver Manual STEP7 Diseo de programas). Las alarmas estn subdivididas en diferentes clases. La siguiente tabla contiene todas las clases de alarmas y sus OB correspondientes:Clase de alarma OB

Alarmas horarias Alarmas de retardo Alarmas cclicas Alarmas de proceso Alarmas de comunicacin Alarmas de error asncrono

OB 10 a OB 17 OB 20 a OB 23 OB 30 a OB 38 OB 40 a OB 47 OB 50 y OB 51 OB 80 a OB 87 (siguiente tabla) OB 121 y OB 122 El tratamiento de las alarmas de error asncrono se enmascara o desenmascara con las SFC 36 a 38.

Alarmas de error sncrono

La siguiente tabla contiene los eventos de error asncrono, a los cuales se puede reaccionar llamando el OB correspondiente en el programa de usuario.Eventos de error asncrono OB

Error de tiempo (ej. sobrepasar el tiempo de ciclo) Fallo de la alimentacin (ej. pila agotada) Alarma de diagnstico (ej. fusible defectuoso en un mdulo de seales) Fallo de insercin del mdulo (ej. mdulo sacado o mal insertado) Error de hardware de la CPU (ej. cartucho de memoria sacado)

OB 80 OB 81 OB 82 OB 83 OB 84

Versin 22/01/2002

Pg. 100 de 154

Error de proceso del programa (ej. OB no fue cargado) Ha fallado toda la fila Error de comunicacin (ej. error de datos globales) Dependiendo de la CPU se dispondr de unos determinados mdulos OB accesibles. Por ejemplo, en la CPU 314 IFM disponemos de:OB OB OB OB OB 1 35 10 40 100 ciclo libre control por tiempo control en tiempo real interrupcin (alarma) recomienzo

OB 85 OB 86 OB 87

20.1. Mdulo de arranque OB100Mdulos de arranque dependiendo de CPU y tipo de arranque: OB100, OB101, OB102 Se ejecuta al producirse un arranque de la CPU. Un arranque se produce cuando: Despus de que se conecta la alimentacin ON. Si se cambia la llave de STOP a RUN

En estos casos el OB100 slo se ejecutar una vez, un ciclo, y despus se ejecuta el OB1 cclicamente. El OB100 nos puede ser til para inicializar