En el mundo industrial y de la automatización en general no es ningún secreto que está dominado por el software y el hardware propietario, unas pocas empresas crean los componentes con los que una gran cantidad de empresas integradoras se las ingenian para adaptar a los requisitos del sistema en concreto. Al final lo que encontramos es una red descentralizada donde montones de integradores y clientes finales dependen exclusivamente de unas pocas empresas que tienen generalmente su sede en Estados Unidos o Alemania.
Son pocos los que intentan nadar contracorriente en este mundillo, algunos que han tirado la toalla y otros que han encontrado soluciones nuevas a viejos problemas, pero para introducirnos en la automatización libre primero debemos hacer una cartografía de las comunidades que se dedican a producirlo y en eso consiste este post.
Automatización Industrial
El proyecto en que más esperanzas tengo puestas desde el punto de vista industrial se trata de OSADL, se trata de un laboratorio de desarrollo de automatización open source, ofrecen apoyo para la implementación de software libre a nivel industrial, se centran sobre todo en Linux y liberan una versión estable del kernel Linux RT, versión del kernel muy importante en los sistemas industriales. Por ejemplo, otro proyecto que hace uso del Linux RT es LinuxCNC, una distribución GNU/Linux para usar de base de máquinas de control numérico, utilizadas en todo tipo de procesos de manufacturación. Desgraciadamente LinuxCNC se basa en HAL para la realización de scripts con que se controlan las máquinas, un proyecto que se abandonó hace años para incluirlo su funcionalidad en udev. Esto hace que dependan de kernels bastante antiguos.
Otro proyecto importante en automatización es AutomationML, se trata de una recopilación de estándares para compartir información de entornos industriales en formato XML. Lo mejor del proyecto es que no intenta reinventar la rueda, utiliza por ejemplo COLLADA del Khronos Group para geometría y cinemática o PLCopen XML, otro estándar libre, para la lógica.
Comunicaciones
Después de toda esta parrafada y aun no he nombrado nada sobre comunicaciones. Dado su uso extendido me voy a centrar en protocolos sobre Ethernet o sobre IP. En este caso, lo recomendable es huir de los dos grandes estándares que dicen ser abiertos pero no lo son Ethernet/IP y Profinet. Y si buscamos lo más sencillo de implementar de forma libre nos iremos a Modbus TCP con la librería libmodbus enseguida tendremos un protocolo industrial sobre cualquier red TCP/IP. Si el protocolo se nos queda demasiado simple, siempre podemos añadirle funcionalidades, por ejemplo: archivos XML de descripción de las entradas y salidas, IPsec para la parte de seguridad o cualquier otra cosa que se necesite.
Si es necesario un protocolo de comunicación más rápido es posible usar algo más complejo pero que permita una respuesta más rápida, es posible usar POWERLINK, que utiliza una capa por bajo de IP para conseguir una menor latencia de red, la pila de protocolos libre en este caso es openPOWERLINK.
Frameworks
Luego vamos a encontrar frameworks libres para implementar automatización y de estos hay varios cada uno con su propia filosofía:
- 4DIAC: Permite programar aplicaciones de automatización distribuida usando un lenguaje de programación mediante bloques, utiliza el estándar IEC 61499.
- OpenAPC: Se podría definir como un sistema de control distribuido (DSC), para hoy en día lo veo un poco anticuado, la interfaz debería ser web, pero tiene muchos plugins y hardware soportado.
- MBLogic: Como su propio nombre indica, se trata de lógica por encima del protocolo Modbus, de los tres me parece el mejor pensado, usa una interfaz web basada en gráficos vectoriales en svg que se modifican con los valores de las lecturas. Además está pensado para su uso de forma modular. La lástima es que lleva inactivo desde 2011 y no dan ninguna seña de contacto de nadie interesado en resucitar el proyecto que obviamente necesitaría un lavado de cara, con un rediseño de los componentes a nivel gráfico.
Me ha parecido que el proyecto ROS-Industrial merecía un nombramiento a parte, no se centra en automatización en general si no exclusivamente en la parte de robótica industrial, ROS (Robot Operating System) es un conjunto de librerías y herramientas para el desarrollo de robots muy conocido a nivel académico y de investigación y ROS-Industrial trata de adaptarlo a los requerimientos de la industria.
Automatización No Industrial
No sólo voy a centrarme en automatización industrial, fuera del mundo industrial hay otros tipos de automatizaciones que también vale la pena conocer, tienen requisitos distintos pero el funcionamiento suele ser parecido. Veamos unos tipos:
Domótica
Automatización de edificios
Muy parecido al anterior es la automatización de edificios, suele ser lo mismo pero a gran escala, el siguiente artículo es el mejor que he encontrado explicando y defendiendo la automatización libre de edificios. Pero además las grandes instalaciones exigen otro tipo de automatizaciones y visualización de datos: mantenimiento, energía, logística, etc. Para todo esto podemos usar el software openMAINT.
Gestión de la energía
Ya he hablado en este blog de EmonCMS, me parece uno de los mejores proyectos de todos los que he nombrado, muy sencillo de usar. Se podría combinar con MBLogic para dar una solución total de automatización sencilla y a la vez totalmente personalizable. Lo mejor que le veo a EmonCMS es su forma de gestionar el código de la web en una base de datos, pero le falta la funcionalidad de colocar un componente más abajo o arriba según convenga.
Automatización por IoT
Por último y como es la última moda, no puede faltar la automatización mediante el Internet de las Cosas, para seguir una buena metodología en la automatización mediante estándares libres podemos seguir las recomendaciones de IoT Data models.
Conclusiones
Esta recopilación como todas se quedará corta, se basa en los proyectos que me he ido encontrando mientras estudiaba el tema de la automatización, pero espero que a alguien le sirva para replantearse como hacer las cosas, para hacer un poco más difusa la frontera entre la empresa integradora y la desarrolladora y finalmente para democratizar la automatización.