主要内容

改善控制性能与预见性(预览)

这个例子展示了如何设计一个模型预测控制器与预见性(预览)参考和测量干扰轨迹。

定义植物模型

工厂模型定义为一个线性时不变系统和两个输入(一个被控变量和一个测量扰动)和一个输出。

工厂= 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”)

另请参阅

功能

对象

相关的话题