Práctica 2 Automatización Industrial (10/11) TEMPORIZADORES Y CONTADORES 1 Objetivo El objetivo de esta práctica es ahondar en las técnicas de programación básicas del autómata. Para ello, el alumno deberá implementar en STEP 5 un automatismo que necesite de elementos de temporización y de cuenta e implementarlo sobre el autómata S95-U de Siemens. Como sistema se empleará la maqueta neumática a disposición en el laboratorio de prácticas. El entorno de programación será el programa S5Win empleado en la práctica anterior. 2 Temporizadores en STEP 5 El identificador de las variables de temporización viene predefinida en STEP 5 con la letra T seguido del número de temporizador que se va a usar. En el modelo de autómata S95-U el número de temporizadores a disposición del programador es de 128 (T 1 hasta T 128). Cada temporizador tiene un área de 16 bits reservada en la memoria de la CPU. Los bits desde el 0 al 11 del área de memoria contienen el valor de temporización en decimal codificado en formato BCD (cada grupo de cuatro bits contiene el código binario de dicho valor decimal). Los bits 12 y 13 contienen la base de tiempo en código binario (ver figura 1). Cuando el autómata está en estado RUN, va decrementando en una unidad (que corresponde a un tiempo fijado en la base de tiempos) el valor de temporización hasta llegar a 0. Figura 1. Presencia en memoria de un temporizador El valor de temporización se representa mediante una constante que en STEP 5 tiene el formato KT X.Y donde X es el valor de temporización (0-999) e Y es la base de tiempos. Existen 4 bases de tiempos posibles (bits 12-13 en la figura 1): 0 para 10ms (centésimas de segundo), 1 para 100ms (décimas de segundo), 2 para 1s y 3 para 10s. Así por ejemplo, la constante de tiempo KT 500.0 marca un tiempo de 5s con precisión de 10ms. El Práctica 2 Automatización Industrial (10/11) máximo tiempo de contaje de un temporizador es, por tanto, 9990 segundos (no llega a las 3 horas). Nota: Esta sintaxis de formato de tiempo cambia para el lenguaje más moderno STEP 7; éste proporciona el tipo de dato S5TIME para preservar compatibilidad. 2.1 Tipos de temporizadores El lenguaje STEP 5 (y también STEP 7) ofrece al programador 5 tipos de temporizadores, dos temporizadores de pulso, dos de retardo a la conexión y uno de retardo a la desconexión. Su uso se determina por la instrucción de disparo empleada. Éstos son: • SI: Temporizador de pulso sin memoria • SV: Temporizador de pulso con memoria redisparable • SE: Temporizador de retardo a la conexión sin memoria • SV: Temporizador de retardo a la conexión con memoria y redisparable • SA: Temporizador de retardo a la desconexión con memoria y redisparable. (en negrita el nemónico del operador correspondiente) Es imprescindible que el alumno conozca a la perfección el funcionamiento de cada uno de ellos ya que, en cada situación, la elección de uno u otro puede resultar del todo inapropiada o, al menos, complicar en exceso la implementación. Para ello consultar los manuales de Step5/Step 7 que se encuentran en el servidor del departamento. Si se dispone del entorno avanzado de programación Simatic Manager para Step 7 lo más cómodo es consultar directamente la ayuda contextual con el comando F1. 2.2 Programación de un temporizador Para utilizar cualquier temporizado son imprescindible al menos dos instrucciones. La primera es una instrucción que carga el valor de memoria del temporizador en el registro ACU1 (alias AKK1 en la documentación de STEP 5), el primer acumulador disponible en la ALU de los autómata SIEMENS. Esta instrucción es del tipo: L KT X.Y donde L es la instrucción conocida de carga y KT X.Y la constante de tiempo, es decir el lapso de tiempo que marca la temporización. La segunda instrucción necesaria es la de disparo y tiene la forma: <Tipo de temporizador> <Identificador de temporizador> Así por ejemplo, la instrucción “SI T1” indica que se va a emplear al temporizador T1 como temporizador de pulso. Una típica secuencia de instrucciones para configurar el comportamiento de dicho temporizador es: U L SI E KT T 32.0 500.0 1 donde se emplea el temporizador de pulso para medir un tiempo de 5s con señal de disparo la entrada U E 32.0. Esto es así porque la señal de disparo queda determinada Práctica 2 Automatización Industrial (10/11) por el valor lógico del registro RLO justo en el momento de ejecutarse la instrucción de disparo (“SI T1” en el ejemplo), que en este caso es E 32.0 (suponiendo, claro está, que “U E32.0” sea una instrucción de primera consulta). NOTA IMPORTANTE: Todos los temporizadores (y contadores) se ven estimulados por un flanco de la señal de disparo (y no por su nivel). Este flanco es normalmente de subida a excepción de los temporizadores de retardo a la desconexión que detectan un flanco de bajada. Internamente, el temporizador guarda un registro binario con el valor de la señal de disparo en el anterior ciclo scan y comparan dicho valor con el del ciclo actual. 2.3 Valor de un temporizador El valor lógico de un temporizador viene determinado por su comportamiento. Para razonar con dicho valor durante la programación se emplea su identificador (por ejemplo T1) como argumento de un operador lógico (U, O, UN, ON etc.). Nunca se puede modificar el valor lógico de un temporizador (el acceso a memoria está protegida), por lo que las instrucciones S T1 o = T1 no son admisibles en STEP 5 (ni en STEP 7). El valor numérico de un temporizador es su valor de temporización (el tiempo contado hasta el momento). La instrucción L T1 carga dicho valor en el primer acumulador (ACU1) en formato decimal y LC T1 lo carga en formato BCD. 3 Contadores en STEP 5 Los elementos para la cuenta de eventos vienen predefinidos en STEP 5 por la letra Z seguido de un número de identificación. El modelo S95-U lleva integrados 128 contadores numerados desde el 1 al 128. Al igual que los temporizadores, los contadores tienen un área reservada en memoria de 16 bits de los que sólo se emplean los 12 primeros para almacenar el valor de cuenta en formato BCD. Esto supone que, como en el caso del valor de temporización, el valor de cuenta está siempre comprendido entre 0 y 999 (en consecuencia, no es posible almacenar números negativos). Cuando el valor del contador llega a 999 simplemente deja de aumentar ante un evento incremento. Lo mismo ocurre al intentar decrementar un contador a 0. Existen dos tipos de contadores en STEP 5: los ascendentes, que suman una unidad al valor de cuenta y los descendentes que restan una unidad. En ambos casos el evento de disparo es por flanco de subida (no por nivel). Los nemónicos de los operadores para SETP 5 son: • ZV: Contador ascendente • ZR : Contador descendente A diferencia de los temporizadores, basta una única instrucción que determine la señal de disparo para emplear un contador en AWL. Dicha señal será el valor del RLO en el momento de ejecutar la instrucción. Como ejemplo, la secuencia de instrucciones U ZV E Z 32.0 1 programa al contador Z1 para incrementar en una unidad su valor siempre que se produzca un evento flanco positivo de la señal E 32.0. Como no existe ninguna Práctica 2 Automatización Industrial (10/11) información adicional, el valor de cuenta vale inicialmente 0. Para poder iniciar la cuenta en cualquier otro número, es necesario asignar dicho valor al contador antes de la instrucción de disparo. Este valor se carga previamente en formato BCD en el acumulador ACU1 y después se utiliza una instrucción del tipo “S <Identificador de contador>” para realizar la copia al área de memoria. Como ejemplo, el conjunto de instrucciones: U L S U ZV E KZ Z E Z 32.1 12 1 32.0 1 inicia la cuenta del contador ascendente en 12 cuando la entrada E 32.1 está a nivel alto. En este caso, tras el primer flanco positivo de E 32.0 el valor del contador será 13, el segundo flanco positivo provoca que el valor del contador llegue a 14 y así sucesivamente. KZ <X> es la forma de definir en STEP 5 una constante en BCD. El número X (de tamaño WORD), se introduce en formato decimal pero internamente se almacena como BCD (4 bytes para cada dígito). Para el caso de los contadores, es imprescindible introducir el valor de contaje con este formato. 3.1 Valor del contador El valor lógico del contador es el mismo que le otorga el lenguaje C a un número: 0 (falso) si el contador vale 0 y 1 (verdadero) para cualquier otro valor (se recuerda que no es posible que el valor numérico del contador sea negativo). Para razonar con el valor lógico dentro de un programa se deben utilizar, como en el caso de los temporizadores, los operadores lógicos (por ejemplo “U Z1” copia el valor lógico del contador en el registro RLO si es una instrucción de primera consulta). Análogamente a los temporizadores, la instrucción “L Z1” carga el valor del contador en decimal en el registro ACU1 y “LC Z1” carga el valor en formato BCD. EJERCICIO 1 Para una mejor comprensión de los recursos que ofrece STEP 5 en relación con los temporizadores y contadores se recomienda al alumno el siguiente ejercicio: 1) Arranque la herramienta de desarrollo S5Win y abra un nuevo proyecto 2) En el bloque OB1 y mediante contactos escriba la siguiente ecuación compuesta por un contador ascendente (ZV) y un temporizador de pulso con memoria (SV) (figura 2). Práctica 2 Automatización Industrial (10/11) Figura 2. Temporización y Cuenta 3) Alterne entre las representaciones AWL y KOP para ver la sintaxis empleada y su trascripción al lenguaje ensamblador. 4) Cierre el editor del bloque y guarde la aplicación. 5) Arranque el simulador y transfiera el bloque OB1. 6) Configure el simulador para visualizar las variables relativas al programa que acaba de transferir. En concreto, debe activar la entrada E 32.0 e incluir los identificadores Z1 y T1 en cualquiera de las cajas de texto situadas debajo de la etiqueta “Visualizar”. Al terminar este proceso, la ventana de simulación debería tener el aspecto siguiente: Figura 3. Ventana de simulación del entorno S5Win Práctica 2 Automatización Industrial (10/11) 7) Arranque ahora el simulador y verifique lo que ocurre cuando se pulsa y se apaga la señal E 32.0. 8) Modifique ahora el bloque OB1 cambiando el temporizador de tipo SV por uno de tipo SI. Para ello basta con editar el segmento en modo AWL y sobrescribir el texto de forma conveniente. 9) Grabe y transfiera el nuevo bloque OB1 modificado al simulador. Presione el botón Reset en la ventana de simulación para borrar los valores del contador y el temporizador y ejecute nuevamente el programa. ¿Hay alguna diferencia de comportamiento respecto al caso anterior? Justifique la respuesta al profesor. EJERCICIO 2 Para realizar esta práctica con éxito será necesario programar el control del sistema automático que se describe a continuación en STEP 5, prestando especial atención a los detalles de implementación que se exigen. 1 Descripción del automatismo El ciclo de trabajo del automatismo implica el movimiento automático de los dos cilindros de doble efecto de la maqueta neumática a disposición del alumno para que se correspondan con los diagramas de desplazamiento-fase que se muestran en la figura 4. E C1 t 5s E C2 2s 2s t Figura 4. Diagrama Desplazamiento-Fase de dos cilindros de doble efecto El sistema arranca con ambos cilindros comprimidos. Tras un flanco positivo de un interruptor de arranque P_ON, se expanden simultáneamente ambos cilindros. Posteriormente se producen compresiones y expansiones consecutivas del cilindro C2 mientras que el C1 se mantiene expandido, según indica la figura. La tercera compresión del cilindro C2 marca el punto de sincronismo para la compresión de C1 y la terminación el ciclo. El sistema debe cumplir además las siguientes especificaciones: 1-Tiene un interruptor de arranque P_ON (detectado por flanco) y un pulsador de reanudación P_CON (cuya función se describe en el apartado 3). Para simplificar el Práctica 2 Automatización Industrial (10/11) problema, no se tiene en cuenta la necesidad de un pulsador OFF para detener el automatismo, ni la de un pulsador de emergencia. La figura 5 muestra el cuadro de mandos del operario. 2-Modo semiautomático: Terminado el ciclo de producción es necesario volver a pulsar ON para que empiece un nuevo ciclo. 8 CONT 9 Compresión de C1 y C2 P_ON P_CON Figura 5: Cuadro de mandos A etapa de reposo Figura 6: Secuencia de escape 3-Watch dog que controla el tiempo total de ciclo: El tiempo previsto para el ciclo completo es de 19 segundos más los retardos derivados de los tiempos de compresión y expansión de los cilindros. Superado dicho tiempo en 1 segundo sin que haya terminado el ciclo principal se efectuará la siguiente secuencia de escape (ver figura 6): • Se detiene toda acción (figura 6, etapa 8), lo que permitirá revisar el estado de los cilindros. • Corregido el problema manualmente, el operador activará el pulsador P_CON con lo que se comprimen los dos cilindros (figura 6, etapa 9). Dicho evento se detectará por nivel. • Finalizada la compresión se vuelve a la etapa inicial de reposo y el sistema retorna al funcionamiento semiautomático. 2 Normas para la realización de la práctica Esta práctica se realizará en el laboratorio dispuesto a tal efecto situado en la primera planta. Para la realización de la misma será necesario: 1) Modelado GRAFCET del ciclo principal (obviamente incluyendo la secuencia de escape). El modelo debe incluir obligatoriamente una rama de actividad para cada cilindro que funcionan en paralelo. 2) Estructuración del código: • OB1, OB21 • PB1: Ecuaciones de activación de etapas (parte secuencial del automatismo) • PB2: Ecuaciones de transición Estado-Actuadores • PB3: Secuencia de escape 3) Todos los bloques PB deben ser invocados incondicionalmente desde el bloque OB1 (instrucción SPA <Nombre de bloque>). Práctica 2 Automatización Industrial (10/11) 4) Es obligatorio el uso de un contador descendente disparado por cada compresión del cilindro C2. Por tanto, debe arrancarse con valor inicial 3 y se utilizará su valor lógico como condición dentro del programa. 5) Simulación previa del programa en el ordenador y supervisión del profesor de prácticas del correcto funcionamiento. 6) Cableado del sistema y control de la maqueta neumática. El alumno deberá traer al inicio de la práctica un borrador con los Grafcets de niveles 1 y 2. Este punto es fundamental para poder terminar la práctica en tiempo y forma. Durante la realización de la misma se procederá en primer lugar a la simulación del programa para posteriormente realizar el cableado y la ejecución en el autómata S5. Al comienzo de la siguiente práctica el alumno entregará en papel el código debidamente comentado, los Grafcets de niveles 1 y 2 así como la tabla de símbolos empleada para su realización. Consejos adicionales: 1) Se recomienda realizar una segmentación adecuada del código, lo que facilitará su posterior depuración y evitará la aparición de errores. 2) Ambos cilindros son de doble efecto y se controlan mediante electroválvulas de 2 posiciones y 5 vías. 3) Toda la información adicional relativa a temporizadores y contadores para STEP 5 se encuentra a disposición del alumno en la página Web del departamento (http://www.elai.upm.es).