通过检查最优控制序列来理解控制行为
这个例子展示了如何在每个采样时间检查由模型预测控制器计算的操纵变量的优化序列。
该装置是受输入饱和影响的双积分器。
MPC控制器设计
MPC控制器的基本设置包括:
采用双积分器作为预测模型
预测范围为
20.
控制视界为
10
输入约束
-1 <= u(t) <= 1
指定MPC控制器。
Ts = 0.1;P = 20;M = 10;mpcobj = mpc(tf(1,[1 0 0]),Ts,p,m);mpcobj。MV = struct(“最小值”, 1“马克斯”1);Nu = 1;
- - - >“权重。属性为空。假设默认值为0.00000。- - - >“权重。属性为空。假设默认为0.10000。- - - >“权重。OutputVariables属性为空。假设默认值为1.00000。
在Simulink中模拟模型金宝app
要运行此示例,需要Simulink®。金宝app
如果~ mpcchecktoolboxinstalled (“金宝app模型”) disp (“金宝app运行这个例子需要Simulink。”)返回结束
打开Simulin金宝appk模型,并运行仿真。
mdl =“mpc_sequence”;open_system (mdl) sim (mdl)
——>转换“模型”。属性到状态空间。——>转换模型到离散时间。假设测量的输出通道1没有任何扰动。——>”模式。“噪音”属性为空。假设每个测量输出都有白噪声。
MPC控制器块有一个mv.seq
输出端口,该端口通过选择最优控制顺序块参数。该端口输出控制器在每个采样时间计算出的最优控制顺序。输出信号是一个数组p
+1行和Nmv
列,p
是预测范围Nmv
是被操纵变量的数量。
同样,控制器可以输出最优状态序列(x.seq
)和最优输出序列(y.seq
).
当模拟停止时,到工作空间
连接到mv.seq
port将此控制序列导出到MATLAB®工作空间,在变量中记录数据useq
.
分析最优控制序列
绘制出特定时刻的最优控制序列。
次数= [0 0.2 1 2 2.1 2.2 3 3.5 5];图(“名字”,“最优序列历史”)为T = 1:9 ct =乘以(T)*10+1;Subplot (3,3,t) h = stairs(0:p,useq.signals.values(ct,:));h.LineWidth = 1.5;持有在情节((0:p) + 5, useq.signals.values (ct,:)“* r”)包含(的预测步骤) ylabel (“u”)标题(sprintf (‘序列’(t = % 3.1度),useq.time(ct)))网格轴([0 p -1.1 1.1])保持从结束
MPC控制器使用前两秒使输出非常接近设定值。控制器的输出有一秒处于上限(+1),下一秒切换到下限(-1),这是在输入约束下的最佳控制策略。
bdclose (mdl)