MATLAB 环境下动态矩阵控制实验
一 算法实现
设某工业对象的传递函数为:G P (s)=e -80s /(60s+1),采用DMC 后的动态特性如图1所示。
在仿真时采样周期T=20s ,优化时域P=10,控制时域M=2,建模时域N=20。
MATLAB 程序1:
g=poly2tfd(1,[60 1],0,80);%通用传递函数模型转换为MPC 传递函数模型 delt=20; %采样周期
nt=1; %输出稳定性向量
tfinal=1000; %截断时间
model=tfd2step(tfinal,delt,nt,g);%传递函数模型转换为阶跃响应模型
plant=model; %进行模型预测控制器设计
p=10; %优化时域
m=2; %控制时域
ywt=[];uwt=1; %设置输入约束和参考轨迹等控制器参数 kmpc=mpccon(plant,ywt,uwt,m,p);%模型预测控制器增益矩阵计算
tend=1000;r=1; %仿真时间
[y,u,yrn]=mpcsim(plant,model,kmpc,tend,r);%模型预测控制仿真
t=0:20:1000;
plot(t,y)
xlabel('图1 DMC 控制系统的动态阶跃响应曲线(time/s)');
ylabel('响应曲线');
00.2
0.4
0.6
0.81
1.2
1.4
图1 DMC 控制系统的动态阶跃响应曲线(time/s)响应曲线
图中曲线为用DMC 控制后系统的阶跃响应曲线。
从图中可以看出:采用DMC 控制后系统的调整时间小,响应的快速性好,而且系统的响应无超调。
该结果是令人满意的。
二P和M对系统动态性能的影响
1.P对系统性能的影响
优化时域P表示我们对k时刻起未来多少步的输出逼近期望值感兴趣。
当采样周期T=20s,控制时域M=2,建模时域N=20,优化时域P分别为6,10和20时的阶跃响应曲线如图2所示。
MATLAB程序2:
g=poly2tfd(1,[60 1],0,80);%通用传递函数模型转换为MPC传递函数模型
delt=20; %采样周期
nt=1; %输出稳定性向量
tfinal=1000; %截断时间
model=tfd2step(tfinal,delt,nt,g);%传递函数模型转换为阶跃响应模型
plant=model; %进行模型预测控制器设计
p1=6;p2=10;p3=20; %优化时域
m=2; %控制时域
ywt=[];uwt=1;
kmpc1=mpccon(plant,ywt,uwt,m,p1);
kmpc2=mpccon(plant,ywt,uwt,m,p2);
kmpc3=mpccon(plant,ywt,uwt,m,p3);
tend=1000;r=1;
[y1,u,yrn]=mpcsim(plant,model,kmpc1,tend,r);
[y2,u,yrn]=mpcsim(plant,model,kmpc2,tend,r);
[y3,u,yrn]=mpcsim(plant,model,kmpc3,tend,r);
t=0:20:1000;
plot(t,y1,t,y2,t,y3)
legend('1-p=6','2-p=10','3-p=20');
xlabel('图2 P不同对系统性能的影响(time/s)');
ylabel('响应曲线');
0100
2003004005006007008009001000
00.2
0.4
0.6
0.81
1.2
1.4
图2 P 不同对系统性能的影响(time/s)响应曲线
图中曲线1为P=6时的阶跃响应曲线;曲线2为P=10时的阶跃响应曲线;曲线3为P=20时的阶跃响应曲线。
从图中可以看出:增大P ,系统的快速性变差,系统的稳定性增强;减小P ,系统的快速性变好,稳定性变差。
所以P 的选择应该兼顾快速性和稳定性。
2.M对系统性能的影响
控制时域M表示所要确定的未来控制量的改变数目。
当采样周期T=20s,优化时域P=20,建模时域N=20,控制时域M分别取4,2和1时系统的响应曲线如图3所示。
MATLAB程序3:
g=poly2tfd(1,[60 1],0,80);%通用传递函数模型转换为MPC传递函数模型
delt=20; %采样周期
nt=1; %输出稳定性向量
tfinal=1000; %截断时间
model=tfd2step(tfinal,delt,nt,g);%传递函数模型转换为阶跃响应模型
plant=model; %进行模型预测控制器设计
p=20; %优化时域
m1=4;m2=2;m3=1; %控制时域
ywt=[];uwt=1;
kmpc1=mpccon(plant,ywt,uwt,m1,p);
kmpc2=mpccon(plant,ywt,uwt,m2,p);
kmpc3=mpccon(plant,ywt,uwt,m3,p);
tend=1000;r=1;
[y1,u,yrn]=mpcsim(plant,model,kmpc1,tend,r);
[y2,u,yrn]=mpcsim(plant,model,kmpc2,tend,r);
[y3,u,yrn]=mpcsim(plant,model,kmpc3,tend,r);
t=0:20:1000;
plot(t,y1,t,y2,t,y3)
legend('1-m=4','2-m=2','3-m=1');
xlabel('图2 M不同对系统性能的影响(time/s)');
ylabel('响应曲线');
0100
2003004005006007008009001000
00.2
0.4
0.6
0.81
1.2
1.4
图2 M 不同对系统性能的影响(time/s)响应曲线
图中曲线1为M=4时的响应曲线;曲线2为M=2时的响应曲线;曲线3为M=1时的响应曲线。
从图中可以看出:减小M ,系统的快速性变差,系统的稳定性增强;增大M ,系统的快速性变好,稳定性变差。
增大P 和减小M 效果类似,所以在选择时,可以先确定M 再调整P ,并且M 小于等于P 。
三模型失配时的响应曲线
当预测模型失配时,即当G M(S)≠G P(S),当G M(S)=2e-50s/(40s+1)时的响应曲线如图4所示。
MATLAB程序4:
g1=poly2tfd(1,[60 1],0,80);%通用传递函数模型转换为MPC传递函数模型
g2=poly2tfd(2,[40 1],0,50);
delt=20; %采样周期
nt=1; %输出稳定性向量
tfinal=1000; %截断时间
model1=tfd2step(tfinal,delt,nt,g1);%传递函数模型转换为阶跃响应模型
model2=tfd2step(tfinal,delt,nt,g2);
plant1=model1; %进行模型预测控制器设计
plant2=model2;
p=10; %优化时域
m=2; %控制时域
ywt=[];uwt=1; %设置输入约束和参考轨迹等控制器参数
kmpc1=mpccon(plant1,ywt,uwt,m,p);%模型预测控制器增益矩阵计算
kmpc2=mpccon(plant2,ywt,uwt,m,p);
tend=1000;r=1; %仿真时间
[y1,u,yrn]=mpcsim(plant1,model1,kmpc1,tend,r);%模型未失配时的预测控制仿真
[y2,u,yrn]=mpcsim(plant1,model2,kmpc2,tend,r);%模型失配时的预测控制仿真
t=0:20:1000;
plot(t,y1,t,y2)
legend('1-模型未失配','2-模型失配');
xlabel('图4 模型失配时的响应曲线(time/s)');
ylabel('响应曲线');
0100200300400500600700800
9001000
00.2
0.4
0.6
0.81
1.2
1.4
图4 模型失配时的响应曲线(time/s)响应曲线
图中曲线1为未失配时的阶跃响应曲线;曲线2为模型失配时的阶跃响应曲线。
从图中可以看出:当模型失配时,DMC 控制有一定的超调,快速性下降,但能很快进入稳定状态,控制效果令人满意。
所以DMC 在形成闭环控制时,对模型失配具有很好的鲁棒性。