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.