Está en la página 1de 28

Captulo 5

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

Sistemas de Control Avanzado

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

Sistemas de Control Avanzado

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;

Sistemas de Control Avanzado

Pgina 3

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 (ARBITRARIAS) Y OTROS PARAMETROS
alfa=1000; N = 5; Pi = alfa*eye(N); % MATRIZ P INICIAL
theta_p = [-a1 -a2 b1 b2]'; % PARAMETROS DEL PROCESO
thetai = [-a1/3 -a2/2 3*b1 2*b2 0]'; % PARAMETROS INICIALES
lambda = 0.99; % FACTOR DE MEMORIA
Y(1) = 0; Y(2) = 0; U(1) = 0; U(2) = 0;
x1 = 0; x2 = 0;
% PROCEDIMIENTO DE IDENTIFICACION
Mm = 1000;
for r = 1:Mm
k = r + 2;
U(k) = 0.4;
% MODELO NO LINEAL DE SEGUNDO ORDEN DISCRETIZADO DIRECTAMENTE
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(k) );
Y(k) = x1;
% PROCEDIMIENTO DE IDENTIFICACION
psi_p = [Y(k-1) Y(k-2) U(k-1) U(k-2)]';
psi = [Y(k-1) Y(k-2) U(k-1) U(k-2) 1]';
nor = max(1,norm(psi));
psin = psi/nor;
Q = chol(Pi');
S = inv(diag(Q*ones(N,1),0));
Ps = S*Pi*S;
psins = inv(S)*psin;
rt = 1 + psins'*Ps*psins;
LF = 1 - (rt-sqrt(rt^2-4*norm(Ps*psins)^2/trace(Ps)))/2;
e = Y(k)/nor - thetai'*psin;
div = psins'*Ps*psins + LF;
theta = thetai + e*inv(S)*Ps*psins/div;
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
Hns = Ps*psins/div;
Ps = Ps/LF - Hns*psins'*Ps/LF;
tt = abs(max(eig(Ps))/min(eig(Ps)) );
cmax = 100; cmin = 15;
if tt <= cmin,
thetai = theta; Pi = Ps;
elseif tt >= cmax,
Qnew = chol(Ps');
Snew = inv(diag(Qnew*ones(N,1),0));

Sistemas de Control Avanzado

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

Sistemas de Control Avanzado

Pgina 5

5.6.7. Simulacion del Sistema de Control Adaptivo


% disadap.m SIMULACION DEL SISTEMA DE CONTROL DE POSICION
% ADAPTIVO CON AUTOSINTONIZACION
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; Ra = 7.38; m = 0.06377;
Kact = 14.9; cc = 0.25; Mo = 0.02; % 0.00, 0.01, 0.045;
K = 31.071e-3; n = 19.741; L = 4.64e-3;
Lo = 0.776;

Sistemas de Control Avanzado

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;

Sistemas de Control Avanzado

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;

Sistemas de Control Avanzado

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

5.7. Problemas Resueltos


Problema 5.1
% p3adap1.m SOLUCION DEL PROBLEMA 5.1
clear all
% PARAMETROS DEL PROCESO
m1 = 2500; k1 = 80000; b1 = 350;
m2 = 320; k2 = 500000; b2 = 15020;
a23 = (b1/m1)*(b1/m1+b1/m2+b2/m2)-k1/m1;
a33 = -(b1/m1+b1/m2+b2/m2);
a43 = -(k1/m1+k1/m2+k2/m2);
% MODELO LINEAL
A = [0 1 0 0
-b1*b2/(m1*m2) 0 a23 -b1/m1
b2/m2 0 a33 1
k2/m2 0 a43 0];
B = [0 0;1/m1 b1*b2/(m1*m2);0 -b2/m2;(1/m1+1/m2) -k2/m2];
C = [0 0 1 0]; D = [0 0];

Sistemas de Control Avanzado

Pgina 9

% CONVERSION AL ESPACIO DISCRETO


T=0.5; % TIEMPO DE MUESTREO
[G,H,C,D] = c2dm(A,B,C,D,T,'zoh'); % ESPACIO DE ESTADO
% FT CUANDO ACTUA LA SE~NAL CONTROL u Y EL DISTURBIO w ES NULO
[num,den]=ss2tf(G,H,C,D,1);
a1 = den(2); a2 = den(3); a3 = den(4); a4 = den(5);
b1 = num(2); b2 = num(3); b3 = num(4); b4 = num(5);
% F.T. cuando actua disturbio w y control u es nulo
[numd,dend]=ss2tf(G,H,C,D,2); % dend = den
j1=numd(2); j2=numd(3); j3=numd(4); j4=numd(5);
% F.T. del proceso: y = (num/den)*u + (numd/den)*w
% PARAMETROS PARA OPTIMIZAR LA GANANCIA F DEL FILTRO DE KALMAN
Xi = 1; Sigma = 1;
% 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];
% CONDICIONES INICIALES
Ref = 1; % MAGNITUD DE LA SE~NAL DE REFERENCIA
nn = 4; r=1; % nn: ORDEN DEL PROCESO; r: NUMERO DE SALIDAS
NN=13; % NUMERO DE PARAMETROS A ESTIMAR
Ce = (1 + a1 + a2+ a3+a4)*Ref;
thi =[-a1 -a2 -a3 -a4 b1 b2 b3 b4 j1 j2 j3 j4 Ce]';
alfa=1000; Pi = alfa*eye(NN); % MATRIZ P INICIAL
lamb=0.98; % FACTOR DE MEMORIA
Y(1) = 0; Y(2) = 0; Y(3) = 0; Y(4)=0; Y(5) =0; % SALIDA
U(1)= 0; U(2) = 0; U(3) = 0; U(4)=0; U(5)=0; % CONTROL
w(1)= 0; w(2) = 0; w(3) = 0; w(4)=0; w(5)=0;
xmenos = zeros(nn,1); % VECTOR DE OBSERVACION INICIAL
z=0; % ACCION INTEGRAL INICIAL
MM = 200;
% LAZO DEL SISTEMA DE CONTROL ADAPTIVO ********************
for t=1:MM;
t1=t+1;
% SE~NAL DEL DISTURBIO
w(t1+4) = 0.01;%*sign(sin(0.03*t1));
% SE~NAL DE REFERENCIA
W(t1+4) = 0;
% MODELO LINEAL DEL PROCESO CON DISTURBIO
Y(t1+4)=[Y(t1+3) Y(t1+2) Y(t1+1) Y(t1) ...
U(t1+3) U(t1+2) U(t1+1) U(t1) ...
w(t1+3) w(t1+2) w(t1+1) w(t1)]*...
[-a1 -a2 -a3 -a4 b1 b2 b3 b4 j1 j2 j3 j4]';
y(t1+4) = Y(t1+4) - W(t1+4); % salida residual
% ESTIMACION DE PARAMETROS (METODO MCRM)
psi=[Y(t1+3) Y(t1+2) Y(t1+1) Y(t1) U(t1+3) ...
U(t1+2) U(t1+1) U(t1) ...
w(t1+3) w(t1+2) w(t1+1) w(t1) 1]';
rho = max(1,norm(psi));
psin = psi/rho;
Nn = chol(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(t1+4)/rho - psin'*thi;
j = psins'*Ps*psins + lamb;

Sistemas de Control Avanzado

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

Sistemas de Control Avanzado

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;

Sistemas de Control Avanzado

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 % *********************************

Sistemas de Control Avanzado

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];

Sistemas de Control Avanzado

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;

Sistemas de Control Avanzado

Pgina 15

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);
ae4=-th(4); ae5=-th(5); ae6=-th(6);
be1=th(7); be2=th(8); be3=th(9);
be4=th(10); be5=th(11); be6=th(12); Ce=th(13);
ae11=0; ae12=1; ae13=0; ae14=0; ae15=0; ae16=0;
ae21=0; ae22=0; ae23=1; ae24=0; ae25=0; ae26=0;
ae31=0; ae32=0; ae33=0; ae34=1; ae35=0; ae36=0;
ae41=0; ae42=0; ae43=0; ae44=0; ae45=1; ae46=0;
ae51=0; ae52=0; ae53=0; ae54=0; ae55=0; ae56=1;
ae61=-ae6; ae62=-ae5; ae63=-ae4;
ae64=-ae3; ae65=-ae2; ae66=-ae1;
GE = [ae11 ae12 ae13 ae14 ae15 ae16
ae21 ae22 ae23 ae24 ae25 ae26
ae31 ae32 ae33 ae34 ae35 ae36
ae41 ae42 ae43 ae44 ae45 ae46
ae51 ae52 ae53 ae54 ae55 ae56
ae61 ae62 ae63 ae64 ae65 ae66];
be11=0; be21=0; be31=0; be41=0; be51=0; be61=1;
HE=[be11;be21;be31;be41;be51;be61];
ce11 =be6; ce12=be5; ce13=be4;
ce14=be3; ce15=be2; ce16=be1;
CE = [ce11 ce12 ce13 ce14 ce15 ce16]; DE = [0];
% CALCULO DE LA GANANCIA F DEL ESTIMADOR DE KALMAN
F = dlqe(GE,HE,CE,Sigma,Xi);
xmas = xmenos + F*(y(t+6) - 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+6) = - Ka*[xmas;z]; % ec. (27)
% ACTUALIZANDO ESTADOS
xmenos = GE*xmas + HE*u(t+6); % ec. (15)
AE = 1 + ae1 + ae2 + ae3 + ae4 + ae5 + ae6;
BE = be1 + be2 + be3 + be4 + be5 + be6;
Uin = inv(BE)*(AE*Yo(t+6) - Ce);
% CALCULO DE LA SE~NAL DE CONTROL U(k)
U(t+6) = u(t+6) + Uin;
end % FIN DEL LAZO DE CONTROL **********************
% GRAFICOS
ejex = linspace(0,MM*T,MM);
subplot(2,1,1)
plot(ejex,Yo(7:MM+6),ejex,Y(7:MM+6)), grid
ylabel('Y1: Velocidad (m/s)')
xlabel('Tiempo en segundos')
subplot(2,1,2)
plot(ejex,U(7:MM+6)), grid
xlabel('Tiempo en segundos')

Sistemas de Control Avanzado

Pgina 16

ylabel('Voltaje de control u')


print -deps -f p7adap1a

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

Sistemas de Control Avanzado

Pgina 17

z=0; % ACCION INTEGRAL INICIAL


% INCIO DEL LAZO DE CONTROL **********************************
MM = 1000;
for t = 1:MM
% SE~NAL DE REFERENCIA
g(t+4)=6 + 4*sign(sin(0.01*t));
% MODELO LINEAL DEL PROCESO
Y(t+4)=[Y(t+3) Y(t+2) Y(t+1) Y(t) ...
U(t+3) U(t+2) U(t+1) U(t)]*[-a1 -a2 -a3 -a4 b1 b2 b3 b4]';
y(t+4) = Y(t+4) - g(t+4); % salida residual (desviacion)
% ESTIMACION DE PARAMETROS (METODO MCRM)%
psi = [Y(t+3) Y(t+2) Y(t+1) Y(t) ...
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+4)/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); ae4 =-th(4);
be1 = th(5); be2 = th(6); be3= th(7); be4 = th(8); Ce=th(9);
ae11 = 0; ae12 = 1; ae13 = 0; ae14 = 0;
ae21 = 0; ae22 = 0; ae23 = 1; ae24 = 0;
ae31 = 0; ae32 = 0; ae33 = 0; ae34 = 1;
ae41 =-ae4; ae42 = -ae3; ae43 = -ae2; ae44 = -ae1;
GE = [ae11 ae12 ae13 ae14;ae21 ae22 ae23 ae24;...
ae31 ae32 ae33 ae34;ae41 ae42 ae43 ae44];
be11=0; be21=0; be31=0; be41=1; HE=[be11;be21;be31;be41];
ce11=be4; ce12=be3; ce13=be2; ce14=be1;
CE=[ce11 ce12 ce13 ce14]; DE=[0];
% CALCULO DE LA GANANCIA F DEL ESTIMADOR DE KALMAN
F = dlqe(GE,HE,CE,Sigma,Xi);
xmas = xmenos + F*(y(t+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)];
Ha = [HE;zeros(r,r)];
Ca = [CE zeros(r,r)];
Ka = dlqr(Ga,Ha,Qa,R);

Sistemas de Control Avanzado

Pgina 18

% CALCULO DE LA LEY DE CONTROL RESIDUAL


u(t+4) = - Ka*[xmas;z];
% ACTUALIZANDO ESTADOS
xmenos = GE*xmas + HE*u(t+4);
AE= 1 + ae1 + ae2 + ae3 + ae4; BE= be1 + be2 + be3 + be4;
Uin = inv(BE)*(AE*g(t+4) - Ce);
% CALCULO DE LA SE~NAL DE CONTROL U(t)
U(t+4) = u(t+4) + Uin;
% LIMITANDO LA SE~NAL U(t)
if(U(t+4) > 200)
U(t+4) = 200;
elseif(U(t+4) <-200)
U(t+4) = -200;
else
U(t+4) = U(t+4);
end
end % FIN DEL LAZO DE CONTROL **********************
% GRAFICOS
ejex = linspace(0,MM*T,MM);
subplot(2,1,1)
plot(ejex,g(4:MM+3),ejex,Y(4:MM+3)), grid
ylabel('Posicion')
xlabel('Tiempo en segundos')
subplot(2,1,2), grid
plot(ejex,U(3:MM+2)), grid
xlabel('Tiempo en segundos')
ylabel('Voltaje de control')
print -deps -f p8adap1

Problema 5.5
% p9adap1.m SOLUCION DEL PROBLEMA 5.5
clear all

Sistemas de Control Avanzado

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;

Sistemas de Control Avanzado

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)

Sistemas de Control Avanzado

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

Sistemas de Control Avanzado

Pgina 22

a11 =0; a12 =1; a13 =0; a21 =0; a22 =0 ;


a23 =1; a31 = -a3; a32 = -a2; a33 =-a3;
b11 = 0; b21 = 0; b31 = 1;
c11 =b3; c12 = b2; c13 = b1;
Gcc = [a11 a12 a13;a21 a22 a23;a31 a32 a33];
Hcc = [b11;b21;b31];
Ccc =[c11 c12 c13]; Dcc = [0];
% CONDICIONES INICIALES
Ref = 1; % MAGNITUD DE LA SE~NAL DE REFERENCIA: Yo = Ref
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;
U(1 )= 0; U(2) = 0; U(3) = 0; u(1)=0; u(2)=0; u(3)=0;
xmenos = zeros(nn,1); % VECTOR DE OBSERVACION INICIAL
z=0; % ACCION INTEGRAL INICIAL
% INICIO DEL LAZO DE CONTROL **********************************
MM = 400;
for t = 1:MM
% SE~NAL DE REFERENCIA
Yo(t+3)= 0.4 + 3*(sin(0.02*t))+0.01*t;
% MODELO LINEAL DEL 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) - Yo(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);
ae11 = 0; ae12 =1; ae13 = 0; ae21 = 0; ae22 = 0;
ae23 = 1; ae31 =-ae3; ae32 = -ae2; ae33 = -ae1;
GE = [ae11 ae12 ae13;ae21 ae22 ae23;ae31 ae32 ae33];

Sistemas de Control Avanzado

Pgina 23

be11 = 0; be21 = 0; be31 = 1; HE = [be11;be21;be31];


ce11 =be3; ce12 = be2; ce13 = be1;
CE = [ce11 ce12 ce13]; DE = [0];
% CALCULO DE LA GANANCIA F DEL ESTIMADOR DE KALMAN
F = dlqe(GE,HE,CE,Sigma,Xi);
xmas = xmenos + F*(y(t+3) - CE*xmenos);
z = z -CE*xmas;
% 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];
% ACTUALIZANDO ESTADOS
xmenos = GE*xmas + HE*u(t+3);
AE = 1 + ae1 + ae2 + ae3; BE = be1 + be2 + be3;
Uin = inv(BE)*(AE*Yo(t+3) - Ce);
% CALCULO DE LA SE~NAL DE CONTROL U(t)
U(t+3) = u(t+3) + Uin;
% LIMITANDO LA SE~NAL U(t)
if(U(t+3) > 100)
U(t+3) = 100;
elseif(U(t+3) <-100)
U(t+3) = -100;
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('Velocidad (rad/s)')
subplot(2,1,2)
plot(ejex,U(3:MM+2)); grid
xlabel('Tiempo en seg')
ylabel('Voltaje de control')
print -deps -f p11adap1

Sistemas de Control Avanzado

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)

Sistemas de Control Avanzado

Pgina 25

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
z=0; % ACCION INTEGRAL INICIAL
% INICIO DEL LAZO DE CONTROL **********************************
MM = 300;
for t = 1:MM
% SE~NAL DE REFERENCIA
Yo(t+4)= 0.5;%sign(sin(0.005*t));
% MODELO LINEAL DEL PROCESO
Y(t+4) = [Y(t+3) Y(t+2) Y(t+1) Y(t)...
U(t+3) U(t+2) U(t+1) U(t)]*...
[-a1 -a2 -a3 -a4 b1 b2 b3 b4]';
y(t+4) = Y(t+4) - Yo(t+4); % salida residual
% ESTIMACION DE PARAMETROS (METODO MCRM)
psi = [Y(t+3) Y(t+2) Y(t+1) Y(t)...
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+4)/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); ae4 = -th(4);
be1 = th(5); be2 = th(6); be3 = th(7); be4 = th(8); Ce = th(9);
dene = [1 ae1 ae2 ae3 ae4];
nume = [0 be1 be2 be3 be4];
[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+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)];

Sistemas de Control Avanzado

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

Sistemas de Control Avanzado

Pgina 27

Sistemas de Control Avanzado

Pgina 28

También podría gustarte