Ubicación de Polos con Scilab para Sistemas en Variables de Estado.

Cuando nos encontramos trabajando con sistemas en variables de estado, a lo que queremos llegar en realidad es a controlar dichos sistemas (si son controlables) y obtener como resultado que se cumpla un comportamiento que deseamos, ya habíamos visto además en entradas anteriores que para controlar un sistema por retroalimentación de estados, lo que se busca es encontrar una señal de control (o ley de control) de la forma U=-KX que convierta al sistema en autónomo y lo lleve a su punto de equilibrio respectivo, o una ley de la forma U=-KX+K_{r}r que lleve a mi sistema a un punto de referencia r.

Existen diferentes formas para hallar las ganancias K necesarias para lograr la respuesta esperada, unos métodos más robustos que otros, normalmente cuando estamos aprendiendo esto del control en variables de estado, aprendemos a generar un polinomio deseado y luego igualamos término a término con el polinomio de lazo cerrado del sistema y así obtenemos nuestras K, sin embargo esta no es una forma totalmente ‘óptima’ cuando los sistemas comienzan a aumentar en orden, en este punto resulta bastante apropiado saber manejar las herramientas computacionales disponibles, siendo estos, paquetes de cálculo científico como Matlab, Scilab, etc. En esta ocasión vamos a mostrar por medio de un ejemplo, cómo podemos realizar la ubicación de polos para nuestro sistema en variables de estado.

¿Polos Deseados?

Como ejemplo para este tutorial, vamos a realizar el control de un sistema de segundo orden con el que seguramente muchos de nosotros hemos iniciado al comenzar a ver el tema de las variables de estado, este sistema es ¡el doble integrador!, en primer lugar vamos a recordar que la representación de un sistema en variables de estado es el siguiente:

espacio de estados scilab

Y para el sistema doble integrador, la representación es:

espacio de estados scilab doble integrador

Queremos controlar entonces la salida del doble integrador, en este caso sabemos de antemano que este sistema se deja controlar, aunque tiene dos polos en el origen, sin embargo, cuando no sabemos esto de antemano se hace necesario conocer la controlabilidad del sistema eso lo mostramos en un corto artículo sobre Scilab (Controlabilidad en Scilab), lo que queremos hacer ahora es que nuestro doble integrador tenga una respuesta con tiempo de establecimiento ts = 3 segundos y un sobreimpulso o sobrepaso máximo del 10%, estos parámetros se muestran a continuación.

t_{s}=3s    y   Mp=10\%

Por lo tanto, antes de continuar recordemos lo siguiente. Los polos (P) vienen dados por la siguiente expresión:

P=-\sigma\pm j w_{d}

Donde \sigma y w_{d} está dadas por:

\sigma=\frac{4.6}{t_{s}}      y   w_{d}=\frac{-\pi\sigma}{ln(Mp)}

Entonces si reemplazamos los valores anteriores en nuestras ecuaciones, tendremos los siguientes polos (P1 y P2), recordemos que los polos son complejos conjugados, por lo tanto sus valores serán:

P_{1}=-1.5333'+i2.0920   y    P_{2}=-1.5333'-i2.0920

Entonces ya tenemos nuestros polos deseados para este caso, ahora nuestro siguiente objetivo es lograr hallar las ganancias K de retroalimentación que hagan que nuestro sistema cumpla con las especificaciones que queremos.

¿Cómo calculo las ganancias con Scilab?

Esta es la parte más fácil para realizar el control en Scilab, lo que tenemos que hacer a continuación es ingresar a nuestro espacio de trabajo en el software, el valor de las matrices A y B de nuestro sistema, este paso es idéntico a como se haría en Matlab, y lo hacemos como se muestra a continuación.

Ingresando las matrices del espacio de estados en Scilab.

Ingresando las matrices del espacio de estados en Scilab.

A continuación definimos un vector que contenga nuestros polos deseados, lo definimos como cualquier vector de Scilab, teniendo en cuenta que en este programa, la constante compleja i o j, se representan anteponiendo un sigo porcentual (%).

Introducir los polos deseados en Scilab.

Introducir los polos deseados en Scilab.

A continuación vamos a la parte más importante del proceso y es el uso de la función ppol(), la cual es la encargada de realizar el cálculo de las ganancias necesarias del sistema, esta función recibe como parámetros la matriz A, B y el vector que contiene a los polos deseados y retorna un vector con los valores de las ganancias, esto lo vemos a continuación, donde hemos llamado K al vector que almacenará dichas ganancias.

Función ppol() para obtener las ganancias del sistema con Scilab.

Función ppol() para obtener las ganancias del sistema con Scilab.

Y así de fácil obtuvimos las ganancias de retroalimentación de nuestro sistema doble integrador para los parámetros que queríamos en un principio, ahora si queremos implementar la simulación solo nos queda por calcular la ganancia de referencia Kr, recordemos que la ley de control era U=-KX+K_{r}r. La ganancia de referencia para los sistemas lineales en variables de estado vienen dada por la siguiente expresión.

K_{r}=\frac{-1}{C*(A-BK)^{-1}B}

Entonces teniendo las matrices A, B y C en el espacio de trabajo de Scilab, solo basta con ingresar la expresión de la siguiente forma:

Ganancia de referencia del sistema doble integrador en Scilab.

Ganancia de referencia del sistema doble integrador en Scilab.

¡Ya tenemos satisfechos todos los requisitos de nuestro sistema controlado!. Ahora, para comprobar que todo ha resultado como lo esperábamos, o mejor dicho, cómo lo habíamos calculado, para esto vamos a implementar el sistema en el entorno XCOS de Scilab, que es un entorno de simulación semejante al entorno Simulink de Matlab, así el sistema queda de la siguiente forma.

Simulación sistema doble integrador en variables de estado Scilab Xcos.

Simulación sistema doble integrador en variables de estado Scilab Xcos.

Una vez los valores de cada uno de los parámetros han sido ingresados al entorno xcois para poder generar una correcta simulación, introducimos como referencia un step, lo que quiere decir que nuestro sistema deberá tener un valor final de 1, que su máximo sobreimpulso o amplitud máxima será de 1.1 (para una entrada de 1) y dado que el tiempo de establecimiento ts es de 3 segundos, entonces a los 3 segundos de la simulación, la respuesta ya deberá estar aproximadamente en su valor final de 1.

Al evaluar la simulación en un tiempo de 7 segundos, se obtiene la siguiente respuesta en el osciloscopio de XCOS.

Respuesta del sistema doble integrador ante un escalón, con el entorno xcos de Scilab.

Respuesta del sistema doble integrador ante un escalón, con el entorno xcos de Scilab.

Como puedes observar en el osciloscopio que genera el entorno XCOS, todos los resultados esperados anteriormente han cumplido de forma casi precisa lo que queríamos, por lo tanto hemos comprobado que la ubicación de polos con la función ppol() de Scilab ha sido correcta y el resultado exitoso.

Hasta aquí este artículo, esperamos que esta información te haya sido útil, si crees que también le puede servir a otra persona, ayúdanos  a compartirla.

Saludos.

Autor: Julio César Echeverri M.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s