lunes, 24 de marzo de 2014

Las interrupciones son inevitables. Estate preparado.

Gestión de interrupciones para la correcta atención de prioridades.

#Primera linea.
Te levantas, te aseas, tomas un café y al coche. Conduces, aparcas, trabajas, comes. Trabajas, lees autoMATICES, conduces y a casa. Desconectas, te relajas con la familia y a dormir.
END

#Primera linea.
Te levantas, te aseas, tomas un café y al coche. Conduces, aparcas, trabajas, comes. Trabajas...

Autómatas no somos, pero podemos llegar a comparar nuestro comportamiento con ellos. Llevamos una vida rutinaria y eso en cierto sentido nos aporta seguridad, pero estamos preparados de forma natural para los imprevistos, para las emergencias... para las interrupciones. Del mismo modo, hemos de preparar a nuestros autómatas para la inmediatez, para dejar su rutina a un lado y atender a las urgencias. Eso lo conseguiremos con una adecuada gestión de las interrupciones.
Al igual que cuando conducimos y pinchamos no dejamos para el final de la jornada la atención de ese incidente, debemos prever en nuestro programa la ejecución de rutinas inmediatas ante diferentes eventos. De no ser así, nuestra reacción ante una emergencia tendría una respuesta demorada en un tiempo indefinido que podría ser tan largo como la totalidad del ciclo de scan. Válido en ciertas situaciones, inaceptable en otras.
Veamos las herramientas más comunes que tenemos a nuestra disposición para ayudarnos en estos casos.

Entradas de interrupción
Consiste en asociar una o varias entradas físicas a sendas rutinas de interrupción. Al activarse una de esas entradas, se detendrá la ejecución del programa para atender a la rutina de interrupción que tenga asociada. Una aplicación de rechazo de alta velocidad disparada por un sensor podría ser una aplicación beneficiada de este tipo de interrupción.

Interrupción temporizada
El tiempo del ciclo de scan no es constante. Eso hace inviable realizar por programa una acción perfectamente repetitiva. Para atender necesidades de este tipo podemos definir rutinas ligadas a interrupciones temporizadas. Bastará habilitar la misma con una base de tiempo concreta y periódicamente el programa principal será detenido para atender esta secuencia especial.

Interrupción por contaje rápido.
Las entradas de alta velocidad y las salidas de pulsos tienen asociadas cada una de ellas un contador. En los autómatas Panasonic como el FP0R podemos definir valores umbral a esos contadores que una vez rebasados forzarán un alto en el programa para dar paso a los requerimientos prioritarios. Asociar acciones a posiciones definidas por los pulsos de un encoder por ejemplo, puede llegar a ser catastrófico en ciertos casos si no utilizamos esta herramienta.

Dependiendo del autómata puede que encontremos otros tipos de interrupciones (como las generadas por los puertos de comunicaciones), pero las anteriores serán las que mayormente nos ayudarán en nuestras aplicaciones.
Hay un detalle importante que no podemos pasar por alto, el refresco físico de las entradas y salidas. En un ciclo de scan corriente, el refresco físico (ver estado de las entradas y conmutar el estado de las salidas) se realiza solo una vez al final del mismo. Por mucho que paremos nuestro programa, si en nuestra interrupción actuamos sobre una salida, ésta no se verá físicamente reflejada hasta reanudar el ciclo de scan y llegar a su fin. De un modo análogo, si basamos alguna instrucción en el estado de una entrada, lo estaremos en realidad haciendo en base al estado que tenía al inicio del ciclo de scan. Este comportamiento podría dar al traste con nuestro objetivo de reacción inmediata. Para salvar esta circunstancia deberemos usar la función de refresco parcial de entradas/ salidas que en los autómatas Panasonic se corresponde con la función F143. Al realizar esta llamada se forzará inmediatamente una actualización de los estados de las entradas y de las salidas.
Con esto, ahora sí, atenderemos adecuadamente a nuestras rutinas prioritarias.


... lees autoMATICES, conduces y a casa. Desconectas, te relajas con la familia y a dormir.
END

No hay comentarios:

Publicar un comentario

cookieassistant.com