制中得到成功应用。
MATLAB的模型预测控制工具箱提供了对动态矩阵控制方法的支持,有关的函数能够基于阶跃响应模型的模型预测控制器设计与仿真,见表8-3。
表8-3 动态矩阵控制设计与仿真函数
函数名 cmpc() mpccon() mpccl() mpcsim() nlcmpc() nlmpcsim() 功能 输入/输出有约束的模型预测控制器设计 输入/输出无约束的模型预测控制器设计 计算模型预测控制系统的闭环模型 模型预测控制系统的仿真(输入/输出无约束) Simulink块nlcmpc对应的S函数 Simulink块nlmpcsim对应的S函数
例8-12 考虑如下的双输入输出纯时延对象,其传递函数矩阵为
?12.8e?1s?16.7s?1G(s)????18.9e?3s??21.0s?1解:MATLAB程序如下: clc,clear; all; close %将传递函数模型转换为阶跃响应模型 g11=poly2tfd([12.8],[16.7 1],0,1); 6.6e?7s??10.9s?1? ?3s??19.4e?14.4s?1? g12=poly2tfd([6.6],[10.9 1],0,7); g21=poly2tfd([-18.9],[21 1],0,3); g22=poly2tfd([-19.4],[14.4 1],0,3); delt=3; %采样周期 ny=2; tfinal=90; tfd2step(tfinal,delt,ny,g11,g12,g21,g22); model=%进行模型预测控制器设计 plant=model; %预测时域长度为6 p=6;m=2; ywt=[];uwt=[]; %设置输入约束和参考轨迹等控制器参数 r=[1 1]; tend=30; %仿真时间为30 ulim=[-0.1 -0.1 0.55 0.5 0.1 100]; ylim=[]; [y,u,ym]=cmpc(plant,model,ywt,uwt,m,p,tend,r,ulim,ylim); plotall(y,u,delt) 第6页 共10页
闭环系统的输出和控制量变化曲线如图1所示。
图1 闭环系统的输出和控制量变化曲线
8.4 基于状态空间模型的预测控制器设计函数
在MATLAB模型预测控制工具箱中,除了提供基于阶跃响应模型的预测控制器设计功能外,还提供了MPC状态空间模型的预测控制器设计功能。有关的函数参见表8-4。
表8-4 基于MPC状态空间模型的预测控制器设计函数 函数名 scmpc() smpccon() smpccl() smpcsim() smpcest() 功能 输入/输出有约束的状态空间模型预测控制器设计 输入/输出无约束的状态空间模型预测控制器设计 计算输入/输出无约束的模型预测闭环控制系统模型 输入有约束的模型预测闭环控制系统仿真 状态估计器设计 8.4.1 输入/输出有约束的状态空间模型预测控制器设计
函数scmpc()用于进行输入/输出有约束条件下的状态空间模型预测控制器设计,该函数的调用格式为
第7页 共10页
[y, u, ym]=scmpc(pmod, imod, ywt, uwt, M, P, tend, r, ulim, ylim, kest, z, v, w, wu) 式中,pmod为MPC状态空间模型格式的对象状态空间模型,用于仿真;
imod为MPC状态空间模型格式的对象内部模型,用于预测控制器设计; ywt为二次型性能指标的输出误差加权矩阵; uwt为二次型性能指标的控制量加权矩阵; M为控制时域长度; P为预测时域长度; tend为仿真的结束时间; r为输入设定值或参考轨迹;
ulim=[ulow uhigh delu],式中,ulow为控制变量的下界,uhigh为控制变量的上界,delu为控制变量的变化率约束;
ylim=[ylow yhigh],式中,ylow为输出的下界,yhigh为输出的上界; kest为估计器的增益矩阵;
z为测量噪声;v为测量扰动;w为输出未测量扰动;wu为施加到控制输入的未测量扰动;
y为系统响应;u为控制变量;ym为模型预测输出。
第8页 共10页
例8-15 考虑如下的双输入输出纯时延对象,其传递函数矩阵为
?12.8e?1s?16.7s?1G(s)????18.9e?3s??21.0s?1解:MATLAB程序如下: clc,clear; all; close %将传递函数模型转换为状态空间模型 g11=poly2tfd([12.8],[16.7 1],0,1); 6.6e?7s??10.9s?1? ?3s??19.4e?14.4s?1? g12=poly2tfd([6.6],[10.9 1],0,7); g21=poly2tfd([-18.9],[21 1],0,3); g22=poly2tfd([-19.4],[14.4 1],0,3); delt=3; ny=2; tfd2mod(delt,ny,g11,g12,g21,g22); imodel= %进行模型预测控制器设计 pmodel=imodel; p=6;m=2; %预测时域长度为6,控制时域长度为2 ywt=[];uwt=[1 1]; %设置输入约束和参考轨迹等控制器参数 r=[0 1]; tend=30; %仿真时间为30 ulim=[-inf -0.15 inf inf 0.1 100]; ylim=[]; % ylim=[0 0 inf inf]; [y,u]=scmpc(pmodel,imodel,ywt,uwt,m,p,tend,r,ulim,ylim); plotall(y,u,delt) 闭环系统的输出和控制量变化曲线如图2所示。 第9页 共10页
图2 闭环系统的输出和控制量变化曲线
[1] 李国勇. 智能控制及其MATLAB实现[M]. 北京:电子工业出版社, 2005.
第10页 共10页