Simulaciones de la estrategia basica de control predictivo con scilab y(k)=y(k-1)-0.25*y(k-2)+0.333*u(k-1)+0.1666*u(k-2)
El proceso normal
El proceso con control predictivo:
El proceso con control predictivo:
El proceso con control predictivo:
Comparacion para los distintod valores de la salida deseada del control predictivo
Comparacion para los distintod valores de la salidas obtenidas del control predictivo
Programa en Scilab de la simulacion de la estrategia de control predictivo
clear();
alfa1a=[0.95,0];
beta1a=[0.05,0];
a=[1,-0.25];
b=[0.333,0.1666];
u=[0,zeros(1,29),ones(1,40),zeros(1,131)] //entrada escalon en k=31 y vuelve a 0 en k=71
y=zeros(1,201);
ysp=[zeros(1,130),ones(1,40),zeros(1,31)] //Comienzo control predictivo consigna valor 0 en k=101, consigna a 1 en k=131 y vuelve a 0 en k=171
y(1)=0;
u(1)=0;
y(2)=0;
for k=3:201
y(k)=a(1)*y(k-1)+a(2)*y(k-2)+b(1)*u(k-1)+b(2)*u(k-2); //Salida del proceso
end
y
scf(1);
clf(1);
subplot(2,1,1)
plot(y);
xtitle('y(k)');
subplot(2,1,2)
plot(u);
xtitle('u(k)');
yda=zeros(1,201);
y2a=y;
u2a=u;
yda(100)=y(100);
yda(99)=y(99);
for kt=101:201
yda(kt+1)=alfa1a(1)*yda(kt)+alfa1a(2)*yda(kt-1)+beta1a(1)*ysp(kt)+beta1a(2)*ysp(kt-1); //Trayectoria deseada
u2a(1,kt)=(yda(kt+1)-a(1)*y2a(kt)-a(2)*y2a(kt-1)-b(2)*u2a(1,kt-1))/b(1)// Control adaptativo
y2a(kt)=a(1)*y2a(kt-1)+a(2)*y2a(kt-2)+b(1)*u2a(kt-1)+b(2)*u2a(kt-2)
end
scf(2);
clf(2);
subplot(4,1,1)
plot(y2a);
xtitle('y(k) alfa1=0.95 Beta1=0.05');
subplot(4,1,2)
plot(yda(1,:));
xtitle('yd(k+1/k) alfa1=0.95 Beta1=0.05');
subplot(4,1,3)
plot(u2a);
xtitle('u1(k) alfa1=0.95 Beta1=0.05');
subplot(4,1,4)
plot(ysp);
xtitle('ysp(k)');
alfa1b=[0.9,0];
beta1b=[0.1,0];
a=[1,-0.25];
b=[0.333,0.1666];
u=[0,zeros(1,29),ones(1,40),zeros(1,131)] //entrada escalon en k=31 y vuelve a 0 en k=71
y=zeros(1,201);
ysp=[zeros(1,130),ones(1,40),zeros(1,31)] //Comienzo control predictivo consigna valor 0 en k=101, consigna a 1 en k=131 y vuelve a 0 en k=171
y(1)=0;
u(1)=0;
y(2)=0;
for k=3:201
y(k)=a(1)*y(k-1)+a(2)*y(k-2)+b(1)*u(k-1)+b(2)*u(k-2); //Salida del proceso
end
y
scf(1);
clf(1);
subplot(2,1,1)
plot(y);
xtitle('y(k)');
subplot(2,1,2)
plot(u);
xtitle('u(k)');
ydb=zeros(1,201);
y2b=y;
u2b=u;
ydb(100)=y(100);
ydb(99)=y(99);
for kt=101:201
ydb(kt+1)=alfa1b(1)*ydb(kt)+alfa1b(2)*ydb(kt-1)+beta1b(1)*ysp(kt)+beta1b(2)*ysp(kt-1); //Trayectoria deseada
u2b(1,kt)=(ydb(kt+1)-a(1)*y2b(kt)-a(2)*y2b(kt-1)-b(2)*u2b(1,kt-1))/b(1)// Control adaptativo
y2b(kt)=a(1)*y2b(kt-1)+a(2)*y2b(kt-2)+b(1)*u2b(kt-1)+b(2)*u2b(kt-2)
end
scf(3);
clf(3);
subplot(4,1,1)
plot(y2b);
xtitle('y(k) alfa1=0.9 Beta1=0.1');
subplot(4,1,2)
plot(ydb(1,:));
xtitle('yd(k+1/k) alfa1=0.9 Beta1=0.1');
subplot(4,1,3)
plot(u2b);
xtitle('u1(k) alfa1=0.9 Beta1=0.1');
subplot(4,1,4)
plot(ysp);
xtitle('ysp(k)');
alfa1c=[0.8,0];
beta1c=[0.1,0];
a=[1,-0.25];
b=[0.333,0.1666];
u=[0,zeros(1,29),ones(1,40),zeros(1,131)] //entrada escalon en k=31 y vuelve a 0 en k=71
y=zeros(1,201);
ysp=[zeros(1,130),ones(1,40),zeros(1,31)] //Comienzo control predictivo consigna valor 0 en k=101, consigna a 1 en k=131 y vuelve a 0 en k=171
y(1)=0;
u(1)=0;
y(2)=0;
for k=3:201
y(k)=a(1)*y(k-1)+a(2)*y(k-2)+b(1)*u(k-1)+b(2)*u(k-2); //Salida del proceso
end
y
scf(1);
clf(1);
subplot(2,1,1)
plot(y);
xtitle('y(k)=y(k-1)-0.25*y(k-2)+0.333*u(k-1)+0.1666*u(k-2)');
subplot(2,1,2)
plot(u);
xtitle('u(k)');
ydc=zeros(1,201);
y2c=y;
u2c=u;
ydc(100)=y(100);
ydc(99)=y(99);
for kt=101:201
ydc(kt+1)=alfa1c(1)*ydc(kt)+alfa1c(2)*ydc(kt-1)+beta1c(1)*ysp(kt)+beta1c(2)*ysp(kt-1); //Trayectoria deseada
u2c(1,kt)=(ydc(kt+1)-a(1)*y2c(kt)-a(2)*y2c(kt-1)-b(2)*u2c(1,kt-1))/b(1)// Control adaptativo
y2c(kt)=a(1)*y2c(kt-1)+a(2)*y2c(kt-2)+b(1)*u2c(kt-1)+b(2)*u2c(kt-2)
end
scf(4);
clf(4);
subplot(4,1,1)
plot(y2c);
xtitle('y(k) alfa1=0.8 Beta1=0.1');
subplot(4,1,2)
plot(ydc(1,:));
xtitle('yd(k+1/k) alfa1=0.8 Beta1=0.1');
subplot(4,1,3)
plot(u2c);
xtitle('u(k) alfa1=0.8 Beta1=0.1');
subplot(4,1,4)
plot(ysp);
xtitle('ysp(k)');
scf(5);
clf(5);
x=1:202;
plot(x,yda,'ro-');
plot(x,ydb,'bs:');
plot(x,ydc,'g');
legend(["yd alfa1=0.95 beta=0.05";"yd alfa1=0.9 beta=0.1";"yd alfa1=0.8 beta=0.1"],opt=3);
scf(6);
clf(6);
plot(x,ydb),'b';
scf(6);
clf(6);
x=1:201;
plot(x,y2a,'ro-');
plot(x,y2b,'bs:');
plot(x,y2c,'g');
legend(["y(k) alfa1=0.95 beta=0.05";"y(k) alfa1=0.9 beta=0.1";"y(k) alfa1=0.8 beta=0.1"],opt=2);