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
![salida normal del proceso y(k)=y(k-1)-0.25*y(k-2)+0.333*u(k-1)+0.1666*u(k-2)](https://ingen.cajael.com/sites/default/files/e2_1a1a.gif)
El proceso con control predictivo:
El proceso con control predictivo:
![Estrategia Control predictivo adaptativo](https://ingen.cajael.com/sites/default/files/e2_1b.gif)
El proceso con control predictivo:
![Control predictivo adaptativo](https://ingen.cajael.com/sites/default/files/e2_1c.gif)
Comparacion para los distintod valores de la salida deseada del control predictivo
![Salida deseada del control predictivo](https://ingen.cajael.com/sites/default/files/e2_1.gif)
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);