MATLAB模型预测控制工具箱函数
8.2 系统模型建立与转换函数
前面读者论坛了利用系统输入/输出数据进行系统模型辨识的有关函数及使用方法,为时行模型预测控制器的设计,需要对系统模型进行进一步的处理和转换。MATLAB的模型预测控制工具箱中提供了一系列函数完成多种模型转换和复杂系统模型的建立功能。
在模型预测控制工具箱中使用了两种专用的系统模型格式,即MPC状态空间模型和MPC传递函数模型。这两种模型格式分别是状态空间模型和传递函数模型在模型预测控制工具箱中的特殊表达形式。这种模型格式化可以同时支持连续和离散系统模型的表达,在MPC传递函数模型中还增加了对纯时延的支持。表8-2列出了模型预测控制工具箱的模型建立与转换函数。
表8-2 模型建立与转换函数
函数名 ss2mod() mod2ss() poly2tfd() tfd2mod() mod2step() tfd2step() ss2step() mod2mod() th2mod() addmod() addmd() addumd() paramod() sermod() appmod() 功能 将通用状态空间模型转换为MPC状态空间模型 将MPC状态空间模型转换为通用状态空间模型 将通用传递函数模型转换为MPC传递函数模型 将MPC传递函数模型转换为MPC状态空间模型 将MPC状态空间模型转换为MPC阶跃响应模型 将MPC传递函数模型转换为MPC附跃响应模型 将通用状态空间模型转换为MPC附跃响应模型 改变MPC状态空间模型的采样周期 将Theta格式模型转换为MPC状态空间模型 将两个开环MPC模型连接构成闭环模型,使其中一个模型输出叠加到另一个模型输入 向MPC对象添加一个或多个测量扰动 向MPC对象添加一个或多未测量扰动 将两个MPC系统模型并型 将两个MPC系统模型串联 用两个MPC系统模型构成增广系统模型 8.2.1 模型转换
在MATLAB模型预测工具箱中支持多种系统模型格式。这些模型格式包括: ① 通用状态空间模型; ② 通用传递函数模型; ③ MPC阶跃响应模型; ④ MPC状态空间模型;
精彩文档
实用标准文案
⑤ MPC传递函数模型。
在上述5种模型格式中,前两种模型格式是MATLAB通用的模型格式,在其他控制类工具箱中,如控制系统工具箱、鲁棒控制工具等都予以支持;而后三种模型格式化则是模型预测控制工具箱特有的。其中,MPC状态空间模型和MPC传递函数模型是通用的状态空间模型和传递函数模型在模型预测控制工具箱中采用的增广格式。模型预测控制工具箱提供了若干函数,用于完成上述模型格式间的转换功能。下面对这些函数的用法加以介绍。
1.通用状态空间模型与MPC状态空间模型之间的转换
MPC状态空间模型在通用状态空间模型的基础上增加了对系统输入/输出扰动和采样周期的描述信息,函数ss2mod()和mod2ss()用于实现这两种模型格式之间的转换。
1)通用状态空间模型转换为MPC状态空间模型函数ss2mod() 该函数的调用格式为
pmod= ss2mod(A,B,C,D) pmod= ss2mod(A,B,C,D,minfo)
pmod= ss2mod(A,B,C,D,minfo,x0,u0,y0,f0)
式中,A, B, C, D为通用状态空间矩阵;
minfo为构成MPC状态空间模型的其他描述信息,为7个元素的向量,各元素分别定义为:
minfo(1)=dt,系统采样周期,默认值为1;
minfo(2)=n,系统阶次,默认值为系统矩阵A的阶次; minfo(3)=nu,受控输入的个数,默认值为系统输入的维数; minfo(4)=nd,测量扰的数目,默认值为0; minfo(5)=nw,未测量扰动的数目,默认值为0;
minfo(6)=nym,测量输出的数目,默认值系统输出的维数; minfo(7)=nyu,未测量输出的数目,默认值为0; 注:如果在输入参数中没有指定minfo,则取默认值。 x0, u0, y0, f0为线性化条件,默认值均为0; pmod为系统的MPC状态空间模型格式。
例8-5 将如下以传递函数表示的系统模型转换为MPC状态空间模型。
s23s1G(s)3 2s2s2s1解:MATLAB命令如下: num=[1 3 1]; den=[1 2 2 1]; [A,B,C,D]=tf2ss(num,den); pmod=ss2mod(A,B,C,D) 精彩文档 实用标准文案
其输出结果为:
pmod =
1 3 1 0 0 1 0 NaN -2 -2 -1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 3 1 0 0 0
2)MPC状态空间模型转换为通用状态空间模型函数mod2ss() 该函数的调用格式为
[A, B, C, D]= mod2ss(pmod) [A, B, C, D, minfo]= mod2ss(pmod) [A,B,C,D,minfo,x0,u0,y0,f0]= mod2ss(pmod)
式中,pmod为系统的MPC状态空间模型格式;A,B,C,D为通用状态空间矩阵;minfo为构成MPC状态空间模型的其他描述信息,其说明参见函数ss2mod()。
2.通用传递函数模型转换为MPC传递函数模型
通用传递函数模型与MPC传递函数模型的转换函数poly2tfd()的调用格式为
g=poly2tfd(num,den,delt,delay)
式中,num为通用传递函数模型的分子多项式系数向量;
den为通用传递函数模型的分母多项式系数向量; delt为采样周期,对连续系统,该参数为0;
delay为系统纯时延,对于离散系统,纯时延为采样时间周期的整数倍; g为被控对象的MPC传递函数模型。
例8-6 考虑如下的纯时延二阶对象,并将其转换为MPC传递函数模型。
e0.5s(s1)G(s)2
s4s4解:MATLAB命令如下: >> num=[1 1];den=[1 4 4]; >> g=poly2tfd(num,den,0,0.5) 结果显示: g =
0 1.0000 1.0000 1.0000 4.0000 4.0000 0 0.5000 0
精彩文档
实用标准文案
3.MPC传递函数模型转换为MPC状态空间模型函数tfd2mod() 该函数的调用格式为
pmod=tfd2mod(delt,ny,g1,g2,……,g25)
式中,delt为采样时间;
ny为输出个数;
g1,g2,……为SISO传递函数,对应多变量系统传递函数矩阵的各个元素按行向量顺序排序构成的向量,其最大个数限制为25;
pmod为系统的MPC状态空间模型。
4.MPC阶跃响应模型与其他模型格式之间的转换
函数mod2step()、tfd2step()和ss2step()分别用于将MPC状态空间模型、MPC传递函数模型和通用状态空间模型转换为MPC阶跃响应模型。下面对这个三函数的用法进行说明。
1)MPC状态空间模型转换为MPC阶跃响应模型函数mod2step()
plant=mod2step(pmod,tfinal)
[plant, dplant]=mod2step(pmod,tfinal,delt,nout)
式中,pmod为系统的MPC状态空间模型;
tfinal为阶跃响应模型的截断时间;
delt为采样周期,默认值由MPC状态空间模型的参数minfo(1)决定; nout为输出稳定性向量,用于指定输出的稳定性。对于稳定的系统,nout等于输出的个数;对于具有一个或多个积怨分输出的系统,nout为一个长度等于输出个数的向量,该向量对应积分输出的分量为0,其余分量为1;
plant为对象在受控变量作用下的阶跃响应系数矩阵; dplant为对象在扰动作用下阶跃响应矩阵。
2)MPC传递函数模型转换为MPC阶跃响应模型函数tfd2step() 该函数的调用格式为
plant=tfd2step(tfinal,delt,nout,g1)
plant=tfd2step(tfinal,delt,nout,g1,……,g25)
式中,tfinal为阶跃响应的截断时间;
delt为采样周期;
nout为输出稳定性向量,参见函数mod2step()的有关说明;
g1,……,g25为SISO传递函数,对应多变量系统传递函数矩阵的各个元素按行向量顺序排列构成的向量,其最大个数限制为25;
plant为对象的阶跃响应系统矩阵。 例8-8 设系统传递函数为
精彩文档
实用标准文案
G(s)将其转换为阶跃响应模型。
解:MATLAB命令如下: >> num=[1 2];den=[1 3 1]; >> tf1=poly2tfd(num,den,0,0); >> plant=tfd2step(5,0.1,1,tf1); >> plotstep(plant)
s2
s23s1由阶跃响应模型绘制的系统阶跃响应曲线如图8-5所示。
图8-5 系统阶跃响应曲线
8.4 基于阶跃响应模型的控制器设计与仿真函数
基于系统的阶跃响应模型进行模型预测控制器设计的方法称为动态矩阵控制方法。该方法是采用工程上易于获取的对象阶跃响应模型,算法较为简单,计算量较少,鲁棒性较强,适用于纯时迟、开环渐近稳定的非最小相位系统,在工业过程控
精彩文档
实用标准文案
制中得到成功应用。
MATLAB的模型预测控制工具箱提供了对动态矩阵控制方法的支持,有关的函数能够基于阶跃响应模型的模型预测控制器设计与仿真,见表8-3。
表8-3 动态矩阵控制设计与仿真函数
函数名 cmpc() mpccon() mpccl() mpcsim() nlcmpc() nlmpcsim() 功能 输入/输出有约束的模型预测控制器设计 输入/输出无约束的模型预测控制器设计 计算模型预测控制系统的闭环模型 模型预测控制系统的仿真(输入/输出无约束) Simulink块nlcmpc对应的S函数 Simulink块nlmpcsim对应的S函数
例8-12 考虑如下的双输入输出纯时延对象,其传递函数矩阵为
12.8e1s16.7s1G(s)18.9e3s21.0s1解:MATLAB程序如下: clc,clear; all; close %将传递函数模型转换为阶跃响应模型 g11=poly2tfd([12.8],[16.7 1],0,1); 6.6e7s10.9s1 3s19.4e14.4s1 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) 实用标准文案
闭环系统的输出和控制量变化曲线如图1所示。
图1 闭环系统的输出和控制量变化曲线
8.4 基于状态空间模型的预测控制器设计函数
在MATLAB模型预测控制工具箱中,除了提供基于阶跃响应模型的预测控制器设计功能外,还提供了MPC状态空间模型的预测控制器设计功能。有关的函数参见表8-4。
表8-4 基于MPC状态空间模型的预测控制器设计函数 函数名 scmpc() smpccon() smpccl() smpcsim() smpcest() 功能 输入/输出有约束的状态空间模型预测控制器设计 输入/输出无约束的状态空间模型预测控制器设计 计算输入/输出无约束的模型预测闭环控制系统模型 输入有约束的模型预测闭环控制系统仿真 状态估计器设计 8.4.1 输入/输出有约束的状态空间模型预测控制器设计
函数scmpc()用于进行输入/输出有约束条件下的状态空间模型预测控制器设计,该函数的调用格式为
精彩文档
实用标准文案
[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-15 考虑如下的双输入输出纯时延对象,其传递函数矩阵为
12.8e1s16.7s1G(s)18.9e3s21.0s1解:MATLAB程序如下: clc,clear; all; close %将传递函数模型转换为状态空间模型 g11=poly2tfd([12.8],[16.7 1],0,1); 6.6e7s10.9s1 3s19.4e14.4s1 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所示。 精彩文档
实用标准文案
图2 闭环系统的输出和控制量变化曲线
[1] 李国勇. 智能控制及其MATLAB实现[M]. 北京:电子工业出版社, 2005.
精彩文档
因篇幅问题不能全部显示,请点此查看更多更全内容