entramado.net

Posts tagged “Ingeniería de Control

Automatización Libre

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

Así es como se denomina la automatización del hogar, existen múltiples proyectos libres pero me gusta por su carácter modular especialmente Open Source Automation.

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.


Robots, por fin en el hogar

A pesar de que en la industria se implantaron ya hace décadas los robots, sobre todo en la forma de brazos robots en la producción, en el hogar nunca han llegado a alcanzar un nivel más que testimonial. Los robots de limpieza encabezados por Roomba han sido el único intento con éxito de llevar un robot a cada casa y parece que se han estancado en esa funcionalidad. El principal obstáculo para la introducción de otros tipos de robots en los hogares es aunque parezca extraño, su dureza. Los robots tradicionales están pensados para las duras condiciones de la industria, son fuertes, pesados y resistentes, mucho más de lo que cualquier ser humano. Por esto la convivencia entre nosotros y los robots industriales es difícil, cualquier fallo en la programación puede resultar en una muerte y por eso siempre se delimitan zonas de seguridad donde los robots trabajan fuera del alcance de las personas que pueden pasar por ahí.

“Mi humano dice que esto es un robot. ¡Ya, claro!”

En el hogar esta situación no se puede dar, robots y personas deben convivir unos con otros y es necesario crear robots “blandos” para este entorno. Hay varias lineas de investigación para este tipo de robots, una es utilizar las mismas técnicas utilizadas en robots industriales pero con materiales mucho más ligeros y técnicas de control que garantices movimientos suaves y poca fuerza que permiten a los humanos guiar a los robots e incluso enseñarles manualmente tareas.

La que vengo a explicar aquí es una nueva forma de construir robots blandos que está siendo estudiada ampliamente por la Universidad de Harvard, podría explicarlo pero una imagen vale más que mil palabras y un vídeo son muchísimas imágenes, así que pegadle un vistazo a este:

[youtube http://www.youtube.com/watch?v=uvCDYvHVK4Y&w=560&h=315]

Vale, el vídeo y el prototipo dan  un poco de grima, pero es una tecnología en pañales, que puede hacer que empecemos a ver robots que puedan estar en nuestras casas, como habéis visto, con electrónica, aire comprimido y “musculos” de silicona.

Vale ¿Y esto va a ser otra innovación controlada por las empresas de electrodomésticos y con el código bien cerrado? Pues por ahora parece que no, ahora estamos a tiempo, antes de que llegue el hype, podemos empezar a desarrollar nuestros primeros robots muy al estilo de Arduino, la Universad de Harvard ha liberado un Soft Robotics Toolkit con el que podemos empezar a experimentar, con una impresora 3D, un pequeño laboratorio de electrónica y algo de material podemos empezar a crear nuestras manos robot blandas o lo que se nos ocurra.


El paradigma pasivo frente al activo

Fey Ilyas / Foter / CC BY-SA

Hace poco conocí en persona por fin a Ester y Alfonso de Arrsa, tuvimos una fructífera conversación sobre nuestros actuales proyectos y me hablaron sobre el paradigma de construcción pasiva que se está imponiendo en edificación y sus ideas sobre como enfrentar el problema del confort en edificios de una forma más “activa”, estoy seguro de que ellos os lo pueden explicar mejor que yo, así que les cedo el testigo en esta parte, hoy voy a hablar de un caso distinto.

Una de las ideas que me vino a la mente días después cuando repensaba estos conceptos es que ya existía algo parecido en un campo más cercano al mío, pero en este caso no son ideas opuestas, sino que se complementan,
y lo encontramos en los auriculares, todo un ejemplo de ingeniería moderna.

Sí, podemos comprarnos unos auriculares baratos de baja tecnología, pero hay quién busca algo más  y ahí aparecen las tecnologías de reducción del ruido. Pues es aquí mismo donde encontramos esas dos formas de solucionar el problema, la reducción del ruido activa y la pasiva.

Reducción Pasiva

Esto es relativamente sencillo, consiste en añadir capas de material aislante sonoro para eliminar ruidos externos. Cuanto más aislante más reducción, pero encarecemos y hacemos más pesado el producto. Este tipo de aislamiento funciona como un filtro paso-bajo, es decir que elimina las altas frecuencias.

Reducción Activa

En este caso se utilizan las propiedades de las ondas para cancelar los sonidos externos de forma activa, es decir mediante electrónica. Se coloca uno o varios micrófonos y sabiendo su ubicación se calcula como cancelar la onda recibida en el interior del oído. Esto es importante saberlo, sólo se cancela el sonido en un punto, en este caso el oído, puesto que debido a las propiedades de las ondas, la cancelación en un punto provocará un aumento en otro punto.

Esta es una idea interesante, ya que no estamos aplicando la “fuera bruta” del aislamiento, no necesitamos una envolvente, sólo unos sensores, unos actuadores y un procesador de señal que realice el control y ésta es una idea que se puede aplicar a muchos problemas de este estilo, entre ellos el confort en viviendas.

Para acabar de rematar la jugada tengo que decir que la reducción activa funciona bien para ruidos de bajas frecuencias, normalmente se utilizan miden ruidos de frecuencias bajas para cancelarlos, es decir que actúa como un filtro paso-alto. Esto lo hace perfecto para complementar la reducción pasiva de ruido, eliminando el ruido en todas sus frecuencias. La mejor solución como en muchos otros casos es una síntesis de dos ideas diametralmente opuestas.


Control aplicado a la electrónica

Nuestro curso de control libre y distribuido sigue dando guerra. En este caso voy a hablar de un ejemplo aplicado control en electrónica que ha diseñado Pablo Trujillo y nos muestra en su blog (ahora con dominio propio).

El objetivo es sencillo, se trata de una sencilla fuente de alimentación lineal, dada una tensión de referencia se pretende obtener esa tensión en la salida sin que se vea afectada por la carga que le coloquemos. Para obtener esto es necesario aplicar el principio fundamental del control, cerrar el bucle, y después implementar un controlador.

Para ello Pablo utiliza una implementación del controlador basada en electrónica analógica pura. Para ello utiliza un operacional en configuración restador, lo que nos proporcionará la señal de error.

Resta de señales referencia y salida.

Resta de señales referencia y salida.

En este caso podemos decir que el controlador es un proporcional con ganancia (Kp) 1, es decir que la acción de control y el error son iguales.

Veámoslo en el circuito:

Restador con un operacional.

Restador con un operacional.

Como hemos visto en el curso, este controlador tan sencillo puede producir un error en régimen permanente que para una fuente de tensión no es tolerable, la solución ya la conocemos, implementar un control PI, y eso mismo ha hecho su diseñador.

Esto en electrónica queda de la siguiente forma:

Restador + Integrador con un operacional.

Restador + Integrador con un operacional.

Como vemos lo único que ha cambiado es que en lugar de una resistencia en la realimentación del operacional hay un condensador. Esta configuración responde a la siguiente ecuación:

$latex u(t)= \frac{1}{RC} \int (y(t)-r) \mathrm{d}t$

O en Transformada de Laplace y sabiendo que y-r=e:

$latex u(s)= \frac{1}{RCs} e(s)$

Si pasamos la señal de error al otro miembro de la ecuación y subimos arriba la constante nos queda algo más parecido a una Función de Transferencia:

$latex \frac{u(s)}{e(s)}= \frac{\frac{1}{RC}}{s} $

Y ahí tenemos nuestro PI, con una ganancia ajustable de 1/RC.

Este es un ejemplo de una implementación de controladores de forma analógica, se puede implementar un controlador de muchas formas: mecánico, redes neuronales artificiales, lógica borrosa o analógico como éste, pero definitivamente la forma mas extendida es la digital, la que veréis en la mayor parte de PIDs comerciales.

Aunque este curso aún no se ha metido en cosas tan complejas como el desarrollo matemático y la implementación, siempre es recomendable pegarle una ojeada a los resultados finales que es posible obtener aplicando control.

Imágenes cortesía de mips & chips.


Modelado de un edificio II

Hace ya tiempo que escribí la primera parte de esta serie, la que pretendía conseguir un modelado térmico de un edificio o al menos la estructura del modelo. La razón principalmente ha sido la complejidad que llega a tener el problema al tener tantas variables desconocidas, cuando empiezas a operara con ellas empiezan a aparecer unos “chorizos” importantes, pero estoy terminando temas pendientes y este es uno de ellos así que voy a intentar desentrañar los misterios de nuestro hipotético edificio haciendo uso de conceptos de control que si habéis seguido mi Curso de Control, ya tendréis alguna idea del tema.

Como ya dije el último día, el sistema que resulta es de 2º orden, puesto que aparecen derivadas den dos puntos del conjunto de las ecuaciones. Ya tenemos algo por donde empezar.

La otra deducción que podemos hacer no es tan obvia, tenemos que pensar como va a evolucionar el sistema ante un cambio brusco de temperatura en el exterior (respuesta a escalón). La temperatura en el interior como sabemos irá acercándose a la temperatura exterior mientras va escapando calor, hasta igualarse a esta. Sea cual sea el cambio de temperatura, la temperatura interior siempre llegará a igualarse a la exterior y además tardará siempre el mismo tiempo en hacerlo.

¿Que conclusión sacamos de aquí? Que el sistema no tiene error en régimen permanente, se trata de un sistema con un integrador en bucle cerrado. Por lo tanto ya tenemos algo más de información y podemos construir la estructura del sistema.

Si utilizamos una función de transferencia para representar el sistema en bucle abierto, queda de la siguiente forma:

$latex G_{ba}(s)= \frac{K}{s(s+\tau)}$

El siguiente paso es calcular la función de transferencia en bucle cerrado, os ahorro el desarrollo, el resultado es el siguiente:

$latex G(s)=\frac{T_i(s)}{T_e(s)}= \frac{K}{s^2 + \tau s + K}$

Podemos ver a continuación un ejemplo de la respuesta a escalón en un sistema de este tipo.

Respuesta obtenida en simulación.

Ejemplo de respuesta a escalón.

En el próximo capítulo veremos como hacer un pequeño análisis paramétrico para encontrar el mejor sistema posible según nuestros deseos.


Controlando nuevos sistemas

Una de las funcionalidades de nuestros archivos de Octave que he mantenido en secreto por ahora, en el curso, es que es posible definir nuestros propios sistemas y controlarlos con estos scripts. Todas las funciones aceptan un argumento en forma de sistema, este puede definirse de muchas formas y me remitiré sin más a la documentación de la Toolbox de Control de Octave, yo en este caso he optado por introducir los sistemas en Función de Transferencia, no es el objetivo de este curso introductorio explicar que quiere decir esto, sólo diré por si tenéis curiosidad que utiliza la Transformada de Laplace cuando estamos en tiempo continuo.

Por ejemplo para el control P usaríamos la siguiente sintaxis:controlP(kp , sistema)

Ahora vamos a ver distintos sistemas que podemos probar , sólo es necesario sustituir «sistema» en el anterior comando por lo que pongo a continuación:

Este es un sistema más fácil del que hemos visto, se trata de un sistema de 1º Orden y la teoría nos dice que es posible controlarlo completamente con tan sólo un PI, a ver si lo conseguís:
tf([1],[1, 1])

En siguiente sistema consta de un Integrador, es decir como la acción integral, por lo tanto no necesitaremos acción integral para garantizar que llegue al punto deseado ¡Llega solo!
tf([1],[1, 0.1, 0])
El último sistema que vamos a ver es un sistema de 2º Orden como el primero que vimos pero con una particularidad, tiene lo que en control llamamos un cero. ¿Me podéis decir que efectos provoca este cero?

tf([1 0.1],[1, -0.1, 0.1])

Con esto y algún apunte más terminamos la parte básica del curso, me surgen diferentes caminos que podría tomar a partir de ahora, así que lo meditaré y posiblemente el curso y las novedades que le rodean tengan un parón en la frecuencia de publicación. Eso espero que me permita retomar otros temas del blog que he dejado más apartados.

Los que habéis llegado hasta aquí: ¡Enhorabuena! Ya tenéis una idea de qué es el control y de como controlar alguna cosilla fácil, si completáis todas las actividades tendréis un premio.


Ajuste de un controlador PID

Llegamos al último tipo de controlador que vamos a ver, el que aúna los tres tipos de control que ya hemos visto. Como ya he explicado anteriormente el uso que le damos a los parámetros kp, Ti y Td, os recomiendo que volváis a esas explicaciones si tenéis dudas y os paso directamente el archivo de la semana, esta vez con la siguiente sintaxis:controlPID(kp, Ti, Td)

Ahora las combinaciones posibles son enormes y tenemos una gran libertad de elección, pero os dejo a vosotros que experimentéis y os paso una imagen de muestra, a ver si conseguís algo parecido.

Ejemplo de sistema controlado con un PID.

Ejemplo de sistema controlado con un PID.


Ajuste de un controlador PI

Uno de los problemas de los controladores que hemos visto hasta ahora es que no garantizan que lleguemos al punto de referencia después de todo el transitorio, la diferencia entre la referencia y la salida una vez se ha estabilizado se llama error en régimen permanente.

Para eliminar este error se utiliza la acción integral, vamos a ver un caso práctico con un controlador PI, como en capítulos anteriores tenéis a vuestra disposición un pequeño script donde probar los resultados, lo podéis descargar aquí.

El funcionamiento del script es similar a los anteriores:controlPI(kp, Ti)

En este caso la constante que afecta al término integral es Ti y nos da una idea de en cuanto tiempo va a actuar esta acción integral, vamos a ver un ejemplo:controlPI(1,100)

Esto nos va a dar una respuesta como la siguiente:

Control PI con kp 1 y Ti 100.

Control PI con kp 1 y Ti 100.

Como podemos observar la señal de salida que en un principio parece que se va a estabilizar en 0.9 poco a poco se va corrigiendo hasta llegar a 1 de una forma suave.

A partir de aquí podemos empezar a jugar con nuestras constantes para obtener una buena respuesta igual que en capítulos anteriores. En el próximo vamos a ver el controlador que mejor resultados nos va a dar, el que combina la acción derivada con la integral, el PID.


Ajuste de un controlador PD

La semana pasada estuvimos probando el control P, vimos que al tener solo un grado de libertad no obteníamos unas respuestas totalmente a nuestro gusto. Hoy vamos a mejorar esto añadiéndole al control una componente derivativa, lo que se conoce también como acción derivada.

El mecanismo de la acción derivada es sencillo, intenta corregir la pendiente del error, esto provoca que la salida se suavice, es decir, que no tenga grandes pendientes y con esto conseguimos reducir e incluso eliminar la sobreoscilación.

Igual que el último día podéis descargar la función controlPD, de aquí, el funcionamiento es muy parecido:controlPD(kp,Td)

El sistema a controlar no ha cambiado, pero ahora podemos modificar dos parámetros para mejorar el control: kp, que afecta a la parte proporcional y Td que afecta a la parte derivativa.

Vamos a probar algo sencillo:controlPD(1,1)

Y obtenemos la siguiente respuesta:

Control PD con kp 1 y Td 1.

Control PD con kp 1 y Td 1.

Vemos que el control es algo más rápido y se ha eliminado la sobreoscilación que teníamos con el control P.

Ahora toca jugar un poco. ¿Hasta donde podéis llegar con estos dos parámetros?


Ajuste de un controlador P

Vamos a empezar la primera actividad con el ajuste de uno de los controladores más sencillos que existe, el controlador proporcional o simplemente P. Este controlador lo hemos visto de pasada en capítulos anteriores, se trata del controlador estático, una simple constante multiplicando a la señal de error y su salida es la señal de control.

Esquema de Realimentación.

Esquema de Realimentación.

Este controlador debido a su sencillez, sólo nos ofrece un grado de libertad, modificar el valor de la constante (kp) y por lo tanto tendremos algunas limitaciones que veremos en la práctica.

Nuestro objetivo va a ser conseguir que la salida del sistema siga a la referencia, que va a ser una señal de escalón unitario, esto es que en el instante 0 pasa de 0 a 1 inmediatamente, por eso tiene una forma de escalón.

¿Cómo quedaría si no utilizáramos ningún control y no cerráramos el bucle? Directamente aplicando la referencia en escalón al bucle obtendríamos esto:

Sin control, sistema en bucle abierto

Sin control, sistema en bucle abierto

La línea azul nos muestra la evolución del sistema y la verde el valor al que tiende en el infinito. Como vemos el sistema llega a 10 en lugar de a 1 y es bastante lento, unos 50 segundos, así que vamos a mejorar todo esto con nuestro control P.

Para probar distintos valores de kp en el bucle de una forma sencilla podéis descargaros este script que he hecho para Octave, el funcionamiento es el siguiente: tenéis un sistema por defecto dentro del script y todo montado para simular. Nos situamos en Octave dentro de la carpeta donde hemos guardado el script y llamamos a la función del controlP:controlP(kp)

Donde kp es la constante proporcional que queramos utilizar. Podemos probar por ejemplo: controlP(1)

Y nos mostrará la siguiente imagen:

Control Proporcionas con ganancia 1.

Control Proporcional con ganancia 1.

Vemos que el control ha mejorado bastante, es como 5 veces más rápido y a pesar de que aún no llega a 1 exactamente ya se acerca bastante más y no se pasa demasiado en el trayecto (sobreoscilación). Ahora podemos ir buscando una kp que haga que el sistema funcione más a nuestro gusto.

El objetivo de la actividad es experimentar con el control proporcional y buscar una buena respuesta, podéis escribir un post con la experiencia en vuestro blog y si no dejarla en comentarios o mandármela por correo con vuestro nombre/alias y yo la publicaré en los comentarios.

Suerte.


Instalación de Octave

Empezamos las actividades del curso y para ello tenemos que poner en marcha el software que vamos a utilizar. Habitualmente se utiliza en control el software y lenguaje de programación MATLAB, hay que recordar que este tipo de software sólo es una herramienta, útil la mayor parte de las veces para el aprendizaje pero cuando nos enfrentamos a problemas reales muchas veces no podremos hacer uso de MATLAB o similares y tendremos que recordar la teoría, que es lo realmente importante.

En nuestro caso como éste es un curso para todos los públicos y pensado desde el software libre, vamos a utilizar el software Octave, un clon de MATLAB de código abierto y en este tutorial vamos a mostrar como instalarlo en Linux.

Vamos a instalar el núcleo de Octave y frontend que nos hará la vida más fácil, de estos hay varios y he elegido QtOctave por su sencillez.

sudo apt-get install octave3.2 qtoctave

Podemos instalar el paquete de control de Octave como un paquete de apt-get o desde QtOctave, lo vamos a hacer de esta última forma, pero necesitamos permisos de superusuario para poder instalar los paquetes, por lo tanto hacemos:

sudo qtoctave

Una vez abierto nos vamos al menú Configuración>Instalar paquetes de Octave  y nos aparecerá un cuadro con los paquetes que podemos instalar, buscamos el de Control y lo instalamos.

Gestor de paquetes de QtOctave

Gestor de paquetes de QtOctave

Salimos del programa y esta vez entramos con nuestro usuario normal, con el icono de QtOctave. Ya podemos empezar a hacer cosas con Octave, la sintaxis es prácticamente igual a la de MATLAB y si necesitamos ayuda podemos escribir:

controldemo

Y entraremos en el menú de muestra del paquete de control que nos enseñará todas sus posibilidades.


Controladores

¿Qué es el controlador?

Ha llegado el momento de definir que es exactamente este controlador que hemos visto.

Un controlador va a ser por supuesto un sistema estático o dinámico que creamos nosotros, veamos como lo definimos:

Es una función que multiplica a nuestro error. Puede ser estática o dinámica:

Estática, donde K es una contante que multiplica al error:

$latex u=K \cdot e $

Dinámica en tiempo discreto, en este caso es un sistema de 1º orden, es decir que depende únicamente del error en ese instante (ek) y el anterior(ek-1), podría ser de un orden superior donde iría aumentando el número de instantes anteriores que usaríamos. En este caso tenemos dos constantes K1 y K2:

$latex u=K_1 \cdot e_k+K_2 \cdot e_{k-1}$

¿Cómo encontramos unos buenos valores de K?

Con una realimentación y un valor cualquiera podemos ya obtener una aproximación al control, pero pueden pasar varias cosas, que el sistema se haga inestable (algo que hay que evitar siempre, veremos ejemplos), que el sistema no se mueva en absoluto o que el sistema llegue al punto de referencia en un tiempo más o menos largo.

Para conseguir un buen control tenemos que ajustar K para llegar a la referencia en un tiempo no demasiado largo y sin que de muchos bandazos. Esto se puede conseguir de distintas formas:

  • A ojo: Aunque parezca mentira se hace mucho y es algo que no se suele enseñar en la universidad, esto se aprende con la práctica, lo veremos.
  • Auto-tuning: Viene a ser lo mismo que a ojo pero lo hace una máquina de una forma muy rápida, muchos controladores comerciales lo lleva incorporado de serie, son conectar apretar el botón y listo.
  • Analíticamente: Entramos en terreno pantanoso, para ello primero necesitamos modelar el sistema a controlar, para esta parte aún necesitamos más base.

El error y la realimentación

Vamos a pasar a ver los conceptos claves de la teoría de control moderna, estos son la realimentación y el error.

El Error

Cuando estamos controlando, intentamos que nuestra señal de salida (y) sea lo más parecida posible a la referencia (r) en todo momento, por eso se define la señal de error (e) como la diferencia entre ambas:

e=r-y

Podemos representar esta resta en diagrama de bloques de la siguiente forma:

Resta de señales referencia y salida.

Resta de señales referencia y salida.

El signo de negativo indica que es una resta, si no lo pusiéramos tendríamos la representación de una suma.

Para afianzar el concepto vamos a ver una representación de una señal continua cualquiera de salida respecto al tiempo, la referencia y lo que sería el error en el momento actual:

Ejemplo de medida del error en un punto.

Ejemplo de medida del error en un punto.

Una vez obtenida esta señal podemos hacer uso de ella para el control y ahí es de donde surge el concepto de realimentación.

La Realimentación

La idea de la realimentación consiste en utilizar esta señal de error para alimentar un controlador que intentará reducir este error al mínimo. Nuestro esquema quedará de la siguiente forma:

Esquema de Realimentación.

Esquema de Realimentación.

Llegados a este punto ya hemos aprendido en que se basa el control, a partir de ahora vamos a ver como controlar y dentro de poco tendremos actividades prácticas, para aprender “haciendo”, que es la única forma de aprender.


El Tiempo

Como hemos visto en lo que llevamos de curso la medida del tiempo es un aspecto fundamental en este campo. Aquí aparece la primera gran división entre los sistemas que vamos a ver, el tiempo continuo y el tiempo discreto.

El tiempo continuo

Cuando hablamos de tiempo continuo nos referimos al tiempo al que estamos acostumbrados, podemos dividir el tiempo en fracciones cada vez más pequeñas sin ningún límite teórico. Tenemos valores de nuestras señales tanto en el segundo 1 como en el segundo 0.0000000000001. Este es el tiempo que se utiliza habitualmente en los sistemas físicos, las complicaciones que nos supone es la utilización de una matemática más compleja para modelar (el cálculo infinitesimal) y lo que es más importante, la incompatibilidad con los computadores que son discretos por naturaleza ya que trabajan con el bit como unidad mínima de medida, los periodos de muestreo de sus sensores y la frecuencia de actuación máxima posible.

Pasamos a ver un ejemplo de señal discreta:

Imagen de una señal en tiempo continuo.

Respuesta de un sistema a una señal impulsional.

Como podemos ver se trata de una señal continua, sin discontinuidades.

El tiempo discreto

El opuesto al tiempo continuo es el tiempo discreto, en el se define un periodo mínimo en que se puede dividir el tiempo y se le llama periodo de muestreo, lo que pasa en el tiempo entre los muestreos es desconocido por eso nos interesa que nuestro periodo de muestreo sea lo más pequeño posible.

Pasamos a ver un ejemplo de una señal discreta cosenoidal.

Señal discreta con forma de coseno.

Señal discreta con forma de coseno.

Los puntos de medida reales son los círculos y como vemos entre esos puntos no existe nada. Habitualmente se añaden lineas entre los puntos para dar una sensación de continuidad, pero los valores en esas lineas no tienen por que corresponderse con la realidad.

Aproximación a tiempo continuo

¿Como podemos simular sistemas continuos en computadores que son discretos? Teóricamente no podemos. El problema se soluciona haciendo el periodo de muestreo muy pequeño en comparación al sistema que estamos simulando, de esta forma obtenemos una aproximación al continuo que se acercará mucho a la realidad.

Una vez terminado este inciso necesario para el curso, continuamos, tenemos que llegar al punto clave en control, la realimentación.


Sistemas, procesos y plantas

Stuck in Customs / Travel Photos / CC BY-NC-SA

El otro día Pablo hablaba en el curso sobre procesos, hay tres palabras que se suelen utilizar en control como sinónimos, estas son sistema, proceso y planta. Aún así cada profesor con el que me he topado siempre ha tenido su palabra favorita, para mí estas palabras sólo son sinónimos en un contexto concreto, el industrial, paso a explicar las diferencias que encuentro:

  • Proceso: Tal y como yo lo veo, un proceso es una transformación de materia o energía a través de una serie de pasos, querer controlarlos es un aspecto básico en la industria, es la palabra que veo que hace más referencia a una cosa única a concreta.
  • Planta: Hace referencia a las plantas industriales, recuerda a la automatización de las fábricas que es una de las bases del control, como palabra la veo más amplia que la anterior pero siempre nos está recordando su pasado industrial.
  • Sistema: Mi palabra preferida ya lo sabéis, sistema hace referencia a algo genérico, no tiene un pasado industrial claramente, los sistemas pueden ser muchas cosas y por eso es la palabra de la que hago uso en este curso.

Este curso pretende desligar el control de su pasado electrónico e industrial, no es lo común, lo reconozco pero hay que innovar. Es posible que por el camino nos adentremos en la minería de datos o en otras ciencias afines, pero no hay que perder de vista lo que es un sistema dinámico.


Estrategias en Ingeniería de Sistemas

Continuamos con el curso, a parte de la teoría que hay en esta serie de artículos voy a abrir una sección de apuntes al curso de control, la idea es poner cosillas más fuera de la explicación principal que completen al curso. Lo mejor de todo es que podemos crear un curso distribuido, si queréis hacer algún apunte vosotros, la única norma es poner como etiqueta “Apuntes al Curso de Control” y luego podemos hacer una recopilación con el nuevo gestor de enlaces de entramado, ya lo veremos, empezamos:

Podemos utilizar la ingeniería de sistemas de distintas formas, en este capítulo vamos a ver las distintas estrategias que podemos seguir, entre las que se encuentra, por supuesto, el control.

Las estrategias son las siguientes:

  • Modelar: Llamamos modelar a obtener la función matemática que relaciona la salida del sistema con la entrada, podemos usar variables internas o una relación directa y como hemos visto que tratamos con sistemas dinámicos, necesitaremos relacionarlo con entradas y salidas en instantes anteriores al actual.

    Representación esquematica modelado

    ¿Qué función se ajusta al sistema?

  • Simular: Este es el paso inverso al anterior, una vez tenemos el modelo matemático, le aplicamos entradas a lo largo del tiempo y obtenemos las salidas para cada instante de tiempo. Este es el método que se usa para predicción. Por ejemplo, como hablábamos el último día de predicción meteorológica, esta consiste en un modelo meteorológico al que se le aplican las entradas como la temperatura actual, dirección del viento, humedad, etc y se obtiene una predicción más o menos acertada.

    Representación de una simulación

    Se aplican entradas y se obtienen salidas.

  • Controlar: En este caso entra en juego un nuevo actor, la referencia. ¿Donde queremos que vaya el sistema? ¿Cómo queremos que se comporte? Ese es nuestro objetivo y se le da el nombre de referencia(r). En el caso del control queremos que el sistema siga a esa referencia lo mejor posible, entonces tendremos que crear un sistema que tenga como entrada la referencia y como salida las acciones de control que irán a parar a la entrada del sistema a controlar(u). Se entiende mejor gráficamente:

    Esquema de un controlador unido a un sistema.

    Esquema de control muy simplificado.

Pero esto no termina aquí ahora nos podemos plantear como podemos hacer el controlador, ahí empieza el verdadero control.


¿Qué es la Ingeniería de Control?

La rama de la ingeniería que estudia como hacer que los sistemas se comporten de una forma predeterminada. Cuando hablamos de sistema me gusta especialmente la definición de Wikipedia, por lo genérico de la misma:

Un sistema es un objeto complejo cuyos componentes se relacionan con al menos algún otro componente; puede ser material o conceptual.

Es decir que podemos aplicar la ingeniería de control sobre cualquier conjunto de elementos relacionados. Por otra parte, para aclarar otro concepto, se llama Ingeniería de Sistemas a la comprensión mediante herramientas matemáticas de estos sistemas.

Podemos encontrar aplicaciones de Control en sistemas de tan diversos tipos como:

  • Eléctricos
  • Mecánicos
  • Biológicos
  • Químicos
  • Económicos
  • Informáticos

De ahí la versatilidad del uso del control, que comenzó con el auge de la electrónica pero una vez llegado a su madurez con los sistemas de control digitales se independizó de esa rama e incluso de su aplicación en industria.

Representación

Para representar los sistemas de una forma gráfica utilizaremos los diagramas de bloques, como vemos a continuación, el convenio más extendido es el de llamar a las entradas de un sistema a controlar ‘u’ y a las salidas ‘y’, con un numero identificador.

sistema de 3 entradas y 2 salidasComo podemos observar en este sistema tenemos acceso a 3 entradas para modificar su comportamiento y 2 salidas que podemos medir.

Pero en este curso no vamos a irnos a sistemas tan complejos, sólo vamos a trabajar con sistemas SISO, una entrada y una salida. Algo como esto:

sistema SISO

Los sistemas dinámicos

Los sistemas que vamos a estudiar se llaman sistemas dinámicos puesto que sus salidas dependen de entradas y/o salidas anteriores. Como en el siguiente ejemplo, se trata de un histórico de las temperaturas medias durante el último mes en València. La predicción del tiempo implica un sistema extremadamente complejo que estudia la ingeniería de sistemas en combinación con otras áreas como al meteorología y la física.

Evolución de la temperatura media con respecto al tiempo.

Temperatura media en València

Este es un ejemplo práctico del tipo de gráfica a los que nos vamos a tener que acostumbrar en este curso, la evolución de una señal en el tiempo.

Una vez introducidos los conceptos principales podemos pasar a algo con más chicha, distintas estrategias en Ingeniería de Sistemas ¿Como lleváis el álgebra?

Espero vuestros comentarios y dudas para mejorar el curso.


¿Se va a convertir éste en un blog de control?

Realmente la blogosfera en el ámbito de control e ingeniería de sistemas es prácticamente nula, no es algo especifico del control, pasa con muchas otras disciplinas, sobretodo esto ocurre en las técnicas que más relación tienen con la universidad, son más teóricas y abstractas y además no han surgido colectivos hackers que las difundan en la red.

Es cierto que la ingeniería de control además no es nada conocida, está eclipsada por la electrónica o la robótica y a veces tengo problemas para explicar lo que hago, sí es cierto que estudio electrónica, programación, sistemas de producción, robótica…pero donde está realmente el centro es en el campo del control y la ingeniería de sistemas.

Y mientras no se forma una blogosfera del tema en otros campos nos toman la delantera, haciendo que las investigaciones estén cada vez más al alcance de todos. Podría destacar los blogs sobre electrónica, cacharreo, comunicaciones, producción y muchas más cosas.

Por eso tengo la tentación de tirar en este blog hacia la rama de control, y ya he hecho algunos avances, como veo que se va consolidando he convertido la etiqueta Ingeniería de Control en una categoría del blog, por supuesto no va a ser un blog monotemático porque nunca lo ha sido pero sí es posible que hable más profundamente de estos temas en próximos posts.

 


IFTTT como controlador

Uno deifttt_logo los servicios que más le está siendo útil a los usuarios intensivos de la nube es IFTTT, este no es mi caso pero me ha llamado la atención su funcionamiento y útil que puede llegar a ser en ciertos contextos. La aplicación no puede ser más sencilla, se eligen una serie de eventos, que ahí llama triggers y una serie de acciones a reproducir cuando se produzcan esos triggers. Parece una tontería pero con este mecanismo tan sencillo podemos automatizar una gran cantidad de tareas en la nube. ¿Y si como yo no somos unos fans de la nube? Pues lo tenemos crudo con IFTTT porque solamente acepta los servicios en la nube más conocidos. Pero no os preocupéis podemos hacer uso de una alternativa libre, como Whenbot, no me preguntéis como funciona porque estoy bastante verde en el tema de las APIs, pero por lo visto corre sobre Heroku, un servicio que da acceso a APIs de distintos servicios de una forma sencilla. De todas formas pienso que se podría personalizar para instalarlo en tu propio servidor y con las APIs que tu decidas.

Todo esto me lleva a pensar que se pueden crear controladores muy básicos con estructuras de este tipo, pongamos un ejemplo:

Tenemos un sensor de temperatura con acceso a nuestra red y una estufa eléctrica sin control ninguno. Podemos con una Raspberri Pi hacer un pequeño programa que encienda o apague la estufa, luego con el Whenbot programarlo para que cuando la temperatura leída del sensor baje de cierto umbral ejecute el programa.

De esta forma tenemos el tipo de control más básico, un todo o nada, que es un tipo de control muy intuitivo que cualquier persona sin conocimientos de control podría programar. Los problemas que presenta se encuentran en las zonas límite, pueden aparecer oscilaciones molestas si la temperatura se encuentra todo el rato cerca de la temperatura umbral. Pero este es un primer paso, todo se puede ampliar.

Como podríamos conectar a la red distintos dispositivos y hacer que se comunicaran entre ellos obtendríamos una red de control distribuido muy configurable a nuestros gustos, por ejemplo en el campo de la domótica, pero también en muchos otros.

Continuando con este campo podríamos instalar contadores digitales, enchufes inteligentes, servidores, media centers y toda una infraestructura de red de hogar que se controlaría ella sola en una mezcla entre vivienda digital y automatizada que podríamos supervisar desde cualquier lugar del mundo gracias a las tecnologías Web.


Por qué elegí automática y no electrónica

lazo_controlHace algo menos de dos años tuve que decidir en la carrera si me iba por la rama de electrónica o la de automática y control, aunque yo venía de estudiar más electrónica y sobre todo informática industrial decidí entrar de lleno en el control y cada día estoy más convencido de que fue una buena elección. Sin querer dejar en mal lugar el diseño electrónico tengo que decir que cada vez le veo menos futuro, hoy en día con un Arduino y unas pocas shields puedes hacer un prototipo que automatice casi cualquier tarea que sea necesaria, si necesitamos más potencia de cálculo podemos irnos a una Raspberry Pi o similares, no estoy diciendo ninguna locura, es algo que veo en mi día a día en la universidad, ya no se hace diseño electrónico, simplemente se ensamblan tarjetas y se ponen a programar. Es cierto que hacen falta unos conocimientos básicos de electrónica pero no es necesario meterse en los efectos de la mecánica cuántica en la puerta de los transistores miniaturizados -por poner un ejemplo de algo que he oído por ahí-. La conclusión de todo esto es si se está devaluando la electrónica en favor de la programación, algo que resalta el siguiente artículo de Neoteo, Arduino, Raspberry Pi y una historia de cajas negras.

Lo cierto es que la electrónica es cada día más una commodity, algo que se produce en un país asiático y nosotros simplemente los ponemos a funcionar. Por lo tanto para aportar valor a la cadena ya no podemos dedicarnos símplemente a hacer más Arduinos o mas RaspPis, hay que aportar conocimiento y aprovecho esto para ligar esta reflexión con la de David en Las Indias, la conclusión es la misma, más conocimiento aplicado, dando la importancia a las personas antes que a los procesos y las herramientas, como dice el Manifiesto ágil.

Por todo esto es por lo que hoy estoy contento por haber tomado esa opción, estudiar control me aporta conocimientos que ninguna máquina puede replicar y cuando las máquinas consigan hacerse con estos procesos ya estaremos por delante buscando nuevos retos con la ética hacker mostrándonos el camino.


Modelado de un edificio I

A través de este post de Mimbrea, llegué a una hoja de cálculo bastante cerrada donde se exponían los conceptos de amortiguación térmica y desfase térmico de las construcciones y mediante la misma se podía calcular esos datos. En el mismo documento se afirma que lo óptimo es obtener un desfase térmico cercano a las 12 horas.

A raíz de la explicación que daba, me surgieron ciertas dudas sobre si era posible conseguir desfasar la temperatura 12 horas. Para comprobarlo voy a intentar modelar de la forma más sencilla posible un edificio, no entraré en detalle, simplemente obtendré la estructura, los valores de los coeficientes se pueden obtener por identificación, si la cosa va bien, el siguiente paso será hacer una identificación de un edificio real y extraer de ahí datos útiles.

Para simplificar al máximo el modelo vamos a imaginar que tenemos una construcción cerrada, con todos los muros iguales y de algún material desconocido, ni puertas ni ventanas, una caja negra que vamos a destripar, para convertirla en una caja gris.

Lo primero es conocer las variables del modelo, en el siguiente esquema las escribiremos en cursiva, como sabemos, el calor se transmite de 3 formas, convección, conducción y radiación, por el momento nos olvidaremos de la radiación, con lo que nos quedan convección para transmisión en fluidos y conducción para los sólidos. Nos interesan por lo tanto las temperaturas de los fluidos, aire interior(ti) y exterior(te) y la de los sólidos, los muros por la parte interior(tm1) y exterior(tm2). Representaremos las temperaturas con un punto negro. Las siguientes variables a tener en cuenta son los flujos de calor, representados como una flecha roja, son q1, q2 y q3.

Las constantes no nos interesan tanto pero pondremos en el esquema las que dependen del material utilizado, sin cursiva.

Esquema de transmisión de calor en un muro.

Esquema de transmisión de calor en un muro.

Empezaremos con una ecuación sencillita, como sabemos que la energía se conserva tenemos que:
(1) $latex q_{2}-q_{3}=0 $

Luego ponemos las ecuaciones de la convección, el nuevo termino que nos encontramos es A, que corresponde al área del muro, pero no nos va a hacer falta por ahora:

(2) $latex q_{1}=k_{v1}A(T_{m1}-T_i) $

(3) $latex q_{3}=k_{v2}A(T_e-T_{m2}) $

Lo siguiente es la que afecta a la conducción en el muro:

(4) $latex q_{2}=k_{c}A(T_{m2}-T_{m1}) $

Después pasamos a las ecuaciones del calor especifico de los cuerpos, m representa la masa del aire:

(5) $latex q_{1}=C_{pi}m\frac{dT_{i}}{dt} $

(6) $latex q_{2}-q_{1}=C_{pm}m\frac{dT_{m1}}{dt} $

Con estas 6 ecuaciones ya tenemos definido el modelo del edificio, puesto que tenemos 2 variables de estado Ti y Tm1, 1 variable de entrada Te y 6 variables auxiliares, el resto. Obtenemos de esta forma un modelo de 2º orden con un bastantes constantes ligadas entre ellas. En próximo post de esta serie veremos como extraer información del modelo y como identificar los parámetros de ese modelo sin necesidad de conocer todas las constantes.


Todos usamos cookies, acéptalo ya. más información

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close