Curso de Control: 6. 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.

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.

Curso de Control: 5. 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.

Curso de Control: 4. 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:

$latex 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 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.

Curso de Control: 3. 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.

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.

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.

Curso de Control: 2. 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.