改善控制性能与预见性(预览)
这个例子展示了如何设计一个模型预测控制器与预见性(预览)参考和测量干扰轨迹。
定义植物模型
工厂模型定义为一个线性时不变系统和两个输入(一个被控变量和一个测量扰动)和一个输出。
工厂= ss (tf ({1}, {[1 5 1], [1]}),“最小值”);
得到了状态矩阵的植物模型,设置一个采样时间0.2秒,得到离散矩阵,并指定初始条件。
[A, B, C, D] = ssdata(植物);%连续时间党卫军实现t = 0.2;%采样时间(广告、Bd、Cd, Dd) = ssdata (c2d(植物、Ts));%离散时间党卫军实现x0 = (0, 0, 0);%初始条件
设计模型预测控制器
定义类型的输入信号。
植物= setmpcsignals(植物,“MV”,1“医学博士”2);
创建货币政策委员会
对象。
p = 20;%预测地平线m = 10;%控制地平线mpcobj = mpc(植物、t、p、m);%指定MV约束。mpcobj。MV =结构(“最小值”0,“马克斯”2);%指定权重mpcobj。重量=结构(“MV”0,“MVRate”,0.1,“输出”1);
- - >“权重。ManipulatedVariables”是空的。假设默认的0.00000。- - >“权重。ManipulatedVariablesRate”是空的。假设默认的0.10000。- - >“权重。OutputVariables”是空的。假设默认的1.00000。
模拟闭环使用sim卡
命令
Tstop = 30;%的模拟时间。时间= (0:Ts (Tstop + p * Ts) ';%的时间向量r =双(时间> 10);%的参考信号v =总价值(> 20);%测量干扰信号
使用mpcsimopt
对象打开预览功能的闭环仿真。
params = mpcsimopt (mpcobj);params.MDLookAhead =“上”;params.RefLookAhead =“上”;
模拟在MATLAB®MPC工具箱sim卡
命令。
YY1 = sim (mpcobj Tstop / Ts + 1, r, v, params);
- - >将模型转换为离散时间。- - >输出假设干扰# 1添加到测量输出集成的白噪声。- - >”模型。噪音”是空的。假设白噪声在每个测量输出。
模拟使用mpcmove
命令
创建数组来存储闭环输出。
YY2 = [];%创建变量来存储当前状态的植物和控制器x = x0;%初始植物状态xmpc = mpcstate (mpcobj);%指针指向当前控制器状态
开始模拟循环
为ct = 0:圆形(Tstop / Ts)%植物方程:输出更新y = C * x + v D (:, 2) * (ct + 1);%存储输出信号YY2 = [YY2 y];% #好< * AGROW >%计算MPC法。提取参考r (t + 1)、r (t + 2),…, r (t + p)%测量干扰v (t) v (t + 1),…, v (t + p)预览。u = mpcmove (mpcobj xmpc y r (ct + 2: ct + p + 1), v (ct + 1: ct + p + 1));%植物方程:状态更新广告* x = x + Bd (: 1) * u + Bd (:, 2) * (ct + 1);结束
阴谋的结果。
图t = 0: Ts: Tstop;情节(t, r(1:长度(t)),“c:”t YY1的r -t YY2“波”);包含(“时间”);ylabel (“植物输出”);传奇({“参考”;“从sim命令”;“从mpcmove命令”},“位置”,“东南”);网格
的反应是相同的。
最优预测轨迹返回mpcmove
。假设你从当前状态,设定点的变化为0.5,5步骤,和假设测量干扰已经消失了。
r1 = [(5、1); 0.5 * 1 (5、1)];v1 = 0 (p + 1);[~,信息]= mpcmove (mpcobj xmpc y, r1 (1: p), v1 (1: p + 1));
提取最优预测轨迹和阴谋。
topt = Info.Topt;yopt = Info.Yopt;uopt = Info.Uopt;图次要情节(211)标题(最优序列的预测输出的)楼梯(topt yopt);网格轴([0 p * Ts 2 2]);次要情节(212)标题(“操纵变量的最优序列”)楼梯(topt uopt);轴([0 p * Ts 2 2]);网格
获得LTI MPC控制器与预览的代表
当约束不活跃,MPC控制器像一个线性控制器。你可以得到状态方程形式的MPC控制器,与y, [r (t + 1); r (t + 2),……; r (t + p)],和[v (t); v (t + 1);……; v (t + p))作为输入到控制器。
得到状态空间矩阵的线性化控制器。
LTI = ss (mpcobj,“房车”,“上”,“上”);(铝、提单、CL, DL) = ssdata (LTI);
创建数组来存储闭环输出。
YY3 = [];%设置MPC控制器的初始状态x = x0;xL = (x0, 0, 0);
开始主仿真循环
为ct = 0:圆形(Tstop / Ts)%更新工厂产出的Cd * y = x + v Dd (:, 2) * (ct + 1);%保存输出和参考文献价值YY3 = [YY3 y];%计算线性MPC控制行动u = CL * xL + DL * [y; r (ct + 2: ct + p + 1); v (ct + 1: ct + p + 1)];%注意,最优政策委员会提供的将是:mpcmove (mpcobj xmpc y,裁判(t + 2: t + p + 1), v (t + 1: t + p + 1));%植物更新广告* x = x + Bd (: 1) * u + Bd (:, 2) * (ct + 1);%控制器更新xL = AL * xL +提单* [y; r (ct + 2: ct + p + 1); v (ct + 1: ct + p + 1)];结束
阴谋的结果。
图绘制(t, r(1:长度(t)),“c:”t YY3的r -);包含(“时间”);ylabel (“植物输出”);传奇({“参考”;“无约束政策委员会”},“位置”,“东南”);网格
使用仿真软件模拟®金宝app
这个例子中,运行仿真软件®是必需的。金宝app
如果~ mpcchecktoolboxinstalled (“金宝app模型”)disp (”金宝app模型(R)需要运行这个例子。)返回结束时间= (0:Ts (Tstop + p * Ts) ';%的时间向量r =双(时间> 10);%的参考信号v =总价值(> 20);%测量干扰信号%定义的参考信号结构ref.time =时间;ref.signals。值= r;%定义测量的干扰md.time =时间;md.signals。值= v;%开放模型模型金宝appmdl =“mpc_preview”;open_system (mdl)%使用仿真软件模拟模型| sim |命令金宝appsim (mdl Tstop);
阴谋的结果。
图t = 0: Ts: Tstop;情节(t, r(1:长度(t)),“c:”t YY1的r -t YY2“波”t伊夫圣罗兰“gx”);包含(“时间”);ylabel (“植物输出”);传奇({“参考”;“从sim命令”;“从mpcmove命令”;从仿真软件的金宝app},“位置”,“东南”);网格
的反应是相同的。
bdclose (“mpc_preview”)