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.

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

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

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

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

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

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.