Estrategia basica de control predictivo con Scilab y(k)=y(k-1)-0.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2)

Lugar de las raices de la transformada z Gd(z)=(z+1)/((z-0.2)*(z-0.6)
 Lugar de las raices de la Transformada z Gd(z)=(z+1)/((z-0.2)*(z-0.6)

Salida del proceso  y(k)=y(k-1)-0.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2);  ante  un escalon


El proceso con control predictivo dado los polos y ceros de la transformada z Gd(z)=(z+1)/((z-0.2)*(z-0.6)
Proceso control predictivo


Programa en Scilab de la simulacion de la estrategia de control predictivo
clear();
z=%z;
num1=z+1; // Numerador transformada z funcion de tranferencia de la trayectoria deseada
den1=(z-0.2)*(z-0.6); // Denominador transformada z funcion de tranferencia de la trayectoria deseada
gd=syslin('d',num1/den1);
scf(3);
clf(3);
evans(gd); // Lugar de las raices de la Transformada z Gd(z)=(z+1)/((z-0.2)*(z-0.6)
xgrid;
v=[-4 2 -2 2];
mtlb_axis(v);
xgrid
xtitle('Lugar de las raices Transformada z Gd(z)=(z+1)/((z-0.2)*(z-0.6)')
cden=coeff(den1);
cnum=coeff(num1);
alfa1a=[-cden(2),-cden(1)];
beta1a=[cnum(2),cnum(1)];
a=[1,-0.21];
b=[0.105,0.105];
u=[0,ones(1,60)] //entrada escalon 
y=zeros(1,61);
ysp=[ones(1,61)] //Comienzo control predictivo consigna valor 1 en k=1 
y(1)=0;
u(1)=0;
y(2)=0;
for k=3:61
    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.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2); Salida ante un escalon');
subplot(2,1,2)
plot(u);
xtitle('u(k) siendo un escalon');
yda=zeros(1,61);
y2a=y;
u2a=u;
yda(2)=y(2);
yda(1)=y(1);
for kt=3:61
    yda(kt+1)=alfa1a(1)*y2a(kt)+alfa1a(2)*y2a(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) //Salida con control adaptativo
end
scf(2);
clf(2);
subplot(4,1,1)
plot(y2a);
xtitle('y(k)=y(k-1)-0.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2); Gd(z)=(z+1)/((z-0.2)*(z-0.6)');
subplot(4,1,2)
plot(yda(1,:));
xtitle('yd(k+1/k) Gd(z)=(z+1)/((z-0.2)*(z-0.6)');
subplot(4,1,3)
plot(u2a);
xtitle('u1(k) Gd(z)=(z+1)/((z-0.2)*(z-0.6)');
subplot(4,1,4)
plot(ysp);
xtitle('ysp(k)');

Lugar de las raices de la transformada z Gd(z)=(z+1)/((z-0.2)*(z-0.7)
 Lugar de las raices de la Transformada z Gd(z)=(z+1)/((z-0.2)*(z-0.7)
Salida del proceso  y(k)=y(k-1)-0.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2);  ante  un escalon


El proceso con control predictivo dado los polos y ceros de la transformada z Gd(z)=(z+1)/((z-0.2)*(z-0.7)
Proceso con control predictivo adaptativo y(k)=y(k-1)-0.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2); Gd(z)=(z+1)/((z-0.2)*(z-0.7)


Programa en Scilab de la simulacion de la estrategia de control predictivo
clear();
z=%z;
num1=z+1; // Numerador transformada z funcion de tranferencia de la trayectoria deseada
den1=(z-0.2)*(z-0.7); // Denominador transformada z funcion de tranferencia de la trayectoria deseada
gd=syslin('d',num1/den1);
scf(3);
clf(3);
evans(gd); // Lugar de las raices de la Transformada z Gd(z)=(z+1)/((z-0.2)*(z-0.7))
xgrid;
v=[-4 2 -2 2];
mtlb_axis(v);
xgrid
xtitle('Lugar de las raices Transformada z Gd(z)=(z+1)/((z-0.2)*(z-0.7)')
cden=coeff(den1);
cnum=coeff(num1);
alfa1a=[-cden(2),-cden(1)];
beta1a=[cnum(2),cnum(1)];
a=[1,-0.21];
b=[0.105,0.105];
u=[0,ones(1,60)] //entrada escalon 
y=zeros(1,61);
ysp=[ones(1,61)] //Comienzo control predictivo consigna valor 1 en k=1 
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.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2); Salida ante un escalon');
subplot(2,1,2)
plot(u);
xtitle('u(k) siendo un escalon');
yda=zeros(1,61);
y2a=y;
u2a=u;
yda(2)=y(2);
yda(1)=y(1);
for kt=3:61
    yda(kt+1)=alfa1a(1)*y2a(kt)+alfa1a(2)*y2a(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) //Salida con control adaptativo
end
scf(2);
clf(2);
subplot(4,1,1)
plot(y2a);
xtitle('y(k)=y(k-1)-0.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2); Gd(z)=(z+1)/((z-0.2)*(z-0.7)');
subplot(4,1,2)
plot(yda(1,:));
xtitle('yd(k+1/k) Gd(z)=(z+1)/((z-0.2)*(z-0.7)');
subplot(4,1,3)
plot(u2a);
xtitle('u1(k) Gd(z)=(z+1)/((z-0.2)*(z-0.7)');
subplot(4,1,4)
plot(ysp);
xtitle('ysp(k)');

Lugar de las raices de la transformada z Gd(z)=(z+1)/((z-0.3)*(z-0.7)
 Lugar de las raices de la Transformada z Gd(z)=(z+1)/((z-0.3)*(z-0.7)
Salida del proceso  y(k)=y(k-1)-0.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2);  ante  un escalon


El proceso con control predictivo dado los polos y ceros de la transformada z Gd(z)=(z+1)/((z-0.3)*(z-0.7)
Proceso con control predictivo adaptativo y(k)=y(k-1)-0.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2); Gd(z)=(z+1)/((z-0.3)*(z-0.7)


Programa en Scilab de la simulacion de la estrategia de control predictivo
clear();
z=%z;
num1=z+1; // Numerador transformada z funcion de tranferencia de la trayectoria deseada
den1=(z-0.3)*(z-0.7); // Denominador transformada z funcion de tranferencia de la trayectoria deseada
gd=syslin('d',num1/den1);
scf(3);
clf(3);
evans(gd); // Lugar de las raices de la Transformada z Gd(z)=(z+1)/((z-0.3)*(z-0.7))
xgrid;
v=[-4 2 -2 2];
mtlb_axis(v);
xgrid
xtitle('Lugar de las raices Transformada z Gd(z)=(z+1)/((z-0.3)*(z-0.7)')
cden=coeff(den1);
cnum=coeff(num1);
alfa1a=[-cden(2),-cden(1)];
beta1a=[cnum(1),cnum(1)];
a=[1,-0.21];
b=[0.105,0.105];
u=[0,ones(1,60)] //entrada escalon 
y=zeros(1,61);
ysp=[ones(1,61)] //Comienzo control predictivo consigna valor 1 en k=1 
y(1)=0;
u(1)=0;
y(2)=0;
for k=3:61
    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.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2); Salida ante un escalon');
subplot(2,1,2)
plot(u);
xtitle('u(k) siendo un escalon');
yda=zeros(1,61);
y2a=y;
u2a=u;
yda(2)=y(2);
yda(1)=y(1);
for kt=3:61
    yda(kt+1)=alfa1a(1)*y2a(kt)+alfa1a(2)*y2a(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); //Salida con control adaptativo
end
scf(2);
clf(2);
subplot(4,1,1)
plot(y2a);
xtitle('y(k)=y(k-1)-0.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2); Gd(z)=(z+1)/((z-0.3)*(z-0.7)');
subplot(4,1,2)
plot(yda(1,:));
xtitle('yd(k+1/k) Gd(z)=(z+1)/((z-0.3)*(z-0.7)');
subplot(4,1,3)
plot(u2a);
xtitle('u1(k) Gd(z)=(z+1)/((z-0.3)*(z-0.7)');
subplot(4,1,4)
plot(ysp);
xtitle('ysp(k)');

Lugar de las raices de la transformada z Gd(z)=(z+1)/((z-0.4)*(z-0.7)
 Lugar de las raices de la Transformada z Gd(z)=(z+1)/((z-0.4)*(z-0.7)
Salida del proceso  y(k)=y(k-1)-0.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2);  ante  un escalon


El proceso con control predictivo dado los polos y ceros de la transformada z Gd(z)=(z+1)/((z-0.4)*(z-0.7)
Proceso con control predictivo adaptativo y(k)=y(k-1)-0.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2); Gd(z)=(z+1)/((z-0.4)*(z-0.7)


Programa en Scilab de la simulacion de la estrategia de control predictivo
clear();
z=%z;
num1=z+1; // Numerador transformada z funcion de tranferencia de la trayectoria deseada
den1=(z-0.4)*(z-0.7); // Denominador transformada z funcion de tranferencia de la trayectoria deseada
gd=syslin('d',num1/den1);
scf(3);
clf(3);
evans(gd); // Lugar de las raices de la Transformada z Gd(z)=(z+1)/((z-0.4)*(z-0.7))
xgrid;
v=[-4 2 -2 2];
mtlb_axis(v);
xgrid
xtitle('Lugar de las raices Transformada z Gd(z)=(z+1)/((z-0.4)*(z-0.7)')
cden=coeff(den1);
cnum=coeff(num1);
alfa1a=[-cden(2),-cden(1)];
beta1a=[cnum(1),cnum(1)];
a=[1,-0.21];
b=[0.105,0.105];
u=[0,ones(1,60)] //entrada escalon 
y=zeros(1,61);
ysp=[ones(1,61)] //Comienzo control predictivo consigna valor 1 en k=1 
y(1)=0;
u(1)=0;
y(2)=0;
for k=3:61
    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.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2); Salida ante un escalon');
subplot(2,1,2)
plot(u);
xtitle('u(k) siendo un escalon');
yda=zeros(1,61);
y2a=y;
u2a=u;
yda(2)=y(2);
yda(1)=y(1);
for kt=3:61
    yda(kt+1)=alfa1a(1)*y2a(kt)+alfa1a(2)*y2a(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); //Salida con control adaptativo
end
scf(2);
clf(2);
subplot(4,1,1)
plot(y2a);
xtitle('y(k)=y(k-1)-0.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2); Gd(z)=(z+1)/((z-0.4)*(z-0.7)');
subplot(4,1,2)
plot(yda(1,:));
xtitle('yd(k+1/k) Gd(z)=(z+1)/((z-0.4)*(z-0.7)');
subplot(4,1,3)
plot(u2a);
xtitle('u1(k) Gd(z)=(z+1)/((z-0.4)*(z-0.7)');
subplot(4,1,4)
plot(ysp);
xtitle('ysp(k)');

Lugar de las raices de la transformada z Gd(z)=(z+1)/((z-0.4)*(z-0.8)
 Lugar de las raices de la Transformada z Gd(z)=(z+1)/((z-0.4)*(z-0.8)
Salida del proceso  y(k)=y(k-1)-0.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2);  ante  un escalon


El proceso con control predictivo dado los polos y ceros de la transformada z Gd(z)=(z+1)/((z-0.4)*(z-0.8)
Proceso con control predictivo adaptativo y(k)=y(k-1)-0.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2); Gd(z)=(z+1)/((z-0.4)*(z-0.8)


Programa en Scilab de la simulacion de la estrategia de control predictivo
clear();
z=%z;
num1=z+1; // Numerador transformada z funcion de tranferencia de la trayectoria deseada
den1=(z-0.4)*(z-0.8); // Denominador transformada z funcion de tranferencia de la trayectoria deseada
gd=syslin('d',num1/den1);
scf(3);
clf(3);
evans(gd); // Lugar de las raices de la Transformada z Gd(z)=(z+1)/((z-0.4)*(z-0.8))
xgrid;
v=[-4 2 -2 2];
mtlb_axis(v);
xgrid
xtitle('Lugar de las raices Transformada z Gd(z)=(z+1)/((z-0.4)*(z-0.8)')
cden=coeff(den1);
cnum=coeff(num1);
alfa1a=[-cden(2),-cden(1)];
beta1a=[cnum(2),cnum(1)];
a=[1,-0.21];
b=[0.105,0.105];
u=[0,ones(1,60)] //entrada escalon 
y=zeros(1,61);
ysp=[ones(1,61)] //Comienzo control predictivo consigna valor 1 en k=1 
y(1)=0;
u(1)=0;
y(2)=0;
for k=3:61
    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.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2); Salida ante un escalon');
subplot(2,1,2)
plot(u);
xtitle('u(k) siendo un escalon');
yda=zeros(1,61);
y2a=y;
u2a=u;
yda(2)=y(2);
yda(1)=y(1);
for kt=3:61
    yda(kt+1)=alfa1a(1)*y2a(kt)+alfa1a(2)*y2a(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); //Salida con control adaptativo
end
scf(2);
clf(2);
subplot(4,1,1)
plot(y2a);
xtitle('y(k)=y(k-1)-0.21*y(k-2)+0.105*u(k-1)+0.105*u(k-2); Gd(z)=(z+1)/((z-0.4)*(z-0.8)');
subplot(4,1,2)
plot(yda(1,:));
xtitle('yd(k+1/k) Gd(z)=(z+1)/((z-0.4)*(z-0.8)');
subplot(4,1,3)
plot(u2a);
xtitle('u1(k) Gd(z)=(z+1)/((z-0.4)*(z-0.8)');
subplot(4,1,4)
plot(ysp);
xtitle('ysp(k)');

No hay comentarios: