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