home

CONTROL DEL CAUDAL ENTRE DOS TANQUES:
Consideramos el problema de la interacción de las alturas de dos tanques, tal y como vemos en la imagen:

Hay un flujo de entrada F0 (que será la variable de entrada en nuestro problema) que entra al depósito 1, del que sale a su vez un flujo F1 y entra al depósito 2, el cual descarga con un flujo F2. La interacción entre los dos depósitos por medio de estos flujos, hará que varíen sus alturas de agua. Dichas alturas (h1 y h2), serán nuestras variables de salida a controlar. Aunque en este caso, a modo de simplificación, sólo controlaremos la altura del segundo depósito.

El problema se rige por las siguientes ecuaciones:

** Punto de trabajo: **

Considerando que la variación de la altura con respecto del tiempo es nula en un instante inicial, y tomado los valores: F=1, A­1=2, A2=1, β1= β2=1/sqrt(5), podemos calcular las alturas de sendos tanques para ese instante, siendo:



** Linealización del sistema: **

Una vez tenemos los puntos de trabajo, pasamos a linealizar nuestro sistema. Para ello, utilizamos la expresión de Taylor para tres variables (h1, h2 y F), particularizado para el punto P0=( β1,A1, A2, h10, h20)=.

Para la primera ecuación:

Para la segunda ecuación:

** Espacio de estados: **

Una vez linealizadas las dos ecuaciones, pasamos a calcular el espacio de estados, que tiene las ecuaciones de la forma:



La primera ecuación será de la forma:

Donde las componentes de la matriz A, corresponden a las del Jacobiano:



Y las componentes del vector B: 

Por tanto, ya tenemos nuestro espacio de estados:



Notar que en el vector C, hemos seleccionado como salida la altura del segundo depósito. Simplemente cambiando este vector a (1 0), podríamos estudiado mediante un procedimiento similar, la altura del primer depósito.

** Función de transferencia: **

Podemos calcular la función de transferencia analíticamente, mediante la expresión:



Que desarrollando:



Podemos comprobar que la función de transferencia obtenida es correcta, utilizando los siguientes comandos en Matlab:

>> A= [-.05, .05; .1,-.2]; >> B= [.5; 0]; >> C= [0,1]; >> D= [0]; >> [num, den] = ss2tf(A,B,C,D); >> sys= tf(num,den)

Donde obtenemos la función de transferencia: 5.551e-017 s + 0.05 s^2 + 0.25 s + 0.005

El término //5.551e-017 s// obtenido por Matlab, lo hemos eliminado por aproximación, ya que procede de los errores de iteración numérica que utiliza Matlab para hallar la función de transferencia. ** Respuesta ante entrada escalón **

>> step(sys) Como podemos observar es un sistema muy lento. ** Diagrama de polos y ceros **

>> pzmap(sys) ** Lugar de las raíces **

>> rltool(sys)


 * Discretización de las funciones de transferencia: **

En primer lugar discretizaremos el sistema de manera analítica:



Resolvemos con el comando //residue// de Matlab: Para **T=0.1s** la función de transferencia discreta obtenida analíticamente es:

La simplificamos: La funcion que nos proporciona Matlab mediante el comando Gpz1=c2d(sys,0.1,'zoh') Verificamos que la función de transferencia obtenida de forma analítica y la obtenida mediante Matlab son iguales. Para ello comprobaremos que el error, es decir, la diferencia entre ambas sea muy cercano a cero:

**Para T= 0.5**

La función obtenida analíticamente es:

La simplificamos:

Y la que nos da Matlab es:

Como antes, calculamos el error:

que como vemos, es muy cercano a 0.

**Para T=1s**

La función obtenida analíticamente es: 

La obtenida por Matlab es: Y el error:

**Vemos la respuesta ante escalón del sitema para cada uno de los tiempos de muestreo que hemos utilizado:**

rltool(Gpz) ->Analysis-> Response to step comand

Para T=0.1 s

Para T=0.5 s Para T= 1s Podemos observar que a mayor tiempo de muestreo menor es la aproximación a la respuesta en contínua.

**Añadimos al sistema un retardo de 0.22s y discretizamos el sistema para T=0.1s**

Tenemos la misma descomposicición en fracciones simples que en el primer apartado:



Quedando la funcion de transferencia:



En formato zpk: En formato ss:

Con el comando ss(G) de Matlab

**El lugar de las raices es:**



**Valor de la ganancia crítica**

El valor de la ganancia crítica para nuestro sistema es de **559.3**, para la que obtenemos un lugar de las raíces y una respuesta ante escalón: **Compensar el sistema para que cumpla las especificaciones de tiempo de establecimiento < 3s, sobreoscilacion < 15% y error ante entrada escalón nulo**

Con un controlador proporcional no podemos cumplir las especificaciones, ya que nuestro sistema es de tipo 0 y para que cumpla la condicion de error nulo ante entrada escalón tiene que ser como mínimo de tipo 1.

Por lo tanto, compensaremos el sistema con un controlador PID que tiene la siguiente forma:

El lugar de las raíces de nuestro sistema discretizado con el retardo incluido y el compensador PID es el siguiente: La respuesta ante escalón en bucle cerrado de nuestro sistema compensado es:

Como vemos cumplimos la especificacion de sobreoscilación <15% (12.3%) y el error nulo ante entrada escalón. Pero la especifícación de tiempo de establecimiento menor que 3 segundos es muy difícil para nuestro sistema poder cumplirlo, ya que la respuesta del sistema, sin incluir el retardo, ya es de por sí bastante lenta.

Esto se debe a que nuestro sistema tiene unas constantes de tiempo muy lentas, teniendo polos en contínua muy cercanos al cero que hacen que éste sea muy lento.

**Diagrama SIMULINK**





Como vemos, la gráfica obtenida mediante SIMULINK es similar a la obtenida mediante rltool.