IDENTIFICACIÓN DEL SISTEMA DINÁMICO MULTITANQUE MEDIANTE RED NEURONAL

Se desea identificar el sistema de dos tanques acoplados que se muestra en la figura. Las señales de entrada que se utilizarán son los valores de anchos de pulso de cada señal pwm que controla la apertura de las válvulas C1 y C2. El caudal de entrada al tanque superior es constante.

El modelamiento matemático del sistema se lo ha realizado en simulink, a partir de la información del manual del sistema multitanque.
En los esquemas de simulación de cada tanque se ha aumentado un bloque de función que tiene por objeto transformar el valor de ancho de pulso de la señal pwm de cada válvula a un valor de Constante de válvula C.

Para la válvula C1 del tanque 1 el ancho de pulso de la señal PWM es u2. Para la válvula C2 el ancho de pulso para la señal PWM de control es u3. Se ha asumido una relación lineal entre el ancho de pulso de la señal PWM y el coeficiente de la válvula C.

Modelo Matemático



Deducción la función β(H2) que aparece en el modelo matemático del tanque 2.



Simulación del proceso para distintas condiciones de apertura de las válvulas y graficos de la evolución de los niveles en los tanques. 





Código requerido para identificar mediante una red neuronal el sistema dinámico formado por los dos tanques para distintas aperturas de válvulas. 

% % Identificar un sistema dinámico no lineal mediante redes neuronales. el
% %sistema dinámico esta descrito mediante ecuaciones diferenciales en el
% %espacio.
% % x`(t)= f(x(t),u(t))
% %y(t)=g(x(t))
% %La identificación se realizara usando el toolbox NEURAL de matlab
% %OBTENCION DE UN CONJUNTO DE ENTRENAMIENTO
%
% H1iniV=[1:2:25];%
% H2iniV=[1:2:25];
% ap1V=[0.5:0.1:1]
% ap2V=[0.5:0.1:1]
%Combinacion de valores de vectores : combvec
Pm=combvec(H1iniV,ap1V,H2iniV,ap2V);
dh1V=[]
dh2V=[]
for i=1:length(Pm)
%verificar que el modelo de simulink tenga estas variables de entrada
  H1ini=Pm(1,i);
  ap1=Pm(2,i);
  H2ini=Pm(3,i);
  ap2=Pm(4,i);
%%%%%%%%%%%%%%%%%%%%%
  sim('two_tank_1',[0 1])%simula el Sistema tanque 1 seg y entrega H1,H2
% verificar en modelo que H1 y H2 entreguen un solo valor y tipo array
  dh1=H1-H1ini;
  dh2=H2-H2ini;
  dh1V=[dh1V dh1];
  dh2V=[dh2V dh2];
  mensaje=sprintf('patron no %d de %d',i,length(Pm))
end
Tm=[dh1V;dh2V];
% Aproximacion de funciones
P=Pm
T=Tm
net = newff(minmax(P),[8 2],{'tansig' 'purelin'});
Y = sim(net,P);
net.trainParam.epochs = 50;
net.trainParam.goal=1e-5
net = train(net,P,T);
Y = sim(net,P);
close all
figure(1)
subplot(211)
plot(dh1V,'k')
subplot(212)
plot(dh2V,'k')

figure(2)
dh1nn= Y(1,:)
dh2nn=Y(2,:)
subplot(211)
plot(dh1nn)
subplot(212)
plot(dh2nn)
hold off

Diagrama en simulink que permita la verificación del sistema identificado con red neuronal mediante una comparación con el sistema original. 






0 comentarios :

Publicar un comentario