domingo, 7 de mayo de 2017

Una ronda de cerveza, por favor

Nunca he presenciado una buena conversación de bar que fuese directamente al grano. Y este blog no va a ser una excepción. Comenzaré con unas generalidades con las que poder entretener la espera mientras nos sirven las cervezas (en la barra) y podamos sentarnos en nuestra mesa y comenzar a meternos en faena.
¿Para qué sirve un autómata?
A esta pregunta suelo contestar con la misma respuesta que cuando mis hijos eran pequeños y me preguntaban, después de responderles a la pregunta previa sobre mi trabajo: ¿y qué hace un ingeniero, papá?
Los autómatas sirven para hacer que las máquinas trabajen solas. En la medida de lo posible, claro está.
En una visión simplificada podemos ver una máquina como un conjunto de mecanismos movidos por una serie de accionadores, que disponen de una serie de detectores y sensores para conocer su estado y de unos mandos e indicaciones para ser gobernados por humanos (¡u otras máquinas!). Entre los accionadores podemos encontrar, sin pretensiones de exhaustividad, motores, cilindros, resistencias calefactoras, bombas... Entre los sensores detectores de todo tipo (inductivos, capacitivos...), finales de carrera, presostatos, células de carga, fotocélulas, termómetros, encóders... un abanico mucho más extenso todavía, si cabe. Y entre los mandos desde los conocidos, y nunca bien estimados, pulsadores, interruptores y pilotos hasta donde nos alcancen los límites de nuestra imaginación.
El problema que tienen que resolver los autómatas es conseguir accionar los elementos apropiados en cada momento del trabajo de una máquina (o instalación) en función de toda la información disponible de sus sensores y de su estado.
¿Cómo lo resuelven? Mediante el hardware adecuado para controlar los accionadores y captar la información de los sensores y mediante el programa (software) adecuado. La primera parte nos la proporciona el fabricante de los autómatas (y los de la aparamenta eléctrica siendo más generales), de la segunda parte nos ocuparemos nosotros.
¿Pero cómo trabaja?
En una primera y simplificada visión el autómata trabaja realizando ciclos repetitivos de forma indefinida. En cada ciclo hace 3 tareas:

  1. Lectura de las entradas. El hardware dedicado a captar la información de los sensores se encarga de ver cómo están todos ellos, convirtiendo las señales eléctricas que de ellos recibe en valores numéricos (o binarios) y escribiendo en la memoria del autómata dichos valores.
  2. Ejecución del programa completo. El programa guardado en el autómata se ejecuta de principio a fin. Este programa lee sus datos de la memoria, que incluirán el estado de los sensores, actualizados en el paso 1, el estado de las salidas, del ciclo anterior también guardadas en la memoria, y el estado de otras variables internas de la aplicación también guardadas en la memoria. Con todos esos datos el programa debe generar el nuevo estado que tendrán los accionadores de la máquina y cuantas variables necesite. Todo ello el programa lo escribe en la memoria del autómata.
  3. Escritura de las salidas. El hardware dedicado a controlar los accionadores lee el estado que tienen en la memoria del autómata (generados por el programa) y los convierte en las señales eléctricas apropiadas para cada accionador.
Y este ciclo de tres pasos se repite hasta el infinito y más allá...
La realidad es un poco más compleja porque, normalmente, hay varios ciclos como el anterior ejecutándose a la vez en el autómata además de otros procesos encargados de las comunicaciones (muy importantes en los modernos autómatas) y otras tareas administrativas del propio autómata. Normalmente se llaman TAREAS y, aunque lo acabe de decir, no se ejecutan a la vez en el autómata sino que comparten el tiempo de ejecución del procesador del autómata entre ellas (normalmente sólo una tarea se ejecuta en el autómata en cada momento). Pero no es ahora tiempo de saber cuándo y cómo comienzan y se interrumpen cada tarea.
¡Ah! Veo que nos han servido ya la ronda. Vayamos a nuestra mesa y comencemos...

martes, 8 de noviembre de 2016

¿De qué va esto?

A no ser que hayas llegado a este blog porque un buscador despistado haya detectado que está escrita la palabra sexo, seguro que ya sabes qué son los autómatas programables. ¿Pero quién soy yo?
Me llamo Sebastián y desde que terminé mi carrera de Ingeniero Industrial allá por el año 88 (del siglo pasado) me he venido peleando profesionalmente y de manera ininterrumpida pero muy satisfactoria con estos curiosos aparatillos que en España hemos venido a llamar autómatas programables.
He sido muy afortunado por poder dedicar una gran parte del tiempo que ocupo en mi trabajo a una de mis grandes aficiones: los ordenadores (el primer ordenador que compré fue en el año 78 con 14 años). Y es que aunque ahora parezca evidente el parentesco entre ambos dispositivos, en mis comienzos, cuando pocos habían oído hablar de autómatas e incluso a muchos técnicos en automatización les sonaba a ciencia ficción, autómatas y ordenadores eran mundos inconexos abordados por profesionales completamente diferentes. Ese reconocimiento en las similitudes hizo que yo los abordara como lo que para mí siempre han sido: "ordenadores especializados". Y es lo que creo que me permitió, además de divertirme en mi trabajo, lograr exprimir aquellos que he venido empleando hasta sus límites y más allá.
Los centenares de instalaciones y máquinas que he abordado a lo largo de todos estos años de trabajo siempre han sido resueltos con los modelos de las gamas inferiores y medias de autómatas casi siempre de Schneider (Telemecánica en los primeros gloriosos tiempos).
Tengo que reconocer que del autómata con el que principalmente trabajo en la actualidad, el M241 de Schneider, estoy todavía bastante lejos de llegar a sus límites. ¡Pero tiempo al tiempo!
En estas entradas me gustaría ir desgranando las experiencias que he ido acumulando a lo largo del tiempo, por si a alguien les sirve para algo y para que a mí no se me olviden (por si el Alzheimer ataca), al tiempo que expongo mi forma de programar.
Pienso que la mejor manera de organizar el blog es ordenar las entradas como si de un curso de programación se tratara, así que así lo voy a hacer. Usaré el autómata de Schneider que más me gusta en la actualidad (el M241), su lenguaje de programación (CodeSys) y donde sea necesario su herramienta de programación (SoMachine). Pero seguro que no me resistiré a incluir comentarios y referencias de otros equipos que he usado.
No obstante no pretendo escribir un curso al estilo clásico, más bien lo que más podría parecerse a un curso impartido para unos amigos en una mesa de un bar (no me atrevo a prometer que se pudiera impartir en la barra...)
Cualquier comentario, sugerencia o pregunta que enriquezca este espacio que pretende ser de participación ¡será bienvenido!
Gracias por vuestro tiempo.