Saltar al contenido
Control Automático Educación

5. Modelado de dos tanques de Nivel en Cascada

Modelo estático del sistema de nivel

Si se considera que la presión manométrica entre los puntos 1 y 2 son cero. Que m es la masa de las partículas de fluido entre el punto 1 y 2. Y que v es la velocidad de salida de la particula 1 y 2. se tiene que.

\dfrac{1}{2}mv^2=mgH

v=\sqrt{2gH}

El flujo de salida del tanque para el caso de una sección transversal S es:

Q=Sv=S\sqrt{2gH}

Q=S\sqrt{2g}\sqrt{H}

Q=K\sqrt{H}

Flujo por una Válvula

De manera general el flujo que pasa por una válvula de control en estado estacionario es dado por:

Q_v=K_vA_s\sqrt{\Delta P}

Q_v: Flujo a través da válvula

K_v: una constante

A_s: Área de paso

\Delta P: Presión diferencial a través de la válvula. P2-P1

Se puede concluir que el flujo que pasa por la válvula es proporcional al área de abertura de la válvula en el caso que la diferencia de presión sea constante. De manera practica tomamos una válvula con un comportamiento inteligente, donde sea posible hacer una aproximación mas o menos lineal entre el flujo Qv y la abertura de la válvula.

Q_s=S. a . \sqrt{2gH}

Q_s=K .a .\sqrt{H}

Vamos a suponer que el flujo de entrada Qe es proporcional a la abertura de la válvula de entrada considerando un suministro constante.

q_i=k_1a_1

Modelado Matemático

Tanques de Nivel en Cascada

Tanque 1:

A_1\dfrac{dh_1}{dt}=q_i-q_m

A_1\dfrac{dh_1}{dt}=k_1a_1-k_2\sqrt{h_1}

Tanque 2:

A_2\dfrac{dh_1}{dt}=q_m-q_o

A_2\dfrac{dh_2}{dt}=k_2\sqrt{h_1}-k_3a_2\sqrt{h_2}

Linealización del sistema no lineal

Primero encontramos el punto de equilibrio del sistema volviendo todas las derivadas igual a cero:

Tanque 1:

0=q_{is}-q_{ms}

q_{is}=q_{ms}

k_1a_1=k_2\sqrt{h_{1s}}

h_{1s}=\left(\dfrac{k_1a_1}{k_2}\right)^2

Tanque 2:

0=q_{ms}-q_{os}

q_{ms}=q_{os}

k_2\sqrt{h_{1s}}=k_3a_2\sqrt{h_{2s}}

h_{2s}=\dfrac{k_2^2h_{1s}}{(k_3a_2)^2}

Linealización por Series de Taylor:

F(x)=F(x^*)+\nabla F(x^*)\Delta x + \dfrac{1}{2}\left. \dfrac{d^2}{dx^2}\right|_{x^*}\Delta x^2 + \dfrac{1}{3!}\left. \dfrac{d^3}{dx^3}\right|_{x^*}\Delta x^3

Dado que la serie de Taylor es una serie infinita, y nuestro objetivo es linealizar el sistema en un punto de operación, únicamente vamos a tomar hasta la primera derivada de la serie de Tayor. Esta primera derivada es conocida como la Jacobiana del sistema.

F(x)=F(x^*)+\nabla F(x^*)\Delta x

Ahora llevándolo para el problema de los tanques en cascada, vamos a linealizar el primer tanque con relación a la abertura de la primera válvula:

Inicialmente la función de Taylor es equivalente a:

F(a_1,h_1)=A_1\dfrac{dh_1}{dt}

Ahora si linealizamos en torno a un punto de equilibrio que vamos a llamar h_1^* y a_1^*, como son dos variables, nuestra serie de Taylor se reduce a la siguiente expresión:

F(a_1,h_1)\approx F(a_1^*,h_1^*)+\left.\dfrac{\partial F}{\partial a_1}\right|_{a_1^*,h_1^*}(a_1-a_1^*)+\left.\dfrac{\partial F}{\partial h_1}\right|_{a_1^*,h_1^*}(h_1-h_1^*)

note que \Delta a_1= a_1-a_1^* y \Delta h_1= h_1-h_1^*, que permite expresar el problema en variable desvío. Es decir estamos trasladando el problema al punto donde queremos linealizar (a_1^*,h_1^*).

F(a_1,h_1)\approx k_1a_1^*-k_2\sqrt{h_1^*} + k_1\Delta a_1-\dfrac{k2}{2\sqrt{h_1^*}}\Delta h_1

Sabemos que:

\underset{A_1\dfrac{dh_1}{dt}}{\underbrace{F(a_1,h_1)}}\approx \underset{\left.A_1\dfrac{dh_1}{dt}\right|_{a_1^*,h_1^*}}{\underbrace{k_1a_1^*-k_2\sqrt{h_1^*}}} + k_1\Delta a_1-\dfrac{k2}{2\sqrt{h_1^*}}\Delta h_1

por lo tanto despejando:

A_1\dfrac{dh_1}{dt}-\left.A_1\dfrac{dh_1}{dt}\right|_{a_1^*,h_1^*}\approx k_1\Delta a_1-\dfrac{k2}{2\sqrt{h_1^*}}\Delta h_1

donde el primer tanque linealizado es:

A_1\dfrac{d\Delta h_1}{dt}= k_1\Delta a_1-\dfrac{k2}{2\sqrt{h_1^*}}\Delta h_1

Notemos que la ecuación anterior ahora es una ecuación lineal que depende de la variable desvío \Delta h_1 y que ésta no se encuentra inserida en ninguna raíz cuadrada.

Podemos Aplicar transformada de LaPlace para llevar la ecuación lineal al plano transformado S

A_1s\Delta h_1(s)=k_1\Delta a_1(s)-\dfrac{k2}{2\sqrt{h_1^*}}\Delta h_1(s)

A_1s\Delta h_1(s)+\dfrac{k2}{2\sqrt{h_1^*}}\Delta h_1(s)=k_1\Delta a_1(s)

\Delta h_1(s)(A_1s+\dfrac{k2}{2\sqrt{h_1^*}})=k_1\Delta a_1(s)

G_1(s)=\dfrac{\Delta h_1(s)}{\Delta a_1(s)}=\dfrac{k_1}{A_1s+\dfrac{k2}{2\sqrt{h_1^*}}}

Para el Tanque 2 tenemos:

F(h_1,h_2)=A_2\dfrac{dh_2}{dt}

Linealizando tanque 2

F(h_1,h_2)\approx F(h_1^*,h_2^*)+\left.\dfrac{\partial F}{\partial h_1}\right|_{h_1^*,h_2^*}(h_1-h_1^*)+\left.\dfrac{\partial F}{\partial h_2}\right|_{h_1^*,h_2^*}(h_2-h_2^*)

F(h_1,h_2)\approx k_2\sqrt{h_1^*}-k_3a_2\sqrt{h_2^*}+\dfrac{k_2}{2\sqrt{h_1^*}}\Delta h_1-\dfrac{k_3a_2}{2\sqrt{h_2^*}}\Delta h_2

Sabemos que:

\underset{A_2\dfrac{dh_2}{dt}}{\underbrace{F(h_1,h_2)}}\approx \underset{\left.A_2\dfrac{dh_2}{dt}\right|_{h_1^*,h_2^*}}{\underbrace{k_2\sqrt{h_1^*}-k_3a_2\sqrt{h_2^*}}} +\dfrac{k_2}{2\sqrt{h_1^*}}\Delta h_1-\dfrac{k_3a_2}{2\sqrt{h_2^*}}\Delta h_2

A_2\dfrac{dh_2}{dt}-\left.A_2\dfrac{dh_2}{dt}\right|_{h_1^*,h_2^*}\approx \dfrac{k_2}{2\sqrt{h_1^*}}\Delta h_1-\dfrac{k_3a_2}{2\sqrt{h_2^*}}\Delta h_2

A_2\dfrac{d\Delta h_2}{dt}= \dfrac{k_2}{2\sqrt{h_1^*}}\Delta h_1-\dfrac{k_3a_2}{2\sqrt{h_2^*}}\Delta h_2

apicando Laplace

A_2s\Delta h_2(s)= \dfrac{k_2}{2\sqrt{h_1^*}}\Delta h_1(s)-\dfrac{k_3a_2}{2\sqrt{h_2^*}}\Delta h_2(s)

\Delta h_2(s)(A_2s+\dfrac{k_3a_2}{2\sqrt{h_2^*}})= \dfrac{k_2}{2\sqrt{h_1^*}}\Delta h_1(s)

Esta ecuación depende de la transformada de Laplace del tanque 1, por eso debemos sustituirla en la expresión de \Delta h_1(s)

\Delta h_2(s)(A_2s+\dfrac{k_3a_2}{2\sqrt{h_2^*}})= \dfrac{k_2}{2\sqrt{h_1^*}}\dfrac{k_1\Delta a_1(s)}{A_1s+\dfrac{k2}{2\sqrt{h_1^*}}}

Así nos queda una Función de Transferencia de Segundo Orden

G_2(s)=\dfrac{\Delta h_2(s)}{\Delta a_1(s)}=\dfrac{\dfrac{k_1k_2}{2\sqrt{h_1^*}}}{\left(A_1s+\dfrac{k2}{2\sqrt{h_1^*}}\right)\left(A_2s+\dfrac{k_3a_2}{2\sqrt{h_2^*}}\right)}

Podemos aprovechar y tomar también nuestras ecuaciones lineales en el dominio del tiempo y representarlas en Espacio de Estados, asi:

A_1\dfrac{d\Delta h_1}{dt}= k_1\Delta a_1-\dfrac{k_2}{2\sqrt{h_1^*}}\Delta h_1

A_2\dfrac{d\Delta h_2}{dt}= \dfrac{k_2}{2\sqrt{h_1^*}}\Delta h_1-\dfrac{k_3a_2}{2\sqrt{h_2^*}}\Delta h_2

\begin{bmatrix} \Delta \dot{h_1}\\ \\ \Delta \dot{h_2} \end{bmatrix}= \begin{bmatrix} -\dfrac{k_2}{2A_1\sqrt{h_1^*}} & 0\\ \dfrac{k_2}{2A_2\sqrt{h_1^*}} & -\dfrac{k_3a_2}{2A_2\sqrt{h_2^*}} \end{bmatrix} \begin{bmatrix} \Delta {h_1}\\ \\ \Delta h_2 \end{bmatrix} + \begin{bmatrix} \dfrac{k_1}{A1}\\ \\ 0 \end{bmatrix}\Delta a_1

y=\begin{bmatrix} 0 & 1 \end{bmatrix} \begin{bmatrix} \Delta {h_1}\\ \\ \Delta h_2 \end{bmatrix}

LINEALIZACIÓN POR JACOBIANA

Otra forma genérica de linealizar es utilizando la Jacobiana, que es simplemente el primer termino de la expansión de series de Taylor, con lo cual podremos obtener directamente nuestro sistema linealizado expresado en la representación en el espacio de estados:

Serie de Taylor: F(x)=F(x^*)+\nabla F(x^*)\Delta x

Jacobiana:\nabla F(x^*)\Delta x

\begin{bmatrix} \Delta \dot{h_1}\\ \\ \Delta \dot{h_2} \end{bmatrix}= \begin{bmatrix} \dfrac{\partial F_1}{\partial \Delta h_1} & \dfrac{\partial F_1}{\partial \Delta h_2}\\ \\ \dfrac{\partial F_2}{\partial \Delta h_1} & \dfrac{\partial F_2}{\partial \Delta h_2} \end{bmatrix} \begin{bmatrix} \Delta {h_1}\\ \\ \\ \Delta h_2 \end{bmatrix} + \begin{bmatrix} \dfrac{\partial F_1}{\partial \Delta a_1}\\ \\ \dfrac{\partial F_2}{\partial \Delta a_1} \end{bmatrix}\Delta a_1

donde:

F_1(h_1,h_2,a_1)=\dfrac{1}{A_1}\left( k_1a_1-k_2\sqrt{h_1}\right)

F_2(h_1,h_2,a_1)=\dfrac{1}{A_2}\left( k_2\sqrt{h_1}-k_3a_2\sqrt{h_2}\right)

Dando el mismo resultado:

\begin{bmatrix} \Delta \dot{h_1}\\ \\ \Delta \dot{h_2} \end{bmatrix}= \begin{bmatrix} -\dfrac{k_2}{2A_1\sqrt{h_1^*}} & 0\\ \dfrac{k_2}{2A_2\sqrt{h_1^*}} & -\dfrac{k_3a_2}{2A_2\sqrt{h_2^*}} \end{bmatrix} \begin{bmatrix} \Delta {h_1}\\ \\ \Delta h_2 \end{bmatrix} + \begin{bmatrix} \dfrac{k_1}{A1}\\ \\ 0 \end{bmatrix}\Delta a_1

y=\begin{bmatrix} 0 & 1 \end{bmatrix} \begin{bmatrix} \Delta {h_1}\\ \\ \Delta h_2 \end{bmatrix}

DATOS NUMÉRICOS

Vamos a asignarle algunos datos numericos a nuestro problema para poderlo simular en Matlab y Simulink. Vamos a suponer entonces los siguientes datos:

k_1=0.04m^3/s

k_2=0.03m^{5/2}/s

k_3=0.055m^{5/2}/s

a_1=0.5

a_2=0.45

A_1=1m^2

A_2=1.5m^2

A continuación implementaremos el código en matlab usando las funciones para resolver ecuaciones diferenciales y también lo implementaremos en SIMULINK usando S-FUNCTION y también álgebra de Bloques.

[sociallocker id=948]

DESCARGAR TODOS LOS CÓDIGOS: CLICK AQUI PARA BAJAR.

Implementación en MATLAB

% Tanques en Cascada
% Sergio Andres Castaño Giraldo
% Rio de Janeiro - 2017
% https://controlautomaticoeducacion.com/

clc
clear all
close all
%Parametros

k1=0.04;
k2=0.03;
k3=0.055;
a1=0.0:0.1:1;   %Abertura de la Valvula entrada
a2=0:0.1:1;     %Abertura de la Valvula salida
A1=1;
A2=1.5;

%Abertura de las Valvulas para el punto de equilibrio
a1s=0.5;
a2s=0.45;

%Altura en los tanques en el punto de equilibrio
h1s=((k1*a1s)/k2)^2;
h2s=((k2^2*h1s)/(k3*a2s)^2);
Eq1=[h1s h2s];

%Perfil de los estados estacionarios variando valvula de entrada a1 fijando
%valvula de salida a2

H1s=((k1.*a1)/k2).^2;
H2s=((k2^2.*H1s)./(k3*a2s)^2);

figure
subplot(2,1,1);
plot(a1,H1s),grid
title('Variación de nivel h1');
ylabel('Altura (h)');
xlabel('Abertura de Valvula a1');
subplot(2,1,2);
plot(a2,H2s),grid
title('Variación de nivel h2');
ylabel('Altura (h)');
xlabel('Abertura de Valvula a1');

%% Linealizacion del sistema por Jacobiana
syms x1 x2 ua1

% Funciones para realizar la jacobiana

fx1 = 1/A1*(k1*ua1-k2*sqrt(x1));
fx2 = 1/A2*(k2*sqrt(x1)-k3*a2s*sqrt(x2));

%Conforma vectores
fx = [fx1;fx2];
x = [x1;x2];

%Linealiza por medio de la Jacobiana
A = jacobian(fx,x);
B = jacobian(fx,ua1);
C = [0 1]; %Matriz de salida (Cb)

%Reemplazo los puntos de equilibrio en la Jacobiana
display('Representación en Espacio de Estado Caso 1')
Ad = double(subs(A,{x1,x2},{Eq1}))
Bd = double(B)

%Determino la Funcion de Transferencia
display('Representación en Función de Transferencia Caso 1')
[num1,den1]=ss2tf(Ad,Bd,C,0);
ft1=tf(num1,den1)


%Creamos la función de transferencia del Proceso para la altura h2

num=(k1*k2)/(2*sqrt(h1s));
den=conv([A1 k2/(2*sqrt(h1s))],[A2 (k3*a2s)/(2*sqrt(h2s))]);
G2=tf(num,den);

%Carga los parametros en una variable Par, para hacer la integración del
%sistema

par.k1=k1; 
par.k2=k2; 
par.k3=k3; 
par.A1=A1;
par.A2=A2;

u(1)=a1s;
u(2)=a2s;


% Simula el Modelo No Lineal, realizando la integración del modelo,
% resolviendo las ecuaciones diferenciales del sistema

t=0:0.01:1000;
du=-0.001;   %Pequeña Variación en la entrada del sistema
u(1)=a1s+du;

[ts,X1] = ode23t(@(t,x)tankmodel(t,x,u,par), t , Eq1);
u2=zeros(length(ts),1); %Creo el vector de entrada para la FT
u2(:,1)=du*ones(length(ts),1); %Lo lleno con el pequeño incremento
[ylin]=lsim(G2,u2,ts);

%Grafica
figure
plot(ts,X1(:,2),'-b',ts,ylin+Eq1(2),'--r','LineWidth',2);
title('Comparación modelo Lineal vs No Lineal');
xlabel('tiempo (s)');
ylabel('h_2 m^3/s');
legend('No lineal','Lineal');

FUNCIÓN DEL MODELO DEL TANQUE:

 function x = tankmodel(~,x,u,par)

 %Carga los parametros
k1  = par.k1; 
k2  = par.k2; 
k3  = par.k3; 
A1  = par.A1;
A2  = par.A2;

%Carga las entradas del Modelo
a1  = u(1);
a2  = u(2);


   %Definición de las Variables de Estado
   h1   = x(1);
   h2   = x(2);
%
%  Sistema de Ecuaciones
%
   dh1dt = 1/A1*(k1*a1-k2*sqrt(h1));
   dh2dt = 1/A2*(k2*sqrt(h1)-k3*a2*sqrt(h2));
%
%  Vector de Estados
%
   x = [dh1dt;dh2dt];

FUNCIÓN DE LA S-FUNCTION:

function [sys,x0]=smodelo(t,x,u,flag,par,h1s,h2s)
% En el Flag 0 es el paso donde indicamos para la S-Function que es lo que
% la función va a encontrar en el momendo de leer el modelo. Esa
% información será encontrada en un vector de 6 elementos, que llamaremos
% "sys"
if flag==0
   %Elemento 1: Número de estados continuos (Ecuaciones diferenciables)= 2
   %Elemento 2: Número de estados discretos: 0
   %Elemento 3: Número de saídas do modelo: 2
   %Elemento 4: Número de Entradas do modelo (a1) (a2): 2 entradas
   %Elemento 5: Parametro de control, colcar 0
   %Elemento 6: Tipologia do processo, (1 para processos continuos)
   [sys]=[2,0,2,2,0,0];
   %Incluir las condiciones iniciales
   x0=[h1s h2s];
elseif flag==1
    %Flag 1 llama el modelo
   [sys]=tankmodel(t,x,u,par);
elseif flag==3
    %Flag 3 indica la respuesta que se debe obtener, en este caso, un vetor con las 2
    %variables de estado
   [sys]=x;
else
    %Como paso final con un vetor nulo se cierra el bucle
   [sys]=[];
end
end

[/sociallocker]

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Comentarios (8)

Saludos Sergio, gran explicación como siempre, nunca dejo de seguir tus vídeos y enseñanzas sobre el control de procesos. Me surge la duda, de como es mas conveniente analizar los sistemas, ya sea por modelo de ecuaciones diferenciales o por adquisición de datos mediante excitación del sistema en un punto de trabajo cualquiera. Cuando es conveniente utilizar uno que otro método? saludos desde República Dominicana.

Responder

Hola Emmanuel, el modelado fenomenológico es prudente cuando no puedes abrir el lazo de control para hacer pruebas de estimación en la planta o cuando no se ha construido la planta y se desean hacer estudios de diseño sobre la misma. Saludos.

Responder

Hola Sergio, ¿por qué no se ha incluido ningún PID en el proceso? ¿No es necesario?

Muchas gracias.

PD: Increíble trabajo el de esta página web. Mis felicitaciones.

Responder

Gracias Jesús por el comentário. En esta entrada no se incluye un PID, porque no es el objetivo del post. Aquí solo estamos modelando matemáticamente el proceso. Con dicho modelo posteriormente puedes implementar un controlador PID. Por ejemplo en la siguiente entrada hicimos el PID para este modelo (click aquí para ver)

Responder

Sergio un excelente trabajo. quería preguntar si podrías realizar el mismo ejercicio pero linealizarlo mediante taylor y no jacobbi. no se si habra la oportunidad de ver algo así pero con taylor

Responder

Omar pero es lo mismo, La jacobiana es simplemente el primer termino de la serie de taylor, o sea la primera derivada, con la cual se hace la linealización.

Responder

SERGIO CASTAÑO. ESPECIAL TRABAJO, AGRADEZCO TOTALMENTE EL TIEMPO DEDICADO A DESARROLLAR Y COMPARTIR TAN CLARA INFORMACIÓN.
ME GUSTARÍA APOYARTE CON LA SOLICITUD DEL CAFE, SOLO QUE TENGO LA DUDA DEL PROCESO, PODRÍA RECIBIR TU CORREO PARA QUE ME CONFIRMES LO CONFIABLE DEL PROCESO QUE AQUÍ APARECE????

Responder

Hola Juan, gracias por tu comentário, que bueno que te haya servido la información. Lo de la donación al sitio web, se hace directamente desde PayPal, es decir que cuando se da click en comprar agora, serás remitido directamente a paypal, en mi blog no se hace la transacción, por eso puedes estar seguro, pues sabes que PayPal es una plataforma de pagos online mas utilizada en el mundo. Saludos.

Responder