Módulos de Organización ... a menos que sea interrumpido por otro OB OB10 : Interrupción Horaria OB1 se ejecuta continuamente OB82: Error Asíncrono MÓDULOS DE ORGANIZACIÓN Módulos de organización (OBs) ..................................................................................... 11 - 2 Almacenamiento de datos desde un OB interrumpido ................................................... 11 - 3 OBs de error y de interrupción ....................................................................................... 11 - 4 Interrupciones horarias ................................................................................................... 11 - 5 Interrupciones de retardo ................................................................................................ 11 - 6 Interrupciones cíclicas .................................................................................................... 11 - 7 Interrupciones de proceso .............................................................................................. 11 - 8 Interrupciones por error en el Hardware ........................................................................ 11 - 9 Interrupciones por error en el Programa/Sistema .......................................................... 11 - 10 Uso de SFCs para programar OBs de Interrupción de Tiempo ..................................... 11 - 11 Uso de SFCs para programar OBs de Error .................................................................. 11 - 12 Ejercicios ........................................................................................................................ 11 - 13
Módulos de Organización (OBs) Ejemplo de OB10: Ejecuta este módulo cada minuto. Empieza a las 9:00 OB1 El sistema operativo llama a otros OBs para utilizarlos: Programa Principal Se ejecuta cíclicamente a menos que sea interrumpido por otro OB de mayor prioridad. Una vez interrumpido, se rompe el ciclo del OB1 y se ejecuta el OB que sea necesario. Ejemplo de OB20: Ejecuta este módulo 2.35” después de detectar un evento Ejemplo de OB82: Ejecuta este módulo si hay un cortocircuito en la entrada analógica PEW532 Módulos de Son la interfase entre la CPU del S7 y el programa. Se puede almacenar Organización y ejecutar el programa entero en el OB1, o bien almacenar el programa en diferentes módulos lógicos y utilizar el OB1 para llamarlos cuando sea necesario. Además del OB1, el sistema operativo puede llamar a otros OBs en respuesta a ciertos eventos. Estos OBs sólo pueden ser llamados por el sistema operativo, no por otros módulos lógicos. La siguiente lista muestra las categorías de los OBs y sus respectivas prioridades. Clases y Prioridades Arranque Prioridad clase 27 Errores no relacionados con el programa Prioridad clase 26/28 Interrupción por Error en el Hardware Prioridad clase 16 Interrupción Cíclica Prioridad clase 12 Interrupción de Retardo Prioridad clase 3 Interrupción Horaria Prioridad clase 2 Programa Cíclico Principal Prioridad clase 1 Interrupción de la Cuando el sistema operativo llama a otro OB , se interrumpe la ejecución Ejecución Cíclica cíclica del proceso ya que el OB1 tiene la prioridad más baja. Esto significa que cualquier otro OB puede interrumpir el programa principal, ejecutar su código y devolver la ejecución del programa al OB1 justo en el punto en que lo interrumpió. Si la CPU detecta un OB con prioridad más alta que la del que se está ejecutando, se produce una interrupción. Entonces el sistema operativo almacena la pila de registros entera para el módulo interrumpido. Esta información se restaura cuando el sistema operativo reasume la ejecución. Un OB que interrumpe a otro puede llamar a FCs y FBs como el OB1. Hay que tener cuidado al usar esta función, ya que cada CPU tiene un número de llamadas anidadas (p.ej. la CPU314 puede anidar 8 llamadas a la vez)
Almacenamiento de datos desde un OB interrumpido Pila de Interrupción (Pila I) Contenido acumuladores ACCU1,ACCU2 Contenido registros direcciones AR1, AR2 El sistema llama a un nuevo OB Contenido registros módulos datos DB, DI Puntero en la Pila L Antes de ejecutar el nuevo OB, se salvan los registros del módulo interrumpido Palabra Estado, Registro MCR, Puntero Pila B Pila de Módulo (Pila B) Registros DB y DI Puntero de datos temporales (pila L) Almacenamiento de Cuando el sistema detecta la interrupción de un OB, la información actual Datos tras una de acumuladores y registros del módulo interrumpido se almacenan en la Interrupción del Pila de Interrupción (Pila I). Programa Si el nuevo OB llama a FCs o FBs, los datos procesados en cada módulo se almacenan en la Pila de Módulos (Pila B). Cuando finaliza la ejecución del nuevo OB, el sistema operativo recarga la información de la Pila I y reasume la ejecución del módulo interrumpido desde el mismo punto en que se produjo la interrupción. Nota Si la CPU cambia al modo STOP (quizá debido a un error en el programa), la Información del Sistema del STEP 7 le permite examinar las pilas I y B. Esto le ayudará a determinar la causa del STOP. Número de Módulo Dirección de retorno
OBs de Error y de Interrupción Los OBs se encuadran dentro de dos categorías; sus respectivas funciones determinan qué dispara el punto de ruptura del OB que se esté ejecutando. OBs que realizan tareas periódicas (Interrupción Horaria) Se ejecuta en una fecha u hora del día especificada Se ejecuta tras una demora especificada después de un evento Se ejecuta en un ciclo especificado OBs que reaccionan a condiciones de error (Interrupción Error) Se ejecuta si la CPU detecta un error de proceso o de hardware Se ejecuta si la CPU detecta un error que no está relacionado con una instrucción específica del programa Se ejecuta si la CPU detecta un error que puede ser asociado al procesamiento de una instrucción específica del programa OBs (Interrupciones) Para configurar estos OBs para que se activen en el período de tiempo Periódicos deseado, se puede usar la herramienta “Configurar el HW” (Propiedades de la CPU) o programar la Función de Sistema asociada (SFC). OBs de Error Estos OBs responden a condiciones de error. Cuando se produce un error, la CPU llama al OB de Error adecuado. Si el OB de Error ha sido programado, la CPU ejecuta el programa. Si el OB de Error no ha sido programado, la CPU se va al modo STOP (en la mayoría de los errores). Categoría Nombre Descripción Prioridad OB1 Programa Principal Se ejecuta en ciclos continuos 1 OB10 Interrupción Horaria Empieza en un momento programado 2 OB20 Interrupción de Retardo Se ejecuta tras una demora programada 3 OB35 Interrupción Cíclica Se repite a intervalos programados 12 OB40 Interrup. Error Hardware Se ejecuta por error en módulo de E/S 16 OB80 - 87 Error Asíncrono Se ejecuta si hay un error asíncrono 26/28 OB121,122 Error Síncrono Se ejecuta si hay un error síncrono 27 OB100 Arranque Se ejecuta al rearrancar Igual al OB interrumpido
Interrupciones Horarias El OB Horario (OB10 en el S7-314) permite interrumpir el OB cíclico y ejecutar un código en una fecha especificada o a intervalos especificados. Se puede programar este OB para que se ejecute en los siguientes intervalos: Una vez: se ejecuta una vez, en el momento especificado. Cada minuto: Se ejecuta en intervalos de 1 minuto, empezando desde el momento especificado Cada hora: Se ejecuta en intervalos de 1 hora, empezando desde el momento especificado Cada día: Se ejecuta 1 vez al día, desde el momento especificado Cada semana: Se ejecuta 1 vez por semana, empezando desde el momento especificado Cada mes: Se ejecuta 1 vez al mes, empezando desde el momento especificado Cada año: Se ejecuta 1 vez al año, empezando desde el momento especificado Para utilizar la interrupción horaria (OB10), debe seguir los siguientes pasos: Configure el OB10 definiendo el evento de comienzo (fecha y/o hora) y el intervalo de ejecución. Esto se puede hacer utilizando la herramienta “Configurar el HW “(Propiedades de la CPU) o haciendo que su programa llame a la SFC28 (SET_TINT). Active el OB10. Esto se puede hacer o bien utilizando la herramienta “Configurar el HW” y seleccionando la herramienta Activar o haciendo que su programa llame a la SFC30 (ACT_TINT). Programe el OB10 con el código que desee que se ejecute en la interrupción horaria y cargue el OB en la CPU como parte de su programa.
Interrupciones de Retardo El OB de Retardo (OB20 en el S7-314) permite interrumpir el OB cíclico y ejecutar un código después de una demora especificada. El OB20 se arranca mediante una llamada al SFC32 (SRT_DINT). Se define la demora en los parámetros que le pasa al SFC de la siguiente forma: OB_NR Número del OB que arrancará después de retardo DTIME Duración de la demora (desde 1 hasta 60000 ms) SIGN Identificador que se pone en la información de arranque del OB cuando se llama al OB de retardo RET_VAL Contiene el código de error si se produce un error mientras el OB se procesa RETARDO ( P ) ( ) E0.0 M0.1 SFC32 (SRT_DINT) EN ENO OB_NR DTIME SIGN RET_VAL 20 T#500ms W#16#01 MW10 M2.0 Para utilizar la interrupción de retardo (OB20), debe seguir los siguientes pasos: Programe una llamada para comenzar la interrupción de retardo con la SFC32 (SRT_DINT) y configure los parámetros asignados a la ejecución del OB, la demora y una localización para almacenar los valores de retorno. Programe el OB20 con el código que dese que se ejecute después del período de demora establecido en la llamada a la SFC32. Cargue el OB1 (donde está el SFC) y el OB20. En el ejemplo mostrado arriba, cuando la entrada E0.0 cambia de 0 a 1, la SFC32 programa el OB20 para ser llamado por el sistema tras una demora de 500ms. El SFC34 (QRY_DINT) se puede utilizar para ayudarle a monitorizar el estado de la interrupción de retardo en caso de error o de resultados inesperados.
Interrupciones Cíclicas El OB de interrupciones cíclicas OB (OB35) permite interrumpir el programa a intervalos fijos. Una vez activado, el OB35 se ejecutará según un intervalo fijado en “Configurar el HW”. OB35 OB35 ...interrumpe el OB1 y se ejecuta el OB35 cada 250ms OB1 se ejecuta continuamente OB35 OB35 Una Interrupción Cíclica interrumpe el ciclo del programa principal a intervalos especificados. El intervalo es fijo y constante. Cada vez que transcurre este intervalo, se produce la llamada al módulo de Interrupción Cíclica. STEP 7 proporciona el OB35 como módulo de Interrupción Cíclica del proceso. El intervalo por defecto es 100 ms, con un rango que va desde 1ms a 1 minuto. Este intervalo se configura utilizando la herramienta “Configurar el HW” del STEP7. Cuando se habilita una interrupción cíclica, se está configurando el intervalo con respecto al momento del arranque. Este momento de arranque se inicializa a 0 cada vez que la CPU pasa de STOP a RUN, cuando el OB100 llama al OB1. Nota Es importante asegurarse de que el intervalo configurado es mayor que el tiempo requerido para ejecutar el programa. El sistema operativo llama al OB35 en el momento configurado; si el OB35 ya está siendo ejecutado en ese momento, el sistema operativo llamará al OB80 (fallo de tiempo de ciclo). Para usar el OB35, siga los siguientes pasos: Configure el OB35 definiendo el tiempo de ciclo en “Configurar el HW”; configure el módulo de CPU y las interrupciones cíclicas. Seleccione un valor para el tiempo de ciclo del OB35 en el rango de 1 a 60000 ms, y cargue la configuración en la CPU. Programe el OB35 con el código que desee que se ejecute en la interrupción. Cargue el OB35 y ponga la CPU en modo RUN. La transición STOP a RUN inicializa el intervalo de tiempo para el ciclo, y el OB35 se ejecutará cada vez que pase el intervalo especificado.
Interrupciones de proceso +27648 Módulo de Entradas Analógicas Si el valor del transmisor de nivel PEW352 es más grande que el límite superior habilitado par esta salida analógica, llama al OB40. Las interrupciones de Proceso se manejan en STEP 7 a través del OB40. Por medio de la programación del OB40, su programa puede responder a una señal procedente de diferentes tarjetas (tarjetas de E/S, tarjetas CP, tarjetas FM, etc.). Para una tarjeta de E/S digital o analógica que permite modificar sus parámetros, se puede utilizar “Configurar el HW” para definir qué señal se va a usar para iniciar el OB. Para CPs y FMs, debe utilizar el software de configuración disponible con la tarjeta. Cuando se configura una tarjeta de entradas analógica, como se muestra en el ejemplo de arriba, se puede determinar los límites que se consideren aceptables para el valor medido. Si el valor medido excede ese límite, se llama al OB40 para ser ejecutado. Esto es similar a cuando se realiza una comparación lógica en el OB1, y al alcanzar el límite superior, se llama a un FB o a un FC. Utilizar el OB40 no requiere ningún código en otro módulo para hacer la comparación. El código que haya en el OB40 se utiliza para controlar el proceso. Para usar la Interrupción de Proceso siga los siguientes pasos: Configure el evento de proceso, por ejemplo el límite analógico o el estado FM utilizando para ello el software de configuración adecuado (“Configurar el HW” en el caso de analógicas). Cargue esa configuración en la CPU. Programe el OB40 con el código que desee que se ejecute cuando el sistema reconozca el evento programado. Cargue el OB40 en la CPU, y ponga la CPU en modo RUN. Cuando se produzca el evento, el OB40 interrumpirá la ejecución y comenzará a correr. +20000 Límite superior para la interrupción
Interrupciones por Error en el Hardware Módulo de Entradas Analógicas X Si el módulo analógico ha sido configurado para habilitar la rotura de hilo como interrupción hardware, se utilizar cualquier problema de hardware en el transmisor para llamar a un OB de detección de errores (por ejemplo, el OB82) +27648 Las interrupciones por Error del Hardware forman parte de los errores que puede detectar el PLC y que se llaman Errores Asíncronos. Los errores Asíncronos son fallos relacionados con la funcionalidad del PLC, no con el programa que se está ejecutando. Los OBs llamados por errores Asíncronos se procesan inmediatamente, ya que ellos tienen la prioridad más alta dentro de los OBs de error e Interrupción. Cuando el sistema detecta un error asíncrono, comienza el OB de error apropiado (OB80 - 87). Se debería utilizar el OB llamado para ejecutar el código necesario para enviar una alarma auditiva o un mensaje de error o para implementar medidas de control para compensar un error del hardware. Ejemplos de eventos hardware que pueden provocar una llamada a un OB de error son: Fallo de Alimentación o Batería (OB81) Rotura de hilo desde un módulo que tenga capacidad de diagnóstico (OB82) Cortocircuito en un módulo de entradas analógico (OB82) Fallo de EPROM (OB82)
Interrupciones por Error en el Programa/Sistema El STEP7 proporciona otros OBs utilizados para interrumpir el programa además de las interrupciones por errores en el hardware. Los errores que llaman a esos OBs se consideran errores en tiempo de ejecución; se detectan mediante los diagnósticos internos del PLC. Errores en Tiempo de Ejecución Errores Asíncronos Errores Síncronos OB de Error OB de Error OB80 Error de Tiempo (por ejemplo, tiempo de ciclo excedido) OB85 Error de Secuencia de Programa (por ejemplo, OB no cargado) OB87 Fallo de Comunicaciones (por ejemplo, Datos Globales) OB121 Error de Programación (por ejemplo, DB no cargado) OB122 Error de Acceso (por ejemplo, intento de acceder a un módulo periférico no presente) Los Errores en el Programa/Sistema también pueden detectados por el PLC y se llaman Errores en Tiempo de Ejecución. Dentro de este tipo de errores también podemos distinguir entre Asíncronos y Síncronos. Los errores Síncronos, normalmente son fallos de programación como, por ejemplo, que falte algún módulo en el programa. También se considera Error Síncrono cuando el programa intenta acceder a un módulo de señales que no está presente. Los errores Asíncronos se producen aleatoriamente y pueden ir desde un fallo en las comunicaciones hasta un tiempo de ciclo excedido.
Uso de SFCs para programar OBs de Interrupción de Tiempo Además de usar la herramienta “Configurar el HW”, se pueden utilizar las Funciones de Sistema integradas (SFCs) para configurar y controlar los OBs de interrupción. Estas SFCs proporcionan los parámetros formales listados debajo que pueden ser programados con valores actuales desde una instrucción de llamada a SFC dentro de su programa. SFCs para el manejo de Interrupciones Horarias SFC28 SET_TINT Ajustar la hora de arranque de la interrupción SFC29 CAN_TINT Borrar una alarma horaria activada SFC30 ACT_TINT Activar un OB de alarma horaria SFC31 QRY_TINT Consultar una alarma horaria SFCs para el manejo de Interrupciones de Retardo SFC32 SRT_TINT Arrancar una alarma de retardo SFC33 CAN_DINT Anular una alarma de retardo SFC34 QRY_TINT Consultar una alarma de retardo Los OBs de Interrupción por tiempo se pueden configurar y controlar en tiempo de ejecución mediante el uso de algunas funciones de sistema (SFC). En el caso de las Interrupciones Horarias, estas funciones nos permiten tanto ajustar la hora a la que se debe producir la interrupción, como activarla, desactivarla o, incluso, consultar el momento de activación. En cuanto a las Interrupciones de retardo, mediante funciones de sistema es posible tanto activar, como desactivar una alarma en tiempo de ejecución así como consultar su estado.
Uso de SFCs para programar OBs de Error Las Funciones de Sistema integradas (SFCs) se pueden utilizar para controlar y monitorizar las interrupciones asociadas a errores síncronos y asíncronos. Estas SFCs proporcionan los parámetros formales listados debajo los cuales pueden ser programados con valores actuales mediante la instrucción de llamada a SFC. SFCs para manejo de Errores Síncronos SFC36 MSK_FLT Enmascarar errores de sincronización SFC37 DMSK_FLT Desenmascarar errores de sincronización SFC38 READ_ERR Leer el registro de estado de eventos SFCs para manejo Errores Síncronos y Asíncronos SFC39 DIS_IRT Inhabilitar Interrupción SFC40 EN_IRT Habilitar Interrupción SFC41 DIS_AIRT Inhabilitar Interrupciones de Alarma SFC42 EN_AIRT Habilitar Interrupciones de Alarma También es posible configurar y controlar en tiempo de ejecución los OBs de Error mediante el uso de algunas funciones de sistema (SFC). Aunque quizá, en este caso, sea más importante la posibilidad de acceder al registro de eventos, lo cual permite diseñar un programa que sea capar de reaccionar ante los posibles errores que se presenten. Además, por supuesto, estas funciones nos permiten en cualquier momento habilitar o inhabilitar las interrupciones.
Ejercicio 10: Ajuste de la Hora del Sistema Ajuste la hora correcta en la CPU Ejercicio: Ajuste la hora del sistema Ver capítulo 15: Ejercicios Resueltos
Ejercicio 11: Programación de una Interrupción Horaria Fecha: 11/08/99 Archivo Nª: s7n21140. ppt 14 SIMATIC S7 Siemens SA 1996. All rights reserved . Ejercicio 11: Programación de una Interrupción Horaria Programe un OB de interrupción para una hora prefijada Ejercicio 11: Programación de una Interrupción Horaria Programe un OB de interrupción para una hora prefijada Ejercicio: Programe una interrupción horaria utilizando las Funciones de Sistema Ver capítulo 15: Ejercicios Resueltos