Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Control Adaptativo
Control Adaptativo
Control Adaptivo
Ejemplo 5.1
% ejem5_1.m ESTIMACION DE PARAMETROS EMPLEANDO EL METODO
% DE LOS MINIMOS CUADRADOS RECURSIVO
clear all
% PARAMETROS DEL PROCESO NO LINEAL (TABLA 3.3)
Lo = 0.776;
JL = 3.5e-7; bL = 1e-5; Ro = 0.01;
Jm = 1.9062e-6; bm = 1.8338e-6; g = 9.81;
E = 31.0352e-3; R = 7.38; m = 0.06377;
Kact = 14.9; cc = 0.25; Mo = 0.0; % 0.01, 0.02, 0.045;
K = 31.071e-3; n = 19.741; L = 4.64e-3;
B = n^2*bm +bL;
Jeff = n^2*Jm +JL;
M = Jeff + (1/3)*m*Lo^2 + Mo*Lo^2 + (2/5)*Mo*Ro^2;
N = g*Lo*(Mo+m/2);
% MODELO LINEAL CONTINUO DEL PROCESO DE SEGUNDO ORDEN
Ac = [0 1;-N/M -(B + n^2*K*E/R)/M]; % (c: CONTINUO)
Bc = [0;n*K*Kact/(R*M)];
Cc = [1 0]; Dc = [0];
% MODELO LINEAL DISCRETO DEL PROCESO DE SEGUNDO ORDEN
T = 0.01; % PERIODO DE MUESTREO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,'zoh');
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3);
b1 = num(2); b2 = num(3);
% CONDICIONES INICIALES Y OTROS PARAMETROS
alfa=1000; Pi = alfa*eye(5); % MATRIZ P INICIAL
theta_p = [-a1 -a2 b1 b2]'; % PARAMETROS DEL PROCESO
thetai = [0 0 0 0 0]'; % PARAMETROS INICIALES
lambda = 0.99; % FACTOR DE MEMORIA
Y(1) = 0; Y(2) = 0; U(1) = 0; U(2) = 0;
% PROCEDIMIENTO DE IDENTIFICACION
Mm = 1000;
for r = 1:Mm
k = r + 2;
U(k) = 0.4;
psi_p = [Y(k-1) Y(k-2) U(k-1) U(k-2)]';
Y(k) = psi_p'*theta_p; % MODELO LINEAL DEL PROCESO
psi = [psi_p;1]; % VECTOR DE DATOS
e = Y(k)-psi'*thetai; % ERROR DE ESTIMACION
i = Pi*psi;
j = psi'*i;
gamma = i/(lambda + j);
theta = thetai+gamma*e; % VECTOR DE PARAMETROS
ae1(r) = -theta(1); % PARAMETRO a1 ESTIMADO
ae2(r) = -theta(2); % PARAMETRO a2 ESTIMADO
be1(r) = theta(3); % PARAMETRO b1 ESTIMADO
be2(r) = theta(4); % PARAMETRO b2 ESTIMADO
Pgina 1
P = (eye(5) - gamma*psi')*Pi/lambda;
% ACTUALIZACION
thetai = theta;
Pi = P;
end
% GRAFICOS
q=0:Mm-1;
figure(1)
subplot(2,1,1)
plot(q,U(1:Mm)); grid
ylabel('SEAL EXCITATRIZ U')
xlabel('MUESTRAS DISCRETAS k = 0.01 s')
subplot(2,1,2)
plot(q,Y(1:Mm)); grid
ylabel('RESPUESTA Y DEL PROCESO')
xlabel('MUESTRAS (CADA MUESTRA EQUIVALE A 0.01 s)')
print -deps -f ejem5_1a
figure(2)
plot(q,ae1,q,ae2,'-.'); grid
xlabel('MUESTRAS (CADA MUESTRA EQUIVALE A 0.01 s) ')
ylabel('PARAMETROS ESTIMADOS')
print -deps -f ejem5_1b
figure(3)
plot(q,be1,q,be2,'-.'); grid
xlabel('MUESTRAS (CADA MUESTRA EQUIVALE A 0.01 s)')
ylabel('PARAMETROS ESTIMADOS')
print -deps -f ejem5_1c
Pgina 2
Ejemplo 5.2
% ejem5_2.m ESTIMACION DE PARAMETROS EMPLEANDO EL METODO
% DE LOS MINIMOS CUADRADOS RECURSIVO MEJORADO
clear all
% PARAMETROS DEL PROCESO NO LINEAL (TABLA 3.3)
JL = 3.5e-7; bL = 1e-5; Ro = 0.01;
Jm = 1.9062e-6; bm = 1.8338e-6; g = 9.81;
E = 31.035e-3; R = 7.38; m = 0.06377;
Kact = 14.9; cc = 0.25; Lo = 0.776;
K = 31.071e-3; n = 19.741; L = 4.64e-2;
Mo = 0.0; % peso variable: 0 gr, 10 gr, 20 gr y 45 gr
B = n^2*bm +bL;
Jeff = n^2*Jm +JL;
Pgina 3
Pgina 4
Psnew = Snew*Ps*Snew;
Pi = Psnew; thetai = theta;
end
end
% GRAFICOS
q=0:Mm-1;
figure(1)
subplot(2,1,1)
plot(q,U(1:Mm))
ylabel('SEAL EXCITATRIZ U')
grid
subplot(2,1,2)
plot(q,Y(1:Mm))
ylabel('RESPUESTA Y DEL PROCESO')
xlabel('MUESTRAS (CADA MUESTRA EQUIVALE A 0.01 s)')
grid
print -deps -f ejem5_2a
figure(2)
plot(q,ae1,q,ae2)
text(250,0.55,'a2');
text(250,-0.7,'a1');
xlabel('MUESTRAS (CADA MUESTRA EQUIVALE A 0.01 s)')
ylabel('PARAMETROS ESTIMADOS')
grid
print -deps -f ejem5_2b
figure(3)
plot(q,be1,q,be2)
text(250,2.5e-3,'b1');
text(250,-3e-3,'b2');
xlabel('MUESTRAS (CADA MUESTRA EQUIVALE A 0.01 s)')
ylabel('PARAMETROS ESTIMADOS')
grid
print -deps -f ejem5_2c
Pgina 5
Pgina 6
B = n^2*bm +bL;
Jeff = n^2*Jm +JL;
M = Jeff + (1/3)*m*Lo^2 + Mo*Lo^2 + (2/5)*Mo*Ro^2;
N = g*Lo*(Mo+m/2);
% MODELO LINEAL DEL PROCESO CONTINUO DE SEGUNDO ORDEN
Ac = [0 1;-N/M -(B + n^2*K*E/Ra)/M]; % (c: CONTINUO)
Bc = [0;n*K*Kact/(Ra*M)];
Cc = [1 0]; Dc = [0];
% MODELO LINEAL DISCRETO DEL PROCESO DE SEGUNDO ORDEN
T = 0.01; % PERIODO DE MUESTREO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,'zoh');
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3);
b1 = num(2); b2 = num(3);
% Gcc,Hcc, Ccc, Dcc: REPRESENTACION CANONICA CONTROLABLE
a11 = 0; a12 =1; a21 = -a2; a22 = -a1;
b11 = b1; b21 =b2-a1*b1; c11 =1; c12 = 0;
Gcc = [a11 a12;a21 a22]; Hcc = [b11;b21];
Ccc =[c11 c12]; Dcc = [0];
% REPRESENTACION POLINOMIAL
% A(z^(-1)) = 1 + a1*z^(-1) + a2*z^(-1);
% B(z^(-1)) = b1*z^(-1) + b2*z^(-1);
% A(z^(-1))*Y(k) = B(z^(-1))*U(k) + Ce; % CASO AUMENTADO
% en el estado estacionario: z = 1:
% (1 + a1 + a2)*Yo = (b1 + b2)*Uo + Ce
% CONDICIONES INICIALES
Y(1) = 0; Y(2) = 0; Y(3) = 0; % SALIDA ACTUAL
y(1) = 0; y(2) = 0; % SALIDA RESIDUAL
U(1) = 0; U(2) = 0; U(3) = 0; % SE~NAL DE CONTROL ACTUAL
u(1) = 0; u(2) = 0; % SE~NAL DE CONTROL RESIDUAL
xmenos = zeros(2,1); % VECTOR DE OBSERVACION INICIAL
z=0; % ACCION INTEGRAL INICIAL
X1 = 0; X2 = 0; % ESTADOS ACTUALES
% CONDICIONES INICIALES DE LOS PARAMETROS
Ref = 1; % MAGNITUD DE LA SE~NAL DE REFERENCIA
frec = 0.007; % FRECUENCIA DE LA SE~NAL DE REFERENCIA
Ce = (1 + a1 + a2)*Ref; % VALOR INICIAL DE Ce
thi = [-a1 -a2 b1 b2 Ce]'; % VECTOR INICIAL DE PARAMETROS
alfa=1000; Pi = alfa*eye(5); % MATRIZ DE COVARIANZA INICIAL
lamb=0.98; lamb0 = 0.99; % FACTOR DE MEMORIA
cmax = 100; cmin = 10; % UMBRALES DE ESTIMACION
% PARAMETROS DE OPTIMIZACION
Qo = 0.01; Ro = 0.04; % PARA EL FILTRO DE KALMAN
R = 0.45; Qa = [0.05 0 0;0 0.1 0;0 0 1]; % PARA LA GANANCIA Ka
% ******** LAZO DEL SISTEMA DE CONTROL ADAPTIVO *********
Mm = 2000;
for r = 1:Mm
t = r + 2;
% SE~NAL DE REFERENCIA
Yo(t)= Ref*sign(sin(frec*(t-2)));
% ESTIMACION DE PARAMETROS (METODO MCRM)
psi = [Y(t-1) Y(t-2) U(t-1) U(t-2) 1]';
rho = max(1,norm(psi));
psin = psi/rho;
Nn = chol(Pi'); % Nn*Nn = Pi => Nn*Nn = Pi
S = inv(diag(Nn*ones(5,1),0));
Ps = S*Pi*S;
Pgina 7
psins = inv(S)*psin;
rt = 1 + psins'*Ps*psins;
lamb = 1 - (rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2;
e = Y(t)/rho - thi'*psin;
j = psins'*Ps*psins + lamb;
th = thi + e*inv(S)*Ps*psins/j;
Hns = Ps*psins/j;
Ps = (Ps - Hns*psins'*Ps)/lamb;
tt = abs(max(eig(Ps))/min(eig(Ps)) );
cmax = 100; cmin = 15;
if tt <= cmin,
Pi = Ps; thi = th;
elseif tt >= cmax,
Nnew = chol(Ps'); % Nnew*Nnew = Ps
Snew = inv(diag(Nnew*ones(5,1),0));
Psnew = Snew*Ps*Snew;
Pi = Psnew; thi = th;
end
% RECUPERACION DE LA ECUACION CANONICA CONTROLABLE
ae1 = -th(1); ae2 = -th(2);
be1 = th(3); be2 = th(4); Ce = th(5);
ae11 = 0; ae12 =1; ae21 = -ae2; ae22 = -a1;
GE = [ae11 ae12;ae21 ae22];
be11 = 0; be21 = 1; HE = [be11;be21];
ce11 =be2; ce12 = be1; CE = [ce11 ce12]; DE = [0];
% SALIDA RESIDUAL (DESVIACION)
y(t) = Y(t) - Yo(t);
% CALCULO DE LA GANANCIA Ko DEL ESTIMADOR DE KALMAN
Ko = dlqe(GE,HE,CE,Qo,Ro);
xmas = xmenos + Ko*(y(t) - CE*xmenos); % OBSERVACION
z = z -CE*xmas; % ACCION INTEGRAL
% CALCULO DE LA GANANCIA Ka DEL CONTROLADOR OPTIMO
Ga = [GE zeros(2,1);-CE 1];
Ha = [HE;0];
Ca = [CE 0];
Ka = dlqr(Ga,Ha,Qa,R);
% CALCULO DE LA LEY DE CONTROL RESIDUAL
u(t) = - Ka*[xmas;z];
% ACTUALIZANDO ESTADOS
xmenos = GE*xmas + HE*u(t);
% CALCULO DE Uin (VALOR D.C. DE U(t))
AE = 1 + ae1 + ae2; BE = be1 + be2;
Uin = inv(BE)*(AE*Yo(t) - Ce);
% CALCULO DE LA SE~NAL DE CONTROL U(t)
U(t) = u(t) + Uin;
% LIMITANDO LA SE~NAL U(t) PARA EVITAR SATURACION
if(U(t) > 1.4)
U(t) = 1.4;
elseif(U(t) <-1.4)
U(t) = -1.4;
end
% MODELO NO LINEAL DE SEGUNDO ORDEN (DISCRETIZCION DIRECTA)
TN = cc*sign(X2);
X1 = X1 + T*X2;
X2 = X2 + T*(-(N/M)*sin(X1) - (B/M + n^2*K*E/(M*R))*X2 ...
- TN/M + (n*K*Kact/(R*M))*U(t) );
Y(t+1) = X1;
Pgina 8
end
% ***************** FIN DEL LAZO DE CONTROL **************
% GRAFICOS
ejex = linspace(0,Mm*T,Mm);
subplot(2,1,1)
plot(ejex,Yo(1:Mm),ejex,Y(1:Mm)); grid
ylabel('Posicion Y (rad)')
subplot(2,1,2)
plot(ejex,U(1:Mm)); grid
ylabel('Seal de control U (voltios)')
xlabel('Tiempo en segundos')
print -f -deps simsca % CREA simsca.eps
Pgina 9
Pgina 10
th = thi + e*inv(S)*Ps*psins/j;
Hns = Ps*psins/j;
Ps = (Ps - Hns*psins'*Ps)/lamb;
tt = abs(max(eig(Ps))/min(eig(Ps)) );
cmax = 100; cmin = 15;
if tt <= cmin,
Pi = Ps; thi = th;
elseif tt >= cmax,
Nnew = chol(Ps'); % Nnew*Nnew = Ps
Snew = inv(diag(Nnew*ones(NN,1),0));
Psnew = Snew*Ps*Snew;
Pi = Psnew; thi = th;
end
% RECUPERACION DE LA ECUACION DE ESTADO
ae1=-th(1); ae2=-th(2); ae3=-th(3); ae4=-th(4);
be1=th(5); be2=th(6); be3=th(7); be4=th(8);
je1=th(9); je2=th(10); je3=th(11); je4=th(12);
Ce=th(13);
nume = [0 be1 be2 be3 be4];
dene = [1 ae1 ae2 ae3 ae4];
[GE,HE,CE,DE] = tf2ss(nume,dene);
numde = [1 je1 je2 je3 je4];
[GE,FE,CE,DE] = tf2ss(numde,dene);
% CALCULO DE LA GANANCIA F DEL ESTIMADOR DE KALMAN
F = dlqe(GE,FE,CE,Sigma,Xi);
xmas = xmenos + F*(y(t1+4) - CE*xmenos); % OBSERVACION
z = z -CE*xmas; % ACCION INTEGRAL
% CALCULO DE LA GANANCIA Ka DEL CONTROLADOR
Ga = [GE zeros(nn,r);-CE eye(r,r)]; % ec (22) y ec. (23)
Ha = [HE;zeros(r,r)];
Ca = [CE zeros(r,r)];
Ka = dlqr(Ga,Ha,Qa,R);
% CALCULO DE LA LEY DE CONTROL RESIDUAL
u(t1+4) = - Ka*[xmas;z];% -Kw*w(t1+4);
% ACTUALIZACION DE ESTADOS
xmenos = GE*xmas + HE*u(t1+4);
AE = 1 + ae1 + ae2 + ae3 + ae4; BE = be1 + be2 + be3 + be4;
Uin = inv(BE)*(AE*W(t1+4) - Ce);
% CALCULO DE LA SE~NAL ACTUAL DE CONTROL U
U(t1+4) = u(t1+4) + Uin;
end % ********** FIN DEL LAZO DE CONTROL
% GRAFICOS
ejex = linspace(0,MM*T,MM);
subplot(2,1,1)
plot(ejex,W(6:MM+5),ejex,Y(6:MM+5)); grid
ylabel('Salida y = x1-x2 (m)')
xlabel('Tiempo en segundos')
subplot(2,1,2), grid
plot(ejex,U(6:MM+5)); grid
xlabel('Tiempo en segundos')
ylabel('Fuerza de control (N)')
print -deps -f p3adap1
Pgina 11
Problema 5.2
% p4adap1.m SOLUCION DEL PROBLEMA 5.2
clear all
% PARAMETROS DEL PROCESO
nn = 3; r=1; % nn: ORDEN DEL PROCESO; r: NUMERO DE SALIDAS
NN = 7; % ORDEN DEL VECTOR ESTIMADO DE PARAMETROS
% cmax = 100; cmin = 15; % PARA EL ESTIMADOR DE PARAMETROS
% PARAMETROS PARA OPTIMIZAR GANANCIA DEL FILTRO DE KALMAN
Sigma = 10; Xi = 1;
% PARAMETROS DE OPTIMIZACION DEL CONTROLADOR Ke; r+nn=4
R = 400; Qa = [0 0 0 0;0 0 0 0;0 0 0.001 0;0 0 0 0.001];
% MODELO LINEAL DEL PROCESO EN TIEMPO CONTINUO
Ac = [-0.313 56.7 0;-0.0139 -0.426 0;0 56.7 0];
Bc = [0.232;0.0203;0];
Cc = [0 0 1]; Dc = [0];
T = 0.1; % PERIODO DE MUESTREO
% MODELO LINEAL DISCRETO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,'zoh');
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3); a3=den(4);
b1 = num(2); b2 = num(3); b3=num(4);
% CONDICIONES INICIALES
Ref = 0.2; % MAGNITUD DE LA SE~NAL DE REFERENCIA
Ce = (1 + a1 + a2 + a3)*Ref; % Uo = 0 (ARBITRARIO)
thi = [-a1 -a2 -a3 b1 b2 b3 Ce]';
alfa=1000; Pi = alfa*eye(NN); % MATRIZ P INICIAL
lamb=0.98; lamb0 = 0.99; % FACTOR DE MEMORIA
Y(1)=0; Y(2)=0; Y(3)=0; y(1)=0; y(2)=0; y(3)=0; % SALIDA
U(1)=0; U(2)=0; U(3)=0; u(1)=0; u(2)=0; u(3)=0; % CONTROL
xmenos = zeros(nn,1); % VECTOR DE OBSERVACION INICIAL
z=0; % ACCION INTEGRAL INICIAL
% LAZO DEL SISTEMA DE CONTROL *****************************
MM = 2000;
Pgina 12
for t = 1:MM
% SE~NAL DE REFERENCIA
v1(t+3)=0.2*sign(sin(0.005*t));
% proceso
Y(t+3) = [Y(t+2) Y(t+1) Y(t) U(t+2) U(t+1) U(t)]*...
[-a1 -a2 -a3 b1 b2 b3]';
y(t+3) = Y(t+3) - v1(t+3); % SALIDA RESIDUAL (DESVIACION)
% ESTIMACION DE PARAMETROS (METODO MCRM)
psi = [Y(t+2) Y(t+1) Y(t) U(t+2) U(t+1) U(t) 1]';
rho = max(1,norm(psi));
psin = psi/rho;
Nn = chol(Pi'); % Nn*Nn = Pi => Nn*N = Pi
S = inv(diag(Nn*ones(NN,1),0));
Ps = S*Pi*S;
psins = inv(S)*psin;
rt = 1 + psins'*Ps*psins;
lamb = 1 - (rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2;
e = Y(t+3)/rho - psin'*thi;
j = psins'*Ps*psins + lamb;
th = thi + e*inv(S)*Ps*psins/j;
Hns = Ps*psins/j;
Ps = (Ps - Hns*psins'*Ps)/lamb;
tt = abs(max(eig(Ps))/min(eig(Ps)) );
cmax = 100; cmin = 15;
if tt <= cmin,
Pi = Ps; thi = th;
elseif tt >= cmax,
Nnew = chol(Ps'); % Nnew*Nnew = Ps
Snew = inv(diag(Nnew*ones(NN,1),0));
Psnew = Snew*Ps*Snew;
Pi = Psnew; thi = th;
end
% RECUPERACION DE LA ECUACION CANONICA CONTROLABLE
ae1 = -th(1); ae2 = -th(2); ae3 = -th(3);
be1 = th(4); be2 = th(5); be3 = th(6); Ce = th(7);
nume = [0 be1 be2 be3];
dene = [1 ae1 ae2 ae3];
[GE,HE,CE,DE] = tf2ss(nume,dene);
% CALCULO DE LA GANANCIA F DEL ESTIMADOR DE KALMAN
F = dlqe(GE,HE,CE,Sigma,Xi);
xmas = xmenos + F*(y(t+3) - CE*xmenos); % OBSERVACION
z = z -CE*xmas; % ACCION INTEGRAL
% CALCULO DE LA GANANCIA Ka DEL CONTROLADOR
Ga = [GE zeros(nn,r);-CE eye(r,r)];
Ha = [HE;zeros(r,r)];
Ca = [CE zeros(r,r)];
Ka = dlqr(Ga,Ha,Qa,R);
% CALCULO DE LA LEY DE CONTROL RESIDUAL
u(t+3) = - Ka*[xmas;z]; % ec. (27)
% ACTUALIZANDO ESTADOS
xmenos = GE*xmas + HE*u(t+3); %
% CALCULO DEL VALOR DE EQUILIBRIO U
AE = 1 + ae1 + ae2 + ae3; BE = be1 + be2 + be3;
Uin = inv(BE)*(AE*v1(t+3) - Ce);
% CALCULO DE LA SE~NAL ACTUAL DE CONTROL U(K)
U(t+3) = u(t+3) + Uin;
end % *********************************
Pgina 13
% GRAFICOS
ejex = linspace(0,MM*T,MM);
subplot(2,1,1)
plot(ejex,v1(3:MM+2),ejex,Y(3:MM+2)), grid
ylabel('Inclinacion (rad)')
subplot(2,1,2)
plot(ejex,U(3:MM+2)), grid
xlabel('Tiempo en seg')
ylabel('Angulo del deflector (rad)')
print -deps -f p4adap1
Problema 5.3
% p7adap1a.m SOLUCION DEL PROBLEMA 5.3
clear all
% PARAMETROS GENERALES
nn = 6; r=1; % nn: orden del proceso; r: NUMERO DE SALIDAS
NN = 13; % ORDEN DEL VECTOR ESATIMADO DE PARAMETROS
% cmax = 100; cmin = 15; % PARA EL ESTIMADOR DE PARAMETROS
% PARAMETROS PARA OPTIMIZAR GANANCIA DEL FILTRO DE KALMAN
Xi = 2; Sigma = 1;
% PARAMETROS DE OPTIMIZACION DEL CONTROLADOR Ke
R = 1; Qa = 1*eye(r+nn,r+nn);
% PARAMETROS DEL PROCESO
M1=1300; M2=2600; M3=2600; K12=100000; K23=100000;
B12=500; B23=500; B1=5000; B2=10000; B3=10000;
% MODELO LINEAL DEL PROCESO EN TIEMPO CONTINUO
A=[0 1 0 0 0 0
-K12/M1 -(B1+B12)/M1 K12/M1 B12/M1 0 0
0 0 0 1 0 0
K12/M2 B12/M2 -(K12+K23)/M2 -(B2+B23+B12)/M2 K23/M2 B23/M2
0 0 0 0 0 1
0 0 K23/M3 B23/M3 -K23/M3 -(B3+B23)/M3];
Pgina 14
B=[0 1 0 0 0 0]';
alfa = 1; % CONSTANTE TACOMETRICA
C=[ 0 alfa 0 0 0 0
0 0 0 alfa 0 0
0 0 0 0 0 alfa];
D=[0;0;0];
[numc,denc]=ss2tf(A,B,C,D);
% MODELO LINEAL DISCRETO
T = 0.5; % periodo de muestreo0.2
[G,H,C,D]=c2dm(A,B,C,D,T,'zoh');
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3); a3=den(4);
a4=den(5); a5=den(6); a6=den(7);
b1 = num(2); b2 = num(3); b3=num(4);
b4=num(5); b5=num(6); b6=num(7);
% CONDICIONES INICIALES
Ref = 30; % MAGNITUD DE LA SE~NAL DE REFERENCIA
Ce = (1+a1+a2+a3+a4+a5+a6)*Ref; % Uo = 0 (ARBITRARIO)
thi = [-a1 -a2 -a3 -a4 -a5 -a6 b1 b2 b3 b4 b5 b6 Ce]';
alfa=1000; Pi = alfa*eye(NN); % MATRIZ P INICIAL
lamb=0.98; lamb0 = 0.99; % FACTOR DE MEMORIA
Y(1)=0; Y(2)=0; Y(3)=0; Y(4)=0; Y(5)=0; Y(6)=0;
y(1)=0; y(2)=0; y(3)=0; y(4)=0; y(5)=0; y(6)=0; % salida
U(1)=0; U(2)=0; U(3)=0; U(4)=0; U(5)=0; U(6)=0;
u(1)=0; u(2)=0; u(3)=0; u(4)=0; u(5)=0; u(6)= 0; % control
xmenos = zeros(nn,1); % VECTOR DE OBSERVACION INICIAL
z=0; % ACCION INTEGRAL INICIAL
% INICIO DEL LAZO DE CONTROL *******************
MM = 600;
for t = 1:MM
% SE~NAL DE REFERENCIA
Yo(t+6)= 25 + 5*sign(sin(0.02*t));
% MODELO LINEAL DEL PROCESO
Y(t+6) = [Y(t+5) Y(t+4) Y(t+3) Y(t+2) Y(t+1) Y(t)...
U(t+5) U(t+4) U(t+3) U(t+2) U(t+1) U(t)]*...
[-a1 -a2 -a3 -a4 -a5 -a6 b1 b2 b3 b4 b5 b6]';
y(t+6) = Y(t+6) - Yo(t+6); % salida residual (desviacion)
% ESTIMACION DE PARAMETROS (METODO MCRM)
psi = [Y(t+5) Y(t+4) Y(t+3) Y(t+2) Y(t+1) Y(t)...
U(t+5) U(t+4) U(t+3) U(t+2) U(t+1) U(t) 1]';
rho = max(1,norm(psi));
psin = psi/rho;
Nn = chol(Pi'); % Nn*Nn = Pi => Nn*N = Pi
S = inv(diag(Nn*ones(NN,1),0));
Ps = S*Pi*S;
psins = inv(S)*psin;
rt = 1 + psins'*Ps*psins;
lamb = 1 - (rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2;
e = Y(t+6)/rho - psin'*thi;
j = psins'*Ps*psins + lamb;
th = thi + e*inv(S)*Ps*psins/j;
Hns = Ps*psins/j;
Ps = (Ps - Hns*psins'*Ps)/lamb;
tt = abs(max(eig(Ps))/min(eig(Ps)) );
cmax = 100; cmin = 15;
if tt <= cmin,
Pi = Ps; thi = th;
Pgina 15
Pgina 16
Problema 5.4
% p8adap1.m SOLUCION DEL PROBLEMA 5.4
%PARAMETROS GENERALES
nn = 4; r=1; % nn: orden del proceso; r: NUMERO DE SALIDAS
NN = 9; % ORDEN DEL VECTOR ESATIMADO DE PARAMETROS
% cmax = 100; cmin = 15; % PARA EL ESTIMADOR DE PARAMETROS
% PARAMETROS PARA OPTIMIZAR GANANCIA DEL FILTRO DE KALMAN
Xi = 0.001; Sigma = 400;
% PARAMETROS DE OPTIMIZACION DEL CONTROLADOR Ke
R = 1; Qa = 1*eye(r+nn,r+nn);
% MODELO LINEAL DEL PROCESO EN TIEMPO CONTINUO
Ac = [-0.2 0 0 0;1 0 0 0;2 0 -2 0;5 0 0 -5];
Bc = [0.001;0;0;0];
Cc = [0 1 0 0]; Dc = [0];
T = 0.8; % PERIODO DE MUESTREO
% MODELO LINEAL DISCRETO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,'zoh');
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3); a3=den(4); a4=den(5);
b1 = num(2); b2 = num(3); b3=num(4); b4=num(5);
% CONDICIONES INICIALES
Ref = 1; % MAGNITUD DE LA SE~NAL DE REFERENCIA: Yo = Ref
Ce = (1 + a1 + a2 + a3 + a4)*Ref; % Uo = 0 (arbitrario)
thi = [-a1 -a2 -a3 -a4 b1 b2 b3 b4 Ce]';
alfa=1000; Pi = alfa*eye(NN); % MATRIZ P INICIAL
lamb=0.98; lamb0 = 0.99; % FACTOR DE MEMORIA
Y(1)=0;Y(2)=0;Y(3)=0;Y(4)=0; y(1)=0;y(2)=0;y(3)=0;y(4)=0;
U(1)=0;U(2)=0;U(3)=0;U(4)=0; u(1)=0;u(2)=0;u(3)=0;u(4)=0;
xmenos = zeros(nn,1); % VECTOR DE OBSERVACION INICIAL
Pgina 17
Pgina 18
Problema 5.5
% p9adap1.m SOLUCION DEL PROBLEMA 5.5
clear all
Pgina 19
% PARAMETROS GENERALES
nn = 2; r=1; % nn: ORDEN DEL PROCES; r: NUMERO DE SALIDAS
NN = 5; % ORDEN DEL VECTOR ESATIMADO DE PARAMETROS
% cmax = 100; cmin = 15 % PARA EL ESTIMADOR DE PARAMETROS
% PARAMETROS PARA OPTIMIZAR GANANCIA DEL FILTRO DE KALMAN
Xi = 100; Sigma = 0.01;
% PARAMETROS DE OPTIMIZACION DEL CONTROLADOR Ke
R = 1; Qa = 0.1*eye(r+nn,r+nn);
% PARAMETROS DEL PROCESO NO LINEAL
gamma=0.4; gg=9.81; rho=1.23; A=9; Qo=3;
H=Qo^2/(gamma^2*rho*gg);
Z=(gamma*sqrt(rho*gg))/(2*A*sqrt(H));
% MODELO LINEAL DEL PROCESO EN TIEMPO CONTINUO
Ac = [-Z 0;Z -Z];
Bc = [1;0];
Cc = [1 0]; Dc = [0];
T = 0.8; % PERIODO DE MUESTREO
% MODELO LINEAL DISCRETO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,'zoh');
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3);
b1 = num(2); b2 = num(3);
% Gcc,Hcc, Ccc, Dcc: REPRESENTACION CANONICA CONTROLABLE
a11 = 0; a12 =1; a21 = -a2; a22 = -a1;
b11 = 0; b21 = 1; c11 =b2; c12 = b1;
Gcc = [a11 a12;a21 a22]; Hcc = [b11;b21];
Ccc =[c11 c12]; Dcc = [0];
% CONDICIONES INICIALES
Ref = 1; % MAGNITUD DE LA SE~NAL DE REFERENCIA: Yo = Ref
Ce = (1 + a1 + a2)*Ref; % Uo = 0 (ARBITRARIO)
thi = [-a1 -a2 b1 b2 Ce]';
alfa=1000; Pi = alfa*eye(NN); % MATRIZ P INICIAL
lamb=0.98; lamb0 = 0.99; % FACTOR DE MEMORIA
Y(1) = 0; Y(2) = 0; y(1) = 0; y(2) = 0; % salida
U(1 )= 0; U(2) = 0; u(1) = 0; u(2) = 0; % control
H1(1) =0; H1(2)=0;
xmenos = zeros(nn,1); % VECTOR DE OBSERVACION INICIAL
z=0; % ACCION INTEGRAL INICIAL
% INICIO DEL LAZO DE CONTROL **********************************
MM = 200;
for t = 1:MM
% SE~NAL DE REFERENCIA
g(t+2)=2-1*sign(sin(0.08*t));
% MODELO LINEAL DEL PROCESO
y(t+2) = [y(t+1) y(t) u(t+1) u(t)]*[-a1 -a2 b1 b2]';
Y(t+2) = y(t+2) + g(t+2); % salida actual
% ESTIMACION DE PARAMETROS (METODO MCRM)
psi = [Y(t+1) Y(t) U(t+1) U(t) 1]';
rho = max(1,norm(psi));
psin = psi/rho;
Nn = chol(Pi'); % Nn*Nn = Pi => Nn*N = Pi
S = inv(diag(Nn*ones(NN,1),0));
Ps = S*Pi*S;
psins = inv(S)*psin;
rt = 1 + psins'*Ps*psins;
lamb=1 - (rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2;
e = Y(t+2)/rho - psin'*thi;
Pgina 20
j = psins'*Ps*psins + lamb;
th = thi + e*inv(S)*Ps*psins/j;
Hns = Ps*psins/j;
Ps = (Ps - Hns*psins'*Ps)/lamb;
tt = abs(max(eig(Ps))/min(eig(Ps)) );
cmax = 100; cmin = 15;
if tt <= cmin,
Pi = Ps; thi = th;
elseif tt >= cmax,
Nnew = chol(Ps'); % Nnew*Nnew = Ps
Snew = inv(diag(Nnew*ones(NN,1),0));
Psnew = Snew*Ps*Snew;
Pi = Psnew; thi = th;
end
% RECUPERACION DE LA ECUACION CANONICA CONTROLABLE
ae1=-th(1); ae2=-th(2); be1=th(3); be2=th(4); Ce=th(NN);
ae11 = 0; ae12 =1; ae21 = -ae2; ae22 = -ae1;
GE = [ae11 ae12;ae21 ae22];
be11 = 0; be21 = 1; HE = [be11;be21];
ce11 =be2; ce12 = be1; CE = [ce11 ce12]; DE = [0];
% CALCULO DE LA GANANCIA F DEL ESTIMADOR DE KALMAN
F = dlqe(GE,HE,CE,Sigma,Xi);
xmas = xmenos + F*(y(t+2) - CE*xmenos); % OBSERVACION
z = z -CE*xmas; % ACCION INTEGRAL
% CALCULO DE LA GANANCIA Ka DEL CONTROLADOR
Ga = [GE zeros(nn,r);-CE eye(r,r)];
Ha = [HE;zeros(r,r)];
Ca = [CE zeros(r,r)];
Ka = dlqr(Ga,Ha,Qa,R);
% CALCULO DE LA LEY DE CONTROL RESIDUAL
u(t+2) = - Ka*[xmas;z];
% ACTUALIZANDO ESTADOS
xmenos = GE*xmas + HE*u(t+2);
% CALCULO DE Uo (VALOR D.C. DE U)
% AE(z^(-1)) = 1 + ae1*z^(-1) + ae2*z^(-1);
% BE(z^(-1)) = be1*z^(-1) + be2*z^(-1);
% AE(z^(-1))*Y(k) = BE(z^(-1))*U(k) + Ce; Ce = th(N), N=5
% En estado estacionario: z=1, Y(k) = Yo(k) (Referencia)
% entonces: U(z=1) = inv(B(z=1)*[A(z=1)*Ref - ce]
AE = 1 + ae1 + ae2; BE = be1 + be2;
Uin = inv(BE)*(AE*g(t+2) - Ce);
% CALCULO DE LA SE~NAL DE CONTROL U(t)
U(t+2) = u(t+2) + Uin;
% LIMITANDO LA SE~NAL U(t)
if(U(t+2) > 3)
U(t+2) = 3;
elseif(U(t+2) <-3)
U(t+2) = -3;
end
end % FIN DEL LAZO DE CONTROL **********************
% GRAFICOS
ejex = linspace(0,MM*T,MM);
subplot(2,1,1)
plot(ejex,g(3:MM+2),ejex,Y(3:MM+2)), grid
ylabel('Nivel en metros')
xlabel('Tiempo en segundos')
subplot(2,1,2)
Pgina 21
plot(ejex,U(3:MM+2)), grid
xlabel('Tiempo en segundos')
ylabel('Flujo de control (m/s)')
print -deps -f p9adap1
Problema 5.6
% p11adap1.m SOLUCION DEL PROBLEMA 5.6
clear all
% PARAMETROS GENERALES
nn = 3; r=1; % nn: ORDEN DEL PROCESO; r: NUMERO DE SALIDAS
NN = 7; % ORDEN DEL VECTOR ESATIMADO DE PARAMETROS
% PARAMETROS DEL PROCESO:
J = 0.01; % MOMENTO DE INERCIA DEL MOTORM (kgm2/s2)
Ke =0.01; Kt = 0.01; % CONSTANTE ELECTROMOTRIZ (Nm/A)
R = 12; % RESISTENCIA (Ohmios)
C = 0.5; % CONDENSADOR (uF)
L = 0.5; % INDUCTANCIA DE LA ARMADURA (H)
Kw = 1.8; % CONSTANTE TORSIONAL (Nm/rad)
% MODELO LINEAL DEL PROCESO EN TIEMPO CONTINUO
Ac = [-1/(R*C) -1/C 0;...
Kw/(L*Kw + Kt*Ke) 0 -Ke*Kw/(L*Kw + Kt*Ke);0 Kt/J 0];
Bc = [1/(R*C);0;0];
Cc = [0 0 1]; Dc = [0];
T = 0.2; % PERIODO DE MUESTREO
% MODELO LINEAL DISCRETO DEL PROCESO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,'zoh');
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3); a3=den(4);
b1 = num(2); b2 = num(3); b3=num(4);
% PARAMETROS PARA OPTIMIZAR GANANCIA DEL FILTRO DE KALMAN
Xi = 0.001; Sigma = 10;
% PARAMETROS DE OPTIMIZACION DEL CONTROLADOR Ke
R = 0.1*eye(r,r); Qa = 0.001*eye(r+nn,r+nn);
% Gcc,Hcc, Ccc, Dcc: REPRESENTACION CANONICA CONTROLABLE
Pgina 22
Pgina 23
Pgina 24
Problema 5.7
% p5adap1.m SOLUCION DEL PROBLEMA 5.7
clear all
% PARAMETROS GENERALES
nn = 4; r=1; % nn: ORDEN DEL PROCES; r: NUMERO DE SALIDAS
NN = 9; % ORDEN DEL VECTOR ESATIMADO DE PARAMETROS
% cmax = 100; cmin = 15; % PARA EL ESTIMADOR DE PARAMETROS
% PARAMETROS PARA OPTIMIZAR GANANCIA DEL FILTRO DE KALMAN
Xi = 1; Sigma = 0.001;
% PARAMETROS DE OPTIMIZACION DEL CONTROLADOR Ke
R = 1;
Qa = 1*[1 0 0 0 0;0 1 0 0 0;0 0 1 0 0;...
0 0 0 1 0;0 0 0 0 1];
% PARAMETROS DEL PROCESO
M=0.11; % masa de la bola(kg)
R=0.015; % radio de la bola(m)
d=0.03; % distancia de la leva al engranaje(m)
g=9.8 ; % aceleracion de la gravedad (m/s2)
L=1.0; % longitud de la barra(m)
J=9.99e-6; % inercia de la barra(kgm2)T=0.7,Sigma=0.001
% MODELO LINEAL DEL PROCESO EN TIEMPO CONTINUO
Ac = [0 1 0 0;0 0 M*g*d/(L*(J/R^2+M)) 0;0 0 0 1;0 0 0 0];
Bc = [0;0;0;1];
Cc = [1 0 0 0]; Dc = [0];
T = 0.7; % PERIODO DE MUESTREO T=0.12
% MODELO LINEAL DISCRETO
[G,H,C,D]=c2dm(Ac,Bc,Cc,Dc,T,'zoh');
[num,den]=ss2tf(G,H,C,D);
a1 = den(2); a2 = den(3); a3=den(4); a4=den(5);
b1 = num(2); b2 = num(3); b3=num(4); b4=num(5);
% CONDICIONES INICIALES
Ref = 1; % MAGNITUD DE LA SE~NAL DE REFERENCIA: Yo = Ref
Ce = (1 + a1 + a2 + a3 +a4)*Ref; % Uo = 0 (ARBITRARIO)
Pgina 25
Pgina 26
Ha = [HE;zeros(r,r)];
Ca = [CE zeros(r,r)];
Ka = dlqr(Ga,Ha,Qa,R);
% CALCULO DE LA LEY DE CONTROL RESIDUAL
u(t+4) = - Ka*[xmas;z]; % ec. (27)
% ACTUALIZANDO ESTADOS
xmenos = GE*xmas + HE*u(t+4); % ec. (15)
AE = 1 + ae1 + ae2 + ae3 + ae4; BE = be1 + be2 + be3 + be4;
Uin = inv(BE)*(AE*Yo(t+4) - Ce);
% CALCULO DE LA SEAL DE CONTROL U(t)
U(t+4) = u(t+4) + Uin;
%end
end % FIN DEL LAZO DE CONTROL *************************
% GRAFICOS
ejex = linspace(0,MM*T,MM);
subplot(2,1,1)
plot(ejex,Yo(3:MM+2),ejex,Y(3:MM+2)), grid
ylabel('Posicion (m)')
subplot(2,1,2)
plot(ejex,U(3:MM+2)), grid
xlabel('Tiempo en seg')
ylabel('Voltaje de control')
print -deps -f p5adap1
Pgina 27
Pgina 28