Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual Programacion Simatic s7 300
Manual Programacion Simatic s7 300
E C S7 IC TI AT N SI MA EN IM
Versin 22/01/2002
Pg. 1 de 154
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. Distribucin
Este 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. Objetivos
Con 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. PLCs
Los 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.
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
Siemens fabrica varios lneas de autmatas de la familia SIMATIC S7. Son: S7-200, S7-300, y S7-400.
S7-200
Al 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
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 numeracin
Dado 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
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.
Versin 22/01/2002
Pg. 16 de 154
3.6. BCD
El 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. Hexadecimal
El 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
Versin 22/01/2002
Pg. 19 de 154
4. Sistemas de numeracin
4.1. Estructura de la memoria en Simatic S7
La 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
OB de error y alarma: son los que contienen la secuencia de acciones a realizar en caso de que se produzca una alarma o error programado (ver 4.6). OB de arranque: en este mdulo podemos introducir valores por defecto que permiten el arranque definido a la instalacin, bien en un arranque inicial o tras un fallo en la alimentacin.
Mdulos de cdigo (FC) Son mdulos en los que podemos incluir parte del programa de usuario con lo que obtenemos un programa mucho ms estructurado. A estos mdulos se pueden acceder desde otro mdulo FC o desde un mdulo OB. Mdulos de funciones (FB) Son mdulos de programa especiales. Aqu se introducen las partes de programa que aparecen con frecuencia o poseen gran complejidad. Posee una zona de memoria asignada para guardar variables (mdulo de datos de instancia). Lo que se hace es enviar parmetros al FB y guardar algunos de los datos locales en el mdulo de datos de instancia. Mdulos de datos(DB) Son reas de memoria destinadas a contener datos del programa de usuario. Existen mdulos de datos globales y de instancia. A los datos contenidos en un mdulo de datos es posible acceder de forma absoluta o simblica. Los datos complejos o compuestos pueden depositarse en forma de estructura. Los mdulos de datos pueden ser de dos tipos: Mdulos de datos globales: se pueden utilizar por cualquier mdulo del programa. Mdulos de datos de instancia: se asignan a un determinado modulo de funcin y solo pueden manejarse desde dicho mdulo. Pueden asignarse varios mdulos de datos de instancia a un mdulo de funcin. Versin 22/01/2002 Pg. 21 de 154
Mdulos de funciones especiales (SFB) Se tratan de mdulos ya programados, los cuales estn preparados para realizar acciones complejas como regulacin PID (lazo cerrado), medida de frecuencia, etc... Mdulos de funciones del sistema (SFC) Son funciones integradas en el sistema operativo de la CPU y que se pueden llamar en caso de necesidad desde el programa de usuario.
Cada uno de estos tipos se pueden direccionar en 4 posibles modos (salvo T y Z): Por defecto (X para DB): Bit. B: byte (8 bits). W: palabra (16 bits). D: palabra doble (32 bits).
Versin 22/01/2002
Pg. 22 de 154
ENTRADAS EXTERNAS:
Byte de entrada de la periferia Palabra de entrada de la periferia Palabra doble de entrada de la periferia PEB PEW PED 0 a 65535 0 a 65534 0 a 65532
SALIDAS EXTERNAS:
Byte de salida de la periferia Palabra de salida de la periferia Palabra doble de salida de la periferia PAB PAW PAD 0 a 65535 0 a 65534 0 a 65532
Todas estas entradas y salidas pueden ser de tres tipos: E/S digitales: son las e/s ms frecuentes y que en mayor cantidad vamos a tener. Ocupan 4 bytes de memoria de direcciones, comenzando desde la 0.0 hasta la 127.7. E/S digitales de alarma/error: no son e/s adicionales, se configuran dentro de Step7 y ocupan una de las e/s digitales normales. E/S analgicas: estas si son e/s adicionales, pero no obstante hay que configurarlas tambin desde Step7 para especificar el rango de direcciones que van a ocupar. Ocupan 2 bytes de memoria de e/s (16 bytes por mdulo) y se sitan en el rango de direcciones 256 a 383.
4.6. Registros
Todas las CPU Simatic S7 disponen de una serie de registros que se emplean durante la ejecucin del programa de usuario. No vamos a comentar todos ellos, slo los que realmente empleemos en la programacin: Acumuladores (ACU1 y ACU2) El acumulador 1 (ACU 1) y el acumulador 2 (ACU 2) son dos registros universales de 32 bits que se emplean para procesar bytes, palabras y palabras dobles. En estos acumuladores se pueden cargar constantes o valores depositados en la memoria como operandos y ejecutar operaciones lgicas con ellos. Tambin es posible transferir el resultado en ACU 1 a una direccin (un mdulo de datos, una salida, etc.). Cada acumulador puede descomponerse en dos palabras de 16 bits (palabra baja y alta). La palabra baja contiene los bits de menor peso y la alta los de mayor peso lgico.
Versin 22/01/2002
Pg. 23 de 154
Todas las posibles operaciones que pueden realizarse son: Cargar: que siempre acta sobre ACU 1 y guarda el antiguo contenido en ACU 2 (perdindose el valor antiguo de ACU 2). La carga de una palabra acta sobre la palabra baja del ACU 1. Transferir: copia el contenido de ACU 1 en una direccin de memoria, sin perder el valor de los acumuladores. Intercambiar el contenido de los acumuladores: mediante la instruccin TAK. Realizar una operacin entre los acumuladores, almacenando el resultado en ACU 1 sin variar ACU 2. Las operaciones pueden ser de comparacin, de lgica digital y de aritmtica.
Palabra de estado Es un registro de 16 bits que contiene algunos bits a los que puede accederse en el operando de operaciones lgicas de bits y de palabras. Solo nos sern de utilidad los 9 primeros bits, estando reservados el uso de los 7 ltimos. A continuacin pasaremos a describir cada bit: BIT 0 (ER): 0 indica que la siguiente lnea se ejecuta como nueva consulta (inhibida). En este estado la consulta se almacena directamente en RLO (ver 4.1). BIT 1 (RLO): resultado lgico. Aqu se realizan las operaciones a nivel de bit (como AND, OR, etc.). BIT 2 (STA): bit de estado. Solo sirve en el test de programa. BIT 3 (OR): se requiere para el proceso Y delante de O. Este bit indica que una operacin Y ha dado valor 1, en las restantes operaciones es 0. BIT 4 (OV): bit de desbordamiento. Se activa (1) por una operacin aritmtica o de comparacin de coma flotante tras producirse un error (desbordamiento, operacin no admisible, o relacin incorrecta). BIT 5 (OS): bit de desbordamiento memorizado. Se activa junto con OV e indica que previamente se ha producido un error. Solo puede cambiar a cero con la instruccin SPS, una operacin de llamada a mdulo, o porque se ha alcanzado el fin del mdulo. BITS 6 (A0) y 7 (A1): cdigos de condicin. Dan informacin sobre los resultados o bits siguientes: - resultado de una operacin aritmtica. - resultado de una comparacin. - resultado de una operacin digital. - bits desplazados por una instruccin de desplazamiento o rotacin. BIT 8 (RB): resultado binario. Permite interpretar el resultado de una operacin de palabras como resultado binario e integrarlo en la cadena de combinaciones lgicas binarias.
Versin 22/01/2002
Pg. 24 de 154
Registros 1 y 2 de direcciones Son dos registros de 32 bits cada uno. Se emplean como punteros en operaciones que utilizan un direccionamiento indirecto de registros. Pila de parntesis Aqu se almacenan los bits RB, RLO y OR, adems del cdigo de funcin que especifica que instruccin lgica ha abierto el parntesis. Tiene un tamao de 8 bytes (mximo anidamiento). Pila Master Control Relay (MCR) Almacena los bits que indican si se opera dentro de un rea MCR. Para el caso de emplear saltos guarda los datos en una pila (8 niveles).
Para la utilizacin de los temporizadores vamos a disponer de una serie de instrucciones que nos permitirn emplear los temporizadores de distintas formas para adecuarnos a nuestras necesidades, tal y como veremos en captulos posteriores. Vamos a disponer de 256 temporizadores, los cuales direccionaremos como: T 0 a T 255
CONTADORES (Z): Al igual que los temporizadores vamos a disponer de una serie de contadores que nos permitirn efectuar contajes, tanto hacia adelante como hacia atrs. Tambin vamos a emplear una serie de instrucciones que permitirn manejarlos, las cuales se vern en siguientes captulos. Disponemos de 256 contadores, los cuales podemos direccionar como: Z 0 a Z 255
Versin 22/01/2002
Pg. 25 de 154
5. Programacin en AWL
5.1. Tratamiento de los resultados
Dependiendo del tipo de operando que empleemos, se har uso de uno o varios de los siguientes registros: Bit de resultado lgico (RLO): aqu se almacena el resultado de operaciones lgicas a nivel de bit y primera consulta. Acumuladores (ACU 1 y ACU 2): aqu se almacenan los operandos y resultados de operaciones lgicas a nivel de byte, palabra, y doble palabra.
Un operando del tipo bit sera una entrada o salida digital, por ejemplo. Un operando del tipo byte o superior sera la lectura de una entrada analgica, por ejemplo.
5.3. ASIGNACION
Instruccin "=" Se copia el contenido del RLO al operando especificado, sin perder el contenido del RLO. Posibles operandos: E, A, M, DBX, DIX, L Registros afectados: ER, STA
ej. = E 2.0 //copia el RLO a la entrada E 2.0
Esquema elctrico: +24V E0.0 A4.0 Contacto normalmente abierto +24V E0.0 A4.0 Contacto normalmente cerrado
Versin 22/01/2002
Pg. 26 de 154
E0.0
E0.1 A4.0
Instruccin "U" Realiza la funcin lgica AND entre el RLO y el operando especificado, almacenando el resultado en RLO (se pierde el valor anterior). Se puede operar con el negado del operando si se adjunta "N" (UN). Posibles operandos: E, A, M, DBX, DIX, L, T, Z Registros afectados: RLO, STA
ej. U E ej. UN A negada 0.0 1.2 //realiza un AND entre el RLO y la entrada E 0.0 //realiza un AND entre el RLO y la salida A 1.2
A4.0
Instruccin "O" Realiza la funcin lgica OR entre el RLO y el operando especificado, almacenando el resultado en RLO (se pierde el valor anterior). Se puede operar con el negado del operando si se adjunta "N" (ON). Versin 22/01/2002 Pg. 27 de 154
ej. ON M
5.0
E0.1
E0.1
A4.0
Instruccin "X" Realiza la funcin lgica XOR entre el RLO y el operando especificado, almacenando el resultado en RLO (se pierde el valor anterior). Se puede operar con el negado del operando si se adjunta "N" (XN). Posibles operandos: E, A, M, DBX, DIX, L, T, Z Registros afectados: RLO, STA
ej. X Z ej. XN A 0 1.0 //realiza un XOR entre el RLO y el estado del contador Z 0 //realiza un XOR entre el RLO y la salida A 1.0 negada
Veamos los pasos que sigue el programa en este ejemplo: Efecta un AND en primera consulta, con lo que el resultado de las operaciones dentro del parntesis se introducir directamente en RLO. Efectuamos un OR con la entrada 0.0, al ser en primera consulta (primera operacin dentro del parntesis) lo que sucede es que el contenido de E 0.0 pasa a ser el nuevo valor del RLO. Se efecta un AND entre el RLO obtenido anteriormente y la entrada 0.1, almacenndose el resultado en el RLO. Se cierra el parntesis, con lo que el RLO de las operaciones efectuadas dentro se opera segn la instruccin que inicia el parntesis (en este caso la instruccin U). Tal y como comentamos, al estar la instruccin de inicio al principio del programa se ejecuta como primera consulta, con lo que el RLO pasar a valer lo que el resultado dentro del parntesis. Copiamos el contenido del RLO en la salida 2.0.
En pocas palabras, si ejecutramos este programa la salida 2.0 valdra 0 a menos que E 0.0 y E 0.1 valiesen 1, con lo que pasara a valer 0. Un programa equivalente sera (en este caso):
O U = E E A 0.0 0.1 2.0 //copiamos la E 0.0 en el RLO (primera c.) //efectuamos un AND entre el RLO y la E 0.1 //copiamos el resultado a la salida 2.0
5.8. Y antes de O
Instruccin "O" sin operando Si introducimos una instruccin "O" sin operando seguida de una o varias instrucciones AND se evala en primer lugar las instrucciones AND y el resultado se combina con el RLO segn un OR. Esta operacin equivale a emplear "O(" con instrucciones del tipo AND dentro del parntesis. Registros afectados: RLO, STA, OR, pila de parntesis Ejemplo:
U O U U = E E M A 0.0 0.1 0.3 4.0 //se introduce en el RLO el valor de la entrada 0.0 (primera c.) //comenzamos una operacin Y antes de O //introducimos el valor de la entrada 0.1 en el RLO (primera c.) //efectuamos un AND entre el RLO y la marca 0.3 //se finaliza Y antes de O. Se efecta un OR entre el primer RLO y el RLO resultado de las operaciones AND. Luego se copia el contenido del RLO en la salida 4.0
Versin 22/01/2002
Pg. 29 de 154
Escribir en AWL el siguiente esquema elctrico: 1) Sin usar marcas 2) Usando marcas
E 0.0 E 0.1
E 0.2
E 1.4
Versin 22/01/2002
Pg. 30 de 154
En este ejemplo cada vez que introduzcamos un flanco positivo en la entrada 1.0 se producir un impulso de longitud un ciclo en la salida 4.0, tal y como se muestra en la siguiente figura: E 1.0: 0 0 1 1 1 0 0 0 1 1 0 M 1.0: 0 0 1 1 1 0 0 0 1 1 0 A 4.0: 0 0 1 0 0 0 0 0 1 0 0
ciclo: E 1.0: M 1.0: A 4.0: ciclo: 1 2 3 4 5 6 7 8 9 10 0 0 1 1 1 0 0 0 1 1 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 2 3 4 5 6 7 8 9 10
ATENCION: Es obligatorio no emplear los operandos ocupados por FP y FN para otros fines, ya que entonces se falsifica el RLO almacenado en ellos y por lo tanto se produce un funcionamiento incorrecto del programa.
Ejemplo:
U S U R E A E A 1.0 4.0 1.1 4.0 //copiamos //si RLO=1 //copiamos //si RLO=1 al se al se RLO el fuerza RLO el fuerza valor de la entrada 1.0 (primera c.) la salida 4.0 a 1 valor de la entrada 1.1 (primera c.) la salida 4.0 a 0
En este ejemplo (bscula S-R) tiene preferencia el reset sobre el set, ya que esta ltima instruccin se ejecuta al despus, es decir si las entradas 1.0 y 1.1 fuesen 1 la salida 4.0 sera 0.
Versin 22/01/2002
Pg. 32 de 154
Ejercicio 1: Taladradora
Funcionamiento: En el estado de reposo la taladradora estar arriba, pisando el final de carrera (E0.1) Si se pulsa la marcha (E0.0) la taladradora bajar accionado por el motor de bajada (A4.0). Cuando se active el final de carrera de abajo (E0.2), la taladradora subir de nuevo. Si en algn momento se pulsa el interruptor de parada (E0.3), la taladradora deber subir.
E 0.1
M M
E 0.2
Ejercicio 2: Motor
Funcionamiento: El motor podr girar a derechas (A 4.0) o izquierdas (A 4.1) segn le demos al pulsador correspondiente. Adems existe un pulsador de paro (E0.3), y un rel trmico normalmente cerrado (E0.2) que se abrir cuando en el motor se produzca una sobretemperatura.
E 0.0 Giro a derechas E 0.1 Giro a izquierdas M E 0.3 Pulsador de paro E 0.2 Rel trmico (normalmente cerrado)
Versin 22/01/2002
Pg. 33 de 154
Las instrucciones de carga y transferencia transfieren datos a desde el ACU1. Son operaciones incondicionales, o sea, independientes del RLO Ejemplo:
U E1.0
3 //Carga el nmero entero 3 (16 bits) en el ACU1 EB0 //Carga el byte de entradas 0 en ACU1 MB20 //Carga el byte de marcas 20 en ACU1
0
1111 1111 1111 1101 1 byte se carga en el byte bajo de la palabra baja de ACU1 1 palabra se carga en la palabra baja de ACU1 Los bytes no aprovechados se ponen a cero. La informacin que hubiese en ACU1 se desplaza a ACU2. Y lo que hubiese en ACU2 se pierde. Ejemplo:
L L L 3 2 5 //ACU1=3 //ACU1=2 ; ACU2=3 //ACU1=5 ; ACU2=2
se pierde
Versin 22/01/2002
Pg. 34 de 154
Observaciones sobre la carga y transferencia: Los acumuladores sirven para ejecutar operaciones lgicas entre ACU1 y ACU2 (comparacin, aritmeticas, AND, OR...). El resultado siempre se almacena en ACU1, sobreescribiendo lo que hubiese en ACU1 pero el contenido de ACU2 permanece intacto.
Ejemplo:
L 8 T 2 -I T MW10 //ACU1=8 //ACU1=2 ; ACU2=8 //ACU2-ACU1 ACU1=6 ; ACU2=8 //Transfiero el resultado de la resta a MW10
Ejemplo:
T L MW10 5 //en el segundo ciclo y sucesivos jams se transferir 5
Versin 22/01/2002
Pg. 35 de 154
7. Operaciones de contaje
7.1. Operaciones con contadores
Los contadores permiten distintas operaciones, que debemos emplear en su manejo: Cargar un valor de contaje (preseleccin). Borrar el contaje. Contar hacia adelante y hacia atrs. Consultar su estado como un operando ms en operaciones lgicas de bit. Consultar su valor en ACU 1.
Todas estas operaciones sern explicadas con profundidad en los siguientes puntos.
Versin 22/01/2002
Pg. 36 de 154
U E ZR Z U = Z A
Versin 22/01/2002
Pg. 37 de 154
Ejemplos:
L Z LC Z 1 2 //introduce el valor del contador 1 en el ACU 1 //introduce el valor del contador 2 en el ACU 1 en BCD
Salida
Entrada
Automatizar un garaje de cinco plazas de tal forma que si ste se encuentra lleno, se encienda una luz indicndolo y no suba la barrera. En caso contrario deber estar encendida otra luz indicando LIBRE. El garaje consta de 5 plazas. Disponemos de una clula fotoelctrica y una barrera en la entrada y lo mismo en la salida.
Asignacin de variables E0.0 E0.1 A4.0 A4.1 A4.2 A4.3 Clula fotoelctrica de entrada Clula fotoelctrica de salida Barrera de entrada Barrera de salida Luz de sealizacin de LIBRE Luz de sealizacin de LLENO
Versin 22/01/2002
Pg. 38 de 154
8. Operaciones de temporizacin
8.1. Operaciones con temporizadores
Los temporizadores permiten distintas operaciones, que debemos emplear en su manejo: Funcionamiento en un modo determinado. Borrar la temporizacin. Re-arrancar un temporizador (FR). Consultar su estado como un operando ms en operaciones lgicas de bit. Consultar su valor en ACU 1.
Cada temporizador lo podemos hacer funcionar en uno de los siguientes modos: Impulso (SI). Impulso prolongado (SV). Retardo a la conexin (SE). Retardo a la conexin con memoria (SS). Retardo a la desconexin (SA).
Todas estas operaciones sern explicadas con profundidad en los siguientes puntos.
Versin 22/01/2002
Pg. 39 de 154
Ejemplo:
L W#16#210 //esto introduce un valor de 10 segundos en ACU 1 (2 base de 1s, 10 los segundos que deseamos)
L S5T#aH_bbM_ccS_ddMS a = horas, bb= minutos, cc = segundos, dd = milisegundos En este caso la base de tiempos se selecciona de forma automtica, tomndose la de valor ms bajo posible. Debido a esto los valores de resolucin demasiado alta se redondean por defecto, alcanzando el rango pero no la resolucin deseada. Las posibles resoluciones y rangos son:
0,01 s 0,1 s 1 s 10 s 10MS a 9S_990MS 100MS a 1M_39S_900MS 1S a 16M_39S 10S a 2H_46M_30S
Versin 22/01/2002
Pg. 40 de 154
Versin 22/01/2002
Pg. 41 de 154
Versin 22/01/2002
Pg. 42 de 154
Versin 22/01/2002
Pg. 43 de 154
Versin 22/01/2002
Pg. 44 de 154
Versin 22/01/2002
Pg. 45 de 154
Versin 22/01/2002
Pg. 46 de 154
Si el RLO cambia de 0 a 1 en la entrada de re-arranque mientras est en marcha el temporizador, el temporizador vuelve a arrancar. El tiempo programado se emplea como tiempo actual para el re-arranque. Un cambio del RLO de 1 a 0 en la entrada de re-arranque no produce ningn efecto. Un cambio del RLO de 0 a 1 en la entrada de habilitacin no afecta al temporizador si todava hay un RLO 0 en la entrada del temporizador.
Versin 22/01/2002
Pg. 47 de 154
LC T BCD
Versin 22/01/2002
Pg. 48 de 154
Se dispone de un semforo, el cual en condiciones normales se encuentra del modo siguiente: Verde vehculos Rojo peatones En el mismo instante que un peatn accione sobre el pulsador situado en el semforo, ste pasar a amarillo para vehculos, estado que durar durante 3. Finalizado ste, pasar a estado rojo para vehculos y verde para peatones. El tiempo de duracin fijado para rojo vehculos: 6 Finalizado el proceso, el semforo regresar al estado normal. Durante el tiempo de duracin del ciclo, deber evitarse que cualquier nueva activacin sobre el pulsador verde, rearme el ciclo.
Versin 22/01/2002
Pg. 49 de 154
1 ciclo de scan
1 seg
1 seg Funcionamiento: Basndose en el generador de pulsos realizar una onda cuadrada peridica de 1 seg.
Versin 22/01/2002
Pg. 50 de 154
9. Operaciones de salto
9.1. Operaciones de salto incondicional
Instrucciones: "SPA" y "SPL" Las operaciones de salto incondicional (SPA) interrumpen el desarrollo normal del programa, haciendo que el mismo salte a una meta determinada (operando de la operacin SPA). La meta define el punto en que deber continuar el programa. El salto se efecta independientemente de condiciones. Ejemplo de salto SPA:
U SPA NOP U = E 1.0 AQUI 0 E 2.0 A 3.0 //cargamos en el RLO el valor de la entrada 1.0 //saltamos de forma incondicional a la lnea con meta "AQUI" //esta lnea no se ejecuta (es saltada) //aqu continua la ejecucin del programa //introducimos el resultado en la salida 3.0
AQUI:
La operacin Salto a meta (SPL) es un distribuidor de saltos seguido de una serie de saltos incondicionales a metas determinadas (lista de saltos). El salto de la lista se escoge segn el valor contenido en el ACU1, es decir si el acu1 vale 0 se escoger el primer salto incondicional (SPA), si vale 1 se saltar al segundo salto... Si el valor se encuentra fuera de la lista se salta a la meta especificada en SPL. Una meta se compone de 4 caracteres como mximo. El primer carcter debe ser siempre una letra, no importando si el resto son nmeros o letras. La meta se especifica normalmente en el operando de la instruccin de salto, y seguida de dos puntos frente a la lnea que posee la meta (ver ejemplos). Registros afectados: ninguno Estructura:
L MB100 SPL DEF SPA CERO SPA UNO SPA DOS DEF: ... ... //cargamos //saltamos //se salta //se salta //se salta en el ACU1 un byte a DEF si el valor de ACU1 no est en la list a CERO si ACU1 vale 0 a UNO si ACU1 vale 1 a UNO si ACU1 vale 2
BEA CERO: ... ... BEA UNO: ... ... BEA DOS: ... ... BEA
Versin 22/01/2002
Pg. 51 de 154
AQUI:
Como podemos observar en el ejemplo, el resultado de la salida 0.0 depende primeramente del valor de la entrada 2.0, ya que ella decide si se tiene en cuenta tambin la entrada 1.0 en el resultado final.
SPS: salto si OS=1 Las operaciones SPBI y SPBIN ponen los bits OR y ER de la palabra de estado a 0 y el bit STA a 1. La operacin SPS pone el bit OS a 0. Registros afectados: OR, ER, STA, OS Ejemplo de salto SPS:
AQUI: SEGU: SPS AQUI SPA SEGU SET = A 1.0 U = E A 3.0 0.0 //saltamos a la lnea con meta "AQUI" si OV=1 //esta lnea no se ejecuta si OV=1 //forzamos el RLO a 1 //con la salida 1.0 indicamos si hubo un error previo en la anterior ejecucin del programa //aqu continua la ejecucin del programa normalmente //introducimos el resultado en la salida 0.0
SPMZ SPU
Versin 22/01/2002
Pg. 53 de 154
NEXT:
Ejemplo 2 :
U SPB L T U U S BEA NOP BEA U S E 1.0 NEXT EW 4 EW 10 E 6.0 E 6.1 M 12.0 0 E 1.1 A 4.0 //fin de mdulo //estas instrucciones nunca se ejecutaran //introducimos en el RLO el valor de la entrada 1.0 //si la entrada 1.0 salta a meta NEXT
NEXT:
BEB finaliza la ejecucin del mdulo actual y devuelve el control al mdulo que llam al mdulo finalizado. Esta accin se realiza si el RLO es 1. Si no es as se continua la ejecucin del actual mdulo, pero con el RLO a 1. Ejemplo:
U E BEB U E = A BEA 1.0 2.0 3.0 //aqu finaliza el mdulo de forma incondicional //introducimos en el RLO el valor de la entrada 1.0 //si la entrada 1.0 vale 1 el mdulo acaba aqu
Si el mdulo que finaliza es el OB1 se finaliza el ciclo de ejecucin del programa, volviendo a comenzar uno nuevo.
Versin 22/01/2002
Pg. 54 de 154
9.6. Loop
Instruccin: "LOOP" La operacin LOOP sirve para llamar varias veces un segmento del programa. Esta operacin decrementa la palabra baja del ACU 1 en 1. Despus se comprueba el valor depositado en la palabra baja del ACU 1. Si no es igual a 0, se ejecuta un salto a la meta indicada en la operacin LOOP. En caso contrario, se ejecuta la siguiente operacin normalmente. Observaciones : El contador de bucles es un entero (de 16 bits) sin signo El salto puede ser tanto hacia delante como hacia atrs El salto slo se puede ejecutar dentro de un bloque
10 PROX
Hay que tener precaucin con el valor que haya en el ACU 1, ya que si ejecutamos LOOP con un valor de ACU 1 igual a 0 el bucle se ejecutar 65535 veces. Tampoco se recomienda introducir valores enteros negativos en el ACU 1.
Ejercicio 1: SPL
Segn el contenido de EB0 : Si 0 => AW4= FFFF Si 1 => AW4=AAAA Si 2 => AW4=5555 Si 3 => AW4=0000
Versin 22/01/2002
Pg. 55 de 154
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.
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
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)
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 //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.1. Binario
Representa 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. Hexadecimal
Ejemplo:
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
11.3. BCD
BCD 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
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
15
3 = 0000 0000 0011 C1= 1111 1111 1100 +1 = 1111 1111 1101
Versin 22/01/2002
Pg. 61 de 154
31
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
1111 1111 1111 1101 signo signo expon. mantisa exponente mantisa
Versin 22/01/2002
Pg. 62 de 154
Ejemplo:
L 4780000000.0 = L 4.780000e+010
el punto es obligatorio
Versin 22/01/2002
Pg. 63 de 154
Operac in ==I ==D <>I <>D >I >D <I <D >=I
Comparacin efectuada El entero (16 bits) de la palabra baja del ACU2 es igual al entero (16 bits) de la palabra baja del ACU 1. El entero doble (32 bits) del ACU2 es igual al entero doble (32 bits) del ACU1. El entero (16 bits) de la palabra baja del ACU2 no es igual al entero (16 bits) de la palabra baja del ACU 1. El entero doble (32 bits) del ACU2 no es igual al entero doble (32 bits) del ACU1. El entero (16 bits) de la palabra baja del ACU2 es mayor que el entero (16 bits) de la palabra baja del ACU 1. El entero doble (32 bits) del ACU2 es mayor que el entero doble (32 bits) del ACU1. El entero (16 bits) de la palabra baja del ACU2 es menor que el entero (16 bits) de la palabra baja del ACU 1. El entero doble (32 bits) del ACU2 es menor que el entero doble (32 bits) del ACU1. El entero (16 bits) de la palabra baja del ACU2 es mayor o igual al entero (16 bits) de la palabra baja del ACU 1.
Versin 22/01/2002
Pg. 64 de 154
El entero doble (32 bits) del ACU2 es mayor o igual al entero doble (32 bits) del ACU1. El entero (16 bits) de la palabra baja del ACU2 es menor o igual al entero (16 bits) de la palabra baja del ACU 1. El entero doble (32 bits) del ACU2 es menor o igual al entero doble (32 bits) del ACU1.
Estas operaciones afectan al estado de los bits A1 y A0, en funcin de la condicin que se haya cumplido, tal y como se muestra en la tabla siguiente: Condicin ACU2 > ACU1 ACU2 < ACU1 ACU2 = ACU1 ACU2 <> ACU1 A1 1 0 0 0 o 1 1 o 0 0 o 0 A0 0 1 0 1 o 0 0 o 0 1 o 0
==I = A >I = A
Versin 22/01/2002
Pg. 65 de 154
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
Estas operaciones activan determinadas combinaciones de los estados de los cdigos de condicin A1, A0, OV y OS de la palabra de estado para indicar qu condicin se ha cumplido, tal y como se muestra en la siguiente tabla: Condicin == <> > < >= A1 0 0 o 1 1 0 1 o 0 0 o 0 1 A0 0 1 o 0 0 1 0 o 0 1 o 0 1 OV 0 0 0 0 0 OS no aplicable no aplicable no aplicable no aplicable no aplicable
<= UO
0 1
no aplicable 1
Versin 22/01/2002
Pg. 66 de 154
Versin 22/01/2002
Pg. 67 de 154
0,5 s
0,5 s
Se define en las propiedades de la CPU: HW Config CPU Pestaa Ciclo/Marca de ciclo Para crear una marca de ciclo : 1. Introducir la direccin del byte de marcas. 2. Activar la casilla de verificacin 9 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.
Versin 22/01/2002
Pg. 68 de 154
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
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
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
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
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
Versin 22/01/2002
Pg. 71 de 154
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 RND = 149 148.4 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 148.4 RND+ = 149 RND = 148 5.7 RND+ = 5 RND = 6
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 8.7 RND = 9 TRUNC = 8
Versin 22/01/2002
Pg. 73 de 154
16.1. Desplazar palabras A la derecha: SRW <n de bits> 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 <n de bits> 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 <n de bits> 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 <n de bits> 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 <n de bits> 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 <n de bits> 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.
A4.0
A4.7 A5.0
A5.7
Versin 22/01/2002
Pg. 75 de 154
17. Operaciones
de rotacin
17.1. Rotar palabras dobles A la derecha: RRD <n de bits> 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 <n de bits> 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
Versin 22/01/2002
Pg. 76 de 154
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
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 e
Insertar 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.
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.
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
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
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:
Creacin de un DB : Hacer clic con el botn izquierdo del ratn en la carpeta de Bloques e
Insertar 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
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
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
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.
Transferimos los dos bloques, OB1 y DB1 al autmata. Para ver el valor del resultado ir a Observar/Forzar
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:
Versin 22/01/2002
Pg. 86 de 154
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 FB
Instruccin: "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
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
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:
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
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
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
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
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:
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.2
Pulsador activacin de proceso (E0.4)
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
Seal digital
Seal analgica
5V
E0.0
300 100
0V
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
Programa
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:
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 =
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?
K2 = 27648 IN = 10000 K1 = 0
Litros =
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
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 =
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
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.
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.
10V
27
Simular una salida analgica en diente de sierra, pero utilizando instrucciones digitales (no entradas analgicas).
10V
0 4 seg.
Versin 22/01/2002
Pg. 99 de 154
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.
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
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
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 valores, por ejemplo inicializar un contador:
OB100 L C#5 S Z0
Versin 22/01/2002
Versin 22/01/2002
Descripcin de los parmetros: Parmetros de entrada: OB_NR (INT) : Nmero del OB que se arrancar al transcurrir el tiempo de retardo (OB20OB23) DTIME (TIME) : Valor del retardo (1 a 60000 ms) Ej.: T #200MS SIGN (WORD) : Signo que, al llamar el OB de alarma de retardo, aparece en la informacin de eventos de arranque del OB. Parmetros de salida: RET_VAL (INT) : Cdigo de error, si ocurre un error al procesar la funcin. Cdigos: 0000 No ha ocurrido ningn error. 8090 Parmetro OB_NR errneo. 8091 Parmetro DTIME errneo.
20.5. Ms OBs
En cada caso consultar la ayuda online para una descripcin detallada. OBs de alarma de proceso (OB 40 hasta OB 47) OB de alarma de multiprocesamiento (OB 60) OB para errores de redundancia en la periferia (OB 70) OB para errores de redundancia en las CPU (OB 72) OB para errores de redundancia en la comunicacin (OB 73) OB de error de tiempo (OB 80) OB de fallo de alimentacin (OB 81) OB de alarma de diagnstico (OB 82) OB de presencia de mdulo (extraer/insertar) (OB 83) OB de avera de CPU (OB 84) OB de error de ejecucin del programa (OB 85) OB de fallo del bastidor (OB 86) OB de error de comunicacin (OB 87) OB de tarea no prioritaria (OB 90) OBs de arranque (OB 100, OB 101 y OB 102) OB de error de programacin (OB 121) OB de error de acceso a la periferia (OB 122)
Versin 22/01/2002
En este ejemplo la instruccin es una carga en ACU1 del valor del temporizador cuyo nmero est contenido en MW2. Segn el identificador del operando, la operacin evala los datos depositados en la direccin como puntero en formato palabra o doble palabra. Puntero en formato palabra, indica el nmero en formato decimal de: Ej.:
L T L 5 MW2 T[MW2] //Carga 5 en ACU1 //Transfiero 5 a MW2 //Carga el valor actual del temporizador T5 en ACU1
Temporizadores (T) Contadores (Z) Bloques de datos (DB, DI) Bloques lgicos (FC, FB)
Puntero en formato doble palabra, indica la direccin de: Bit Byte Palabra Doble palabra
Versin 22/01/2002
Para direccionar byte, palabra y doble palabra el bit de puntero siempre debe ser 0. Ej.:
L T L P#4.0 MD2 EB[MD2] //Carga el puntero en ACU1 //Transfiero el resultado a una doble palabra //Cargo el ACU1 el byte de entradas 3
Observaciones: El puntero deber almacenarse en: Marcas (M) Bloques de datos (DB) Datos locales (L) Direccionamiento indirecto de bloques de datos: Ej.:
L T L T AUF L 1 MW10 P#4.0 MD2 DB[MW10] DBD[MD2] //Cargo 1 en ACU1 //Transfiero 1 a MW10 //Cargo el puntero en ACU1 //Transfiero el puntero a MD2 //Abro el DB1 //En ACU1 cargo DBD4 (La doble palabra 4 del DB)
No se podra hacer as: L DB[MW10].DBD[MD2] Adems, en el ejemplo deber existir previamente el DB1, si no, da fallo.
Ej.:
L L +D P#124.2 3 //Cargo puntero //Sumo 3 bits //Resultado: P#124.5
Versin 22/01/2002
Se puede observar el puntero con Observar/Forzar Variable. Ej.: Operando Formato de estado ------------------------------------------MD4 Puntero
La ventaja es que se puede modificar dinmicamente el operando. El operando lo indican dos punteros, por ejemplo:
= A[AR1,P#1.1] (*) (**)
(*) Identificador de operando, puede ser: Operaciones lgicas que direccionan bits: E, A, M, L, DBX Con la funcin carga (L) que direcciona bytes palabras y doble palabras: E, A, M, L, D y PE Con la funcin transferencia (L) que direcciona bytes palabras y doble palabras: E, A, M, L, DB, DI y PA
(**) Puntero de doble palabra, es el offset (desplazamiento) que se suma al contenido del registro de direcciones donde previamente debe estar cargado otro puntero en formato doble palabra (intruccin LAR1). La suma de los dos punteros es byte+byte y bit+bit. Ej.:
L P#8.7 LAR1 U E[AR1,P#0.0] = A[AR1,P#1.1] //Cargo el valor del puntero en ACU1 //Transfiero el puntero de ACU1 a AR1 //Consulto el estado de seal de la entrada E8.7 (8.7 + 0.0 = 8.7) //y lo asigno a la salida A10.0 (8.7 + 1.1 = 9.8, que no existe, por tanto ser el siguiente al 9.7, que es 10.0)
Para acceder a un byte, palabra o doble palabra el n de bit del puntero debe ser cero, ej.:
L P#4.0 LAR1 L EB[AR1,P#10.0] //Cargo en ACU1 el byte de entradas EB14.0
Versin 22/01/2002
//Consulta la entrada E8.7 //Lo asigna a la salida A10.0 (8.7 + 1.1 = 9.8 = 10.0)
Para acceder a un byte, palabra o doble palabra, el n de bit de puntero debe ser 0:
L P#MB0 LAR1 L B[AR1,P#10.0]
Otro ejemplo:
L P#MD1 LAR2 T D[AR2,P#53.0]
+AR1 P#Byte.Bit me suma el puntero P#Byte.Bit al puntero contenido en AR1, por ejemplo:
L P#4.1 LAR1 +AR1 P#5.0 U E0.0 = A[AR1,P#0.0]
Versin 22/01/2002
Se supone que nos van llegando datos mediante comunicacin con otro autmata, y se van almacenando desde la palabra marca MW0, MW2, MW4... hasta la MW10. Crear una funcin FC1 la cual se encargue de pasar esos datos al bloque de datos DB1 (mediante flanco positivo de E0.0) donde quedarn almacenados en DBW0...DBW10.
Versin 22/01/2002
Ejemplo: Matriz unidimensional Array de 1 dimensin: ARRAY [1..3] lm. inferior lm. superior
Nota: Para introducir valores iniciales en el array: Individualmente: Valores separados por coma. En nuestro ej.: 5,7,-100 Indicar factor de repeticin: x(y) n de elementos Ejemplo: valor inicial
3(8) En nuestro ejemplo le dara a los tres elementos valor 8 1, 2(37) Al primero le doy valor 1 y a los dos ltimos valor 37.
Versin 22/01/2002
ltimo elemento= [2,3] Para acceder a estos datos: Matriz[1,1], Matriz[1,2], Matriz[1,3], Matriz[2,1], Matriz[2,2] y Matriz[2,3]
Observaciones: El ndice puede ser un valor entre 32768 y 32767 Ej.: Datos[-1,1] tiene como elementos: Datos[-1], Datos[0] y Datos[1] Las matrices se pueden usar como parmetros. Si es as, se debe transferir como array completo y no como elementos individuales Ej.: Declaro en el OB1 una variable temporal tipo Array, y en el FC1 un parmetro de entrada in tipo Array y de las mismas dimensiones. OB1:
FC1:
Versin 22/01/2002
Entradas y salidas (de la imagen del proceso PAE y PAA) Marcas reas de bloques de datos Temporizadores y contadores (no recomendables, porque los valores del emisor ya no son actuales; configurables slo como reas de operandos)
Las reas de la periferia (PE y PA) y los datos locales no se pueden utilizar para la comunicacin mediante datos globales. El intercambio de datos globales se realiza de la siguiente forma: CPU emisora: Enva datos al final de un ciclo cada X ciclos. CPU receptora: Recibe datos al inicio de un ciclo cada X ciclos.
No se acusa recibo de los datos globales. El emisor no recibe informacin alguna acerca de si hay un receptor que ha recibido los datos globales enviados y, en caso de haberlo, cul es.
Versin 22/01/2002
1. Establecer la direccin MPI para la PG (Ajustar interface PG/PC) y la CPU (En HWConfig doble clic sobre la CPU Pestaa General Propiedades del Interface).
3. Con el programa NetPro configuramos la red MPI. Para acceder al NetPro: Men Herramientas --> Configurar red, o bien haciendo clic en el icono Si todava no hemos configurado la red MPI lo podemos hacer en el NetPro. Haciendo doble clic sobre el cuadrado rojo, que representa el puerto MPI, o tambin simplemente haciendo clic sobre ese puerto y arrastrando hasta encontrar a la lnea roja que representa la red MPI, conectaremos la CPU a la red MPI. Adems nos aparecer una ventana para configurar el interface MPI para esa CPU. Es importante asignarle a cada CPU una direccin MPI distinta dentro de la red.
4. Guardar y compilar y, pinchando en cada equipo, cargar esta configuracin en las dos CPUs con el icono: : 5. Ahora habr que configurar la Tabla de Datos Globales para el intercambio de datos. A la tabla podemos acceder de dos maneras: Desde el NetPro, seleccionado la red MPI (la lnea roja). Desde el Administrador Simatic, dentro de la carpeta de nuestro proyecto, seleccionamos el icono que representa a la red MPI :
Y en ambos casos men Herramientas --> Definir datos globales Nos aparecer la Tabla de datos Globales que deberemos rellenar.
Versin 22/01/2002
Insertamos los equipos de nuestra red por columnas. Seleccionamos la primera columna, y con el botn derecho del ratn --> CPU..., y en la ventana siguiente escogemos la CPU de un equipo. Despus rellenamos los datos globales lnea a lnea. Un dato que se emite por un equipo se deposita en un rea de memoria de otro equipo. El dato que se emite se identifica por el smbolo > delante de l. El nmero de datos que se envan se indica con el smbolo :.
En este ejemplo el equipo 1 transfiere el estado de su entrada E0.0 a la salida A4.0 del equipo 2; el equipo 1 transfiere las 5 primeras palabras de su DB1 a 5 palabras del DB2 (empezando por la palabra 10) del equipo 2; el equipo 2 transfiere el byte 200 y 201 al byte 200 y 201 del equipo 1. Observacin: Para cambiar los datos de una casilla utilizar la tecla F2. Despus de rellenar la tabla se hace una primera compilacin (men Tabla GD --> Compilar, o icono ).
Versin 22/01/2002
Tenemos las lneas de datos globales con su identificador. Podemos insertar otros tipos de lneas en la tabla: Lnea de estado (GSD): Se puede definir para cada paquete de GD un palabra doble de estado para cada CPU. Lnea de estado global (GST): Se puede definir para cada paquete de GD un palabra doble de estado para cada CPU. Es una combinacin OR de todas las lneas de estado.
Estas lneas se pueden ver despus de la primera compilacin mediante el men Ver --> Estado GD.
Tambin podemos insertar la Lnea de Factor de Ciclo (SR): Indica despus de cuantos ciclos la CPU debe actualizar los datos globales. Para ver/modificar los factores de ciclo predefinidos: Men Ver --> Factores de ciclo. Factores de ciclo validos: 0;1-255. Hay que tener en cuenta que factores de ciclo demasiado bajos sobrecargan la CPU.
Versin 22/01/2002
En el ejemplo el Equipo 1 emite cada 8 ciclos (al final de ciclo) y recibe cada 3 ciclos (al principio de ciclo).
Para terminar hay que hacer una segunda compilacin y cargar la tabla GD en cada CPU mediante el icono correspondiente o el men Sistema de destino --> Cargar en mdulo....
Resumen :
Abrir tabla GD
Rellenar tabla GD
Cargar la tabla GD
Versin 22/01/2002
1. Abrir el bloque que se quiere proteger. 2. Generar la fuente: Archivo Generar fuente 3. Se le da un nombre a la fuente.
4. En la ventana que se abre, seleccionar con los bloques con los que quiere generarse la fuente:
Versin 22/01/2002
7. Guardar y compilar la fuente (Archivo Compilar). 8. Se habr generado un bloque protegido contra lectura y modificacin.
Versin 22/01/2002
Se accede mediante el men: Sistema de destino Observar/forzar variable Funciones: 1. Observar variables: Valores actuales de las variables de la CPU o del programa 2. Forzar variables: Asigna valores fijos a variables de un programa o CPU. El forzado es nico e inmediato. 3. Desbloquear salidas y activar valores forzados: Asigna valores fijos a salidas de periferia de un programa o CPU (en STOP). 4. Forzar variables de una forma permanente (fija) de un programa o CPU. El programa no las puede sobrescribir.
Se pueden observar/forzar: Entradas Salidas Periferia Marcas Temporizadores Contadores Contenido de bloques
Pasos: 1) Hay que elaborar una tabla de las variables cuyos valores se quiere visualizar/forzar. 2) Hay que definir el punto de disparo y la condicin de disparo para definir cuando y con qu frecuencia se debe observar/forzar la variable.
Versin 22/01/2002
Electrobomba (A4.0)
El estado de disponibilidad lo indica un selector de dos posiciones: Conectado/desconectado. La electrobomba se pondr en marcha cuando el sensor de mnimo est activado y se apagar cuando, o bien se active el sensor de mximo, o bien salte el trmico o bien la desconectemos mediante el sensor. Si la electrobomba est en servicio deber lucir una lmpara indicndolo. Si salta el trmico se encender otra lmpara avisndolo.
Versin 22/01/2002
Disear un automatismo para el llenado de botellas hasta un cierto nivel, de acuerdo con el siguiente programa de trabajo: Al pulsar sobre m (marcha) el motor M de la cinta transportadora arrancar. Cuando la fotoclula F detecte una botella, el motor M se parar y se activar la electrovlvula E para el llenado de la botella. Cuando la botella pese lo deseado, el sensor S pasar a 1, mandando una seal de paro a la electrovlvula. Pasados 2 seg. el motor se pondr de nuevo en marcha, parndose en la prxima deteccin. La cinta podr parase en cualquier momento mediante un pulsador de paro P y arrancarse, si se desea, a continuacin mediante m.
Asignacin de variables
Marcha (m) = E0.0 Paro (P) = E0.1 Fotoclula (F) = E0.2 Sensor (S) = E0.3
Electrovlvula (E)
Fotoclula (F)
Sensor (S)
Versin 22/01/2002
Fotoclula
Adems, y con el fin de evitar atascos en la lnea, mediante los dos sensores de botellas vacas y llenas se ha de comprobar que las botellas que salen se corresponden con las que han entrado. Si se detectase un atasco, activar una luz de fallo, que se detenga el proceso, y para reiniciar el ciclo habr que pulsar antes el botn de acuse de recibo.
Asignacin de variables Marcha = E0.0 Paro = E0.1 Manual /auto. =E0.2 Acuse de recibo = E0.3 Motor adelante = E0.4 Motor atrs = E0.5 Fotoclula = E1.0 Sensor de peso = E1.1 Sensor botellas vacas = E1.2 Sensor botellas llenas = E1.3 Motor adelante = A4.0 Motor atrs = A4.1 Electrovlvula = A4.2 Cinta 2 = A4.3 Luz manual = A5.0 Luz auto. = A5.1 Luz 5 botellas = A5.2 Luz de atasco = A5.3
Versin 22/01/2002
E 0.4 Pulsador de
emergencia
E 0.2 Fotoclula
A 4.0 Motor
Para la que escalera funcione deber accionarse el pulsador de servicio ON (E0.0), iluminndose la luz de Servicio dispuesto. Cuando se accione el pulsador de Servicio OFF (E 0.1), la escalera se parar. Cuando se accione el pulsador de emergencia (E0.4), la escalera se parar, y para que vuelva a ser operativa habr que pulsar el rearme (E0.5). Cuando la fotoclula de abajo (E0.2) detecte que ha llegado una persona, se activa el motor de la escalera (A4.0) durante 5 seg. Cuando se hayan producido 5 saltos de rel trmico (E0.3) contacto normalmente cerrado, la escalera no podr rearmarse, hasta que no se accione el rearme (E0.5)
Versin 22/01/2002
E 0.0
E 0.1
E 0.2 A 5.0
A 4.0
A 4.1 A 5.1 Cinta para cajas pequeas (4 seg.) Contenedor cintas pequeas (5 mx.)
Funcionamiento: Es un automatismo para seleccionar cajas por su tamao. La cinta transportadora A4.0 est activa esperando una caja. Cuando se activa el sensor E0.0 la cinta A4.1 se pone en marcha, y la cinta A4.0 se detiene. Para seleccionar la caja hay dos sensores: E0.1 y E0.2, este ltimo tambin indica que la caja sale de la cinta. Si la caja es grande se activaran los 2 sensores a la vez, por lo que la caja se desplazara por la cinta transportadora A5.0 que funcionara durante 5 seg. Si la caja es pequea nunca se activaran los dos sensores a la vez, y pasara a la cinta para cajas pequeas A5.1 que funcionara 4 seg.
Una vez que la caja salga de la cinta intermedia A4.1 podremos procesar otra caja activando A4.0. Las cajas van llenando dos contenedores. Como opcin, se podr poner dos contadores que cuenten las cajas grandes y pequeas, y que cuando lleguen a 7 cajas grandes y 5 pequeas, se detenga el proceso hasta que el operario sustituya los contenedores por otros vacos y le d a un pulsador de acuse de recibo.
Versin 22/01/2002
Fortuna
Malboro
Ducados
LM
2 Inserte monedas
El programa consiste en un mquina expendedora de paquetes de tabaco. Dispone de cuatro marcas con los siguientes precios: Precio Euros Fortuna Malboro Ducados LM 3 3,5 2 2,8
La introduccin de las monedas la simulamos con pulsos de las siguientes entradas del autmata:
E 0.0 E 0.1 E 0.2
La mquina no devuelve monedas, si hemos metido ms cantidad de dinero que el precio exacto, lo perderemos con la entrega del paquete. Tenemos un interruptor de activacin la maquina, que siempre debe estar ON: E1.0 Adems necesitamos reponer los paquetes de tabaco de cada marca, lo hacemos con las entradas: E1.1 (Fortuna), E1.2 (Malboro), E 1.3 (Ducados) y E1.4 (LM). Los pulsadores que habr que activar para que se produzca la entrega del paquete sern: E0.3 (Fortuna), E0.4 (Malboro), E 0.5 (Ducados) y E0.6 (LM). Como salidas tendremos:
A4.0 : Luz que indica funcionamiento de la mquina (cuando la mquina est activa). A4.1 : Luz que indica fin de existencias, se iluminar durante un cierto tiempo cuando al darle a uno de los pulsadores de entrega no exista esa marca en concreto. A4.2 : Luz que simula que la entrega de tabaco se ha producido (con un destello es suficiente).
Versin 22/01/2002
25.7. Gasolinera
Funciona Sin plomo Sper Gasoil
Sin plomo Sper
15 Euros
Gasoil
Pulsador manguera
17,5 l
Simularemos el funcionamiento de un surtidor de gasolina. Introduciremos la cantidad de dinero y seleccionaremos el tipo de gasolina que queramos cuyo precio por litro es el siguiente: Precio/litro Sin plomo 1 euro Sper Gasoil 1,2 euros 0,88 euros
Cuando usemos la manguera, que simularemos como pulsador, nos saldrn X litros de gasolina a razn de 1 litro por segundo (la salida de gasolina la simulamos temporizando una salida del autmata).
Botn 6 euros Botn 3 euros Anular
E0.0 Luz funciona E0.1 Luz sin plomo E0.2 Luz sper
Pulsador sin plomo E0.3 Luz gasoil Pulsador sper Pulsador gasoil
Versin 22/01/2002
Versin 22/01/2002
//Bajada de taladradora: U( U U O ) UN UN = E 0.0 E 0.1 A 4.0 E 0.2 E 0.3 A 4.0 //(Si marcha y //final de carrera arriba pisado //O el motor ya est bajando) //Y adems no est pulsado el final de carrera de abajo //y no est dado el paro //Activo el motor de bajada
//Subida de taladradora: U( O O O ) UN = E 0.2 E 0.3 A 4.1 E 0.1 A 4.1 //Si est pisado el Final de Carrera abajo //O est dado el paro //O ya est subiendo //Y adems no est pisado el final de carrera de arriba //Activo el motor de subida
Diagrama de contactos :
E 0.0
E 0.1
E 0.2 E 0.3
A 4.0
A 4.0
E 0.2
E 0.1
A 4.1
E 0.3
A 4.1
Versin 22/01/2002
Programa AWL:
//Giro derechas: U UN U S R E E E A A 0.0 0.2 0.3 4.0 4.1 //(Si se ha dado derechas //y no est dado el paro //y el rel est cerrado) //activar derechas //desactivar izquierdas
//Giro izquierdas: U UN U S R E E E A A 0.1 0.2 0.3 4.1 4.0 //(Si se ha dado derechas //y no est dado el paro //y el rel esta cerrado) //activar izquierdas //desactivar derechas
//Rel trmico o paro: U ON R R E E A A 0.2 0.3 4.0 4.1 //(Si est dado el paro //o el rel se abre) //desactivo derechas //desactivo izquierdas
Programa KOP:
E 0.0
E 0.2
E 0.3
A 4.0 S A 4.1 R
E 0.1
E 0.2
E 0.3
A 4.1 S A 4.0 R
E 0.2
A 4.0 R
E 0.3
A 4.1 R
Versin 22/01/2002
UN UN = U U L SV U = U FN L SV U = U = UN =
A 4.0 A 4.1 A 4.2 E 0.0 A 4.2 S5T#3S T0 T0 A 4.1 A 4.1 M 100.1 S5T#6S T1 T1 A 4.0 A 4.0 A 5.1 A 4.1 A 5.0
//Si no est en rojo //ni en amarillo //entonces verde //Si pulso //y est en verde //temporizo 3 seg. //mientras se temporiza los 3 seg. //se enciende la luz amarilla //Cuando luz amarilla off despus de 3 seg. //temporizo 6 seg.
//mientras se temporizan los 6 seg //activo la luz de rojo //Si est en rojo //verde para peatones //Si no est en rojo //rojo para peatones
Versin 22/01/2002
UN UN = U U S U L SE U R S U L SE U R U = UN =
//Si no est en rojo //ni en amarillo //entonces verde //Si pulso //y est en verde //activo amarillo //Si est amarillo //temporizo 3 seg.
T0 //cuando se cumplan los 3 seg de T0 A 4.1 //apago amarillo A 4.0 //enciendo rojo A 4.0 S5T#6S T1 T1 A 4.0 A 4.0 A 5.1 A 4.1 A 5.0 //Si est rojo //temporizo 6 seg. //cuando se cumplan los 6 seg de T1 //apago rojo //Si est en rojo //verde para peatones //Si no est en rojo //rojo para peatones
Versin 22/01/2002
Generador de pulsos:
UN L SE U = =
UN L SE U = UN BEB UN =
Versin 22/01/2002
//Cada impulso generado por la barrera fotoelctrica 2 disminuye //el valor del contador Z1 en una unidad, contando as los
// paquetes que salen del rea de almacenamiento.
//Si el valor de contaje es mayor o igual a 10, se enciende la //lmpara indicadora rea de almacenamiento llena. (Tambin se //puede utilizar la salida A 4.4 para bloquear la cinta //transportadora 1.
Versin 22/01/2002
//Cargo el valor de la multiplicacin (=1 en el primer bucle) //Multiplico (en el primer bucle = 1 de ACU1 x 7 de ACU2) //Guardo el valor de la multiplicacin //Cargo el valor de contador del bucle en ACU1 //Decremento en 1 en ACU1 y salto a meta FACT si <>0
2)
L T L FACT: T L *I T L LOOP 7 MD100 6 MW104 MD100 MD100 MW104 FACT //Inicializo //y lo guardo //Cargo para el primer bucle //Guardo el valor del contador del bucle (=6 para el primer bucle) //Cargo el valor de la multiplicacin (=7 en el primer bucle) //Multiplico (en el primer bucle = 7 de ACU1 x 6 de ACU2) //Guardo el valor de la multiplicacin //Cargo el valor de contador del bucle en ACU1 //Decremento en 1 en ACU1 y salto a meta FACT si <>0
Versin 22/01/2002
U FP SPB U FP SPB U FP SPB BEA CARG: L T BEA MUL: L L <=I SPB L *I T BEA DIV: L L >=I SPB L /I T BEA fin: BEA
E0.5 M10.0 CARG E0.0 M10.1 MUL E0.1 M10.2 DIV EB1 MW100 255 MW100 fin 2 MW100 1 MW100 fin 2 MW100
//Salto a carga //Salto a multiplicacin //Salto a divisin //Fin de mdulo //Cargo el valor en una palab. de marca donde ir
guardando el resultado
//Comparo resultado con 255 //si es mayor que 255, salto //si es menor, contino aqu, //y multiplico por 2 //Transfiero el resultado //Comparo resultado con 1 //si es igual a 1, salto //si es mayor, contino aqu, //y divido entre 2 //Transfiero el resultado
Versin 22/01/2002
OB 100 L T 1 AB5
OB1 UN L SE U = U R U S U U SPBN L SRW T BEA IZQ: UN U SPBN L SLW T FIN: BE M30.0 S5T#250MS T0 T0 M30.0 A5.0 M20.0 A4.7 M20.0 M20.0 M30.0 IZQ AW4 1 AW4 M20.0 M30.0 FIN AW4 1 AW4
Versin 22/01/2002
Programa:
//Activacin de las cintas: UN = U S A4.1 A4.0 E0.0 A4.1 //Si no est activada la cinta intermedia //que se activa la primera cinta //Si sensor de llegada de caja a la cinta intermedia //activar la cinta intermedia
//Seleccin por tamao: U U S U FN = E0.1 E0.2 //Si se activan los dos sensores M0.0 //Es que es una caja grande, lo guardo en una marca E0.2 //Cuando se activa el sensor de salida de la cinta M0.1 //intermedia por flanco positivo M0.2 //Lo guardo en una marca
//Segn el tamao activo la cinta de salida: U U L SV U = U UN L SV U = U R R M0.2 M0.0 S5T#5S T1 T1 A5.0 M0.2 M0.0 S5T#4S T2 T2 A5.1 M0.2 A4.1 M0.0 //Cuando sale la caja //y es grande
//activo la cinta para grandes durante 5 seg. //Cuando sale la caja //y no es grande
//activo la cinta para pequeas durante 4 seg //Cuando sale la caja //Desactivo la cinta intermedia //Reseteo la marca que me indica el tamao
Versin 22/01/2002
CALL "SCALE" IN :=PEW128 HI_LIM :=10.0 LO_LIM :=0.0 BIPOLAR:=FALSE RET_VAL:=MW100 OUT :=MD102 L L >=R = L T MD102 5.0 A124.0 PEW128 PAW128
E124.0 Z0 Z0 MD100 Z0 28 Z0
CALL "UNSCALE" IN :=MD100 HI_LIM :=27.0 LO_LIM :=0.0 BIPOLAR:=FALSE RET_VAL:=MW104 OUT :=PAW128
UN L SE L ITD DTR T
T0 S5T#4S T0 T0 MD100
Versin 22/01/2002
CALL "UNSCALE" IN :=MD100 HI_LIM :=40.0 LO_LIM :=0.0 BIPOLAR:=FALSE RET_VAL:=MW103 OUT :=PAW128
Versin 22/01/2002
1) Usando FCs
OB1 UC U ZV L L ==I CC L L ==I CC L L ==I CC L L >=I R FC4 //Tambin se puede poner: CALL FC4 E0.0 Z0 Z0 0 FC1 Z0 1 FC2 Z0 2 FC3 Z0 3 Z0
Versin 22/01/2002
L SV U = U = U =
Versin 22/01/2002
2) Usando un DB Global
OB1
FC1 L T L T L T FC2 L T L T L T "Tiempos".Bizcochos.Leche // L MW10 "Tiempos".Bizcochos.Harina // L MW12 "Tiempos".Bizcochos.Agitador MW14 DB1.DBW DB1.DBW // L 6 8 10 "Tiempos".Magdalenas.Leche // L MW10 "Tiempos".Magdalenas.Harina MW12 "Tiempos".Magdalenas.Agitador MW14 DB1.DBW // L // L 0 2 4
DB1.DBW DB1.DBW
DB1.DBW
Versin 22/01/2002
FC3
L T L T L T
DB1.DBW // L // L
12 14 16
DB1.DBW DB1.DBW
Versin 22/01/2002
STRUCT: Tipo de datos compuestos cuyos elementos pueden ser simples o compuestos. Se pueden anidar hasta 8 niveles. El tipo de datos STRUCT debe comprender uno o varios componentes que se encuentren entre STRUCT y END_STRUCT. Una estructura dentro de una estructura es considerada como un solo componente. Definir los valores actuales : (Ver > Datos)
Versin 22/01/2002
OB1
FB1 , DB1
FB1 , DB2
FB1 , DB3
U L SV
E0.1 #leche T1
Versin 22/01/2002
L SV L SV U = U = U =
DB1
DB2
DB3
Versin 22/01/2002
OB1
FB1
Versin 22/01/2002
FB2
U L SV L SV L SV
U = U = U =
Versin 22/01/2002
OB1:
U E 0.0 FP M123.6 CC FC1
Versin 22/01/2002
Aplicaciones
La CPU 314 IFM est provista con funciones extendidas y entradas/salidas especiales para aplicaciones concretas, como: Contaje rpido Medida de frecuencia Control de posicin en lazo abierto Control en lazo cerrado Interrupciones de proceso
Diseo
Todas las CPUs estn recubiertas en una robusta caja de plstico. En el frontal encontraremos: LEDs para visualizar estado y error Selectores de modo de operacin con llave Conexin para MPI
La CPU 314 IFM trae consigo de forma aadida: Conexin para entradas/salidas integradas por medio del conector frontal Entradas/salidas analgicas Slot para tarjeta de memoria Compartimento para bateria de backup Reloj en tiempo real
Versin 22/01/2002
Funciones
El software de programacin STEP 7 puede ser utilizado para parametrizar tanto la configuracin del S7 como del resto de CPUs: Interface multipunto MPI Comienzo sincronizado del ciclo reas de remanencia Marcador de reloj Nivel de proteccin Diagnstico del sistema Funcin integrada de contaje Funcin integrada de medida de frecuencia Funcin integrada de control de posicin en lazo abierto Funcin integrada de control en lazo cerrado Interrupciones producidas Interrupciones por tiempo
Funciones integradas Contador Medida de frecuencia Bloques funcionales integrados de control de posicin en lazo cerrado Control en lazo abierto Entrada de interrupciones
Versin 22/01/2002
Datos tcnicos
Unidad de proceso central Memoria principal Memoria de carga: Interna Externa Lenguaje de programacin 24 KB 40 KB RAM 40 KB FEPROM CPU 314 IFM
STEP 7 - Bloques de organizacin (OB) - Bloques de funciones (FB) - Funciones (FC) - Bloques de datos (DB) - Funciones de sistema (SFB, SFC) - Ciclo libre - Controlado por tiempo - Controlado por la hora del dia - Controlado por interrupciones - Inicio de programa 0.3 to 0.6 s 1 s 2,048 64 128 - Contaje - Medida de frecuencia hasta 10 kHz - Control de posicin en lazo abierto - Bloques de funcin integrados 20 entradas digitales 16 salidas digitales 4 entradas analgicas 1 salida analgica Si DC 24 V 1A 16 W 160 x 125 x 130 900 g
Tipos de bloques
Tiempos de proceso - Operaciones de bit - Operaciones de palabra Flags (marcas) Contadores Temporizadores
Funciones integradas
Entradas/salidas integradas
Reloj en tiempo real Voltaje de entrada Corriente consumida Potencia consumida Dimensiones (ancho x alto x profundidad) en mm Peso
Versin 22/01/2002
2 K / 6 Kbytes
4 K / 12 Kbytes
8 K / 24 Kbytes 16 K / 48 Kbytes
16 K / 48 Kbytes
No
0.6 ms
0.6 ms
0.3 ms
0.3 ms
0.3 ms
1.2 ms
1.2 ms
0.8 ms
0.8 ms
0.8 ms
10 DI / 6 DO
No
No
No
No
128
128
512
1024
1024
Entradas y salidas analgicas 32 mximas Configuracin Rack Mdulos de expansin, mximo Nmero de bits internos de memoria Nmero de contadores (no retentivos) 1 fila
32
64
128
128
1 fila
4 filas
4 filas
4 filas
8 mdulos
8 mdulos
32 mdulos
32 mdulos
32 mdulos
1024/mx. 40,000
1024/mx. 40,000
2048/mx. 190,000
2048/> 200,000
2048/> 200,000
32 (16)
32 (16)
64 (64)
64 (64)
64 (64)
Versin 22/01/2002
Nmero de temporizadores (no retentivos) red MPI 187.5 Kbit/s MPI, direccionable Otros
64 (0)
64 (0)
128 (128)
128 (128)
128 (128)
Lgica binaria, operaciones de ruptura, asignamiento de resultado, set/reset, contadores, temporizadores, transferencia, comparacin, salto, llamada a mdulos, funciones especiales, lgica de palabras, aritmtica (coma fija y coma flotante de 32 bits: +, -, *, :), evaluacin de desbordamiento y memorias cclicas. si
Organizacin del Lineal o estructurado programa Proceso del programa Fuente de alimentacin integrada Temperatura ambiente Carga de la fuente de alimentacin (suministrada) Carga de la fuente de alimentacin (24V DC) Cclico, controlado por tiempo o manejado por interrupcin
(voltaje regulado) 24 V DC
0 to 60 C (sin condensacin)
120 / 230 V AC
2 A / 5 A / 10 A
Entradas digitales 32 x 24 V DC; 16 x 24 V DC; 8 x 120 / 230 V AC; 16 x 120 V AC Salidas digitales Submdulos combinados (e/s digitales) Mdulos de funciones 32 x 24 V DC 0.5 A; 16 x 24 V DC 0.5 A; 8 x 24 V DC 2 A; 8 x 120 / 230 V AC 2 A; 16 x 120 V AC 1 A 8 x 24 V DC / 8 x 24 V 0.5 A FM 350 (contador de alta velocidad); FM 351 (accionadores de rpido avance/retroceso); FM 352 (control de leva); FM 353 (control de motores paso a paso); FM 354 (control de posicin) ; FM 356 (automatizacin por ordenador)
Versin 22/01/2002
8 x rels 30 V DC 0.5 A or 250 V AC 3 A 8 x entradas analgicas / 2 x entradas analgicas con +/-10 V, +/-50 mV, +/-1 V, +/-20 mA, 4...20 mA, Pt 100, Ni 100, termoacopladores E, N, J, K (linearizados) Tiempo de codificacin por canal: 10 bits = 2,5 ms; 12 bits = 25 ms; 14 bits = 100 ms
Salidas 4 x salidas analgicas / 2 x salidas analgicas con +/-10 V, +/-50 mV, +/-1 V, +/-20 mA, 4...20 analgicas, 12-bit mA Entradas/salidas analgicas 8-bit Software de programacin (IEC 1131-3) Software opcional 4 x entradas analgicas / 2 x salidas analgicas 0...10 V, 0...20 mA
Programacin por interface MPI With PG 720 / PG 720 C / PG 740 / PG 760 y PC's AT-compatibles 187.5 Kbit/s Trabajo en red Paneles de operacin compatibles MPI (para OP/SIMATIC S7), PROFIBUS: SINEC L2-DP (para DIN E 19245, Parte 3) OP 3, OP 5, OP 15C, OP 25, OP 35, OP 45, OS LS-B
Versin 22/01/2002