1、模型算法控制MATLAB环境下模型算法控制实验1.考虑如下的双输入双输出纯时延对象,其传递函数矩阵为:解:MATLAB程序如下:%将传递函数模型转换为阶跃响应模型g11=poly2tfd(12.8,16.7 1,0,1);g12 = poly2tfd(6.6,10.9 1,0,7);g21 = poly2tfd(-18.9,21.0 1,0,3);g22 = poly2tfd(-19.4,14.4 1,0,3);delt=3;ny=2;tfinal=90;model = tfd2step(tfinal, delt, ny, g11, g12,g21,g22); %进行模型预测控制器设计 pla
2、nt=model; %预测时域长度为6 p=6;m=2; ywt=;uwt=1 1; %设置输入约束和参考轨迹等控制器参数 r=1 1; tend=30;%仿真时间为30 ulim=-0.1 -0.1 0.5 0.5 0.1 100;ylim=;y,u,ym=cmpc(plant,model,ywt,uwt,m,p,tend,r,ulim,ylim);plotall(y,u,delt)闭环系统的输出和控制量变化曲线如图所示:2.设系统的传递函数矩阵为:解:MATLAB程序如下:g11=poly2tfd(12.8,16.7 1,0,1);g12 = poly2tfd(6.6,10.9 1,0,7
3、);g21 = poly2tfd(-18.9,21.0 1,0,3);g22 = poly2tfd(-19.4,14.4 1,0,3);delt=3;ny=2;imod = tfd2mod(delt, ny, g11, g12,g21,g22);pmod=imod;p=6;m=2;ywt=;uwt=1 1;tend=30;r=0 1;ulim=-inf -0.15 inf inf 0.1 100;ylim=;y,u,ym=scmpc(pmod,imod,ywt,uwt,m,p,tend,r,ulim,ylim);plotall(y,u,delt)闭环系统的输出和控制量变化曲线如图所示:在添加对
4、输出变量的约束后,再利用以下程序对系统进行模型预测控制器的设计ulim=-inf -0.15 inf inf 0.1 100;ylim=0 0 inf inf;y,u,ym=scmpc(pmod,imod,ywt,uwt,m,p,tend,r,ulim,ylim);plotall(y,u,delt)得到闭环控制系统输出响应和控制量变化曲线如图:3.考虑有如下传递函数距阵的多变量系统的状态空间模型预测控制器设计问题 解:MATLAB程序如下:%在进行模型预测控制器设计之前,首先将系统模型转换为状态空间形式T=2;g11=poly2tfd(12.8,16.7 1,0,1);g12 = poly2t
5、fd(6.6,10.9 1,0,7);g21 = poly2tfd(-18.9,21.0 1,0,3);g22 = poly2tfd(-19.4,14.4 1,0,3);umod = tfd2mod(T,2, g11, g12,g21,g22);%定义扰动模型g13=poly2tfd(3.8,14.9 1,0,8)g23=poly2tfd(4.9,13.2 1,0,3)dmod=tfd2mod(T,2,g13,g23);%建立叠加了扰动的混合系统模型pmod=addumd(umod,dmod);%考虑精确建模的情况imod=pmod;ywt=;uwt=;%预测时域和控制时域均为5P=5;M=P
6、;Ks=smpccon(imod,ywt,uwt,M,P); tend=30; r=1 0; y,u=smpcsim(pmod,imod,Ks,tend,r);plotall(y,u,T)得到闭环控制系统输出响应和控制量变化曲线如图:增加预测时域长度,同时减少控制时域长度后,再利用以下程序P=10;M=3;Ks=smpccon(imod,ywt,uwt,M,P); tend=30; r=1 0; y,u=smpcsim(pmod,imod,Ks,tend,r);plotall(y,u,T)可得闭环系统的输出和控制量变化曲线如图所示:进一步改变控制时域长度,采用控制量分块的形式,即再利用以下程序
7、P=10;M=2 3 4;tend=30; r=1 0; Ks=smpccon(imod,ywt,uwt,M,P);y,u=smpcsim(pmod,imod,Ks,tend,r);plotall(y,u,T)可得到的闭环系统的输出和控制量变化曲线:增加输入控制量的加权矩阵系数,即再利用以下程序uwt=1 1;P=5;M=P;Ks=smpccon(imod,ywt,uwt,M,P); tend=30; r=1 0; y,u=smpcsim(pmod,imod,Ks,tend,r);plotall(y,u,T)可得模型预测闭环控制系统输出控制量变化曲线如下图所示:再利用以下程序将输出设定值均设为
8、0, ulim=;Kest=; z=; v=; w=1;y,u=smpcsim(pmod,imod,Ks,tend,r,ulim,Kest,z,v,w);plotall(y,u,T)绘制闭环系统的输出和控制量变化曲线,如图所示:利用以下程序采用估计器进一步改善系统性能Kest,newmod=smpcest(imod,15,15,3 3);Ks=smpccon(newmod,ywt,uwt,M,P); y,u=smpcsim(pmod,newmod,Ks,tend,r,ulim,Kest,z,v,w);plotall(y,u,T)对应的系统输出和控制量变化曲线如图所示:4.考虑如下的多变量系统解
9、:MATLAB程序如下:g11=poly2tfd(12.8,16.7 0,0,1);g12 = poly2tfd(6.6,10.9 1,0,7);g21 = poly2tfd(-18.9,21.0 1,0,3);g22 = poly2tfd(-19.4,14.4 1,0,3);delt=1;ny=2;imod = tfd2mod(delt,ny, g11, g12,g21,g22);gw1=poly2tfd(3.8,14.9 1,0,8)gw2=poly2tfd(4.9,13.2 1,0,3)pmod=addumd(imod,tfd2mod(delt,ny,gw1,gw2);%设计模型预测控制
10、器P=6;M=2;ywt=;uwt=1 1;Ks=smpccon(imod,ywt,uwt,M,P);r=;ulim=;z=;v=;w=1;wu=;tend=30;y3,u3=smpcsim(pmod,imod,Ks,tend,r,ulim,z,v,w,wu);%设计状态估计器Kest1=smpcest(pmod,1,0.001*eye(ny);Ks1=smpccon(pmod,ywt,uwt,M,P);y1,u1=smpcsim(pmod,pmod,Ks1,tend,r,ulim,Kest1,z,v,w,wu);plotall(y1,u1,delt)采用了状态估计器的闭环系统输出和控制量变化曲线如图所示:下面进行简化的状态估计器设计tau=10 10;signoise=3 3;Kest2,newmod=smpcest(imod,tau,signoise);Ks2=smpccon(newmod,ywt,uwt,M,P);y2,u2=smpcsim(pmod,pmod,Ks1,tend,r,ulim,Kest1,z,v,w,wu);plotall(y2,u2,delt)采用简化的状态估计器的闭环系统输出和控制量曲线如图所示:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1