该示例显示了如何在每个采样时间检查由模型预测控制器计算的操纵变量的优化序列。
该装置是一个受输入饱和影响的双积分器。
MPC控制器的基本设置包括:
采用双积分器作为预测模型
预测地平线20.
控制层10
输入约束-1 <= u(t) <= 1
配置MPC控制器。
t = 0.1;p = 20;m = 10;mpcobj = mpc(tf(1,[1 0 0]),Ts,p,m);mpcobj。MV =结构(“最小值”, 1“马克斯”1);ν= 1;
- - - >“权重。mpc对象的操纵变量属性为空。假设默认的0.00000。- - - >“权重。mpc对象的操控变量率属性为空。假设默认的0.10000。- - - >“权重。mpc对象的属性为空。假设默认的1.00000。
要运行此示例,需要Simulink®。万博1manbetx
如果~ mpcchecktoolboxinstalled (“万博1manbetx模型”) disp (“万博1manbetx运行这个示例需要Simulink。”)返回结束
打开Simulin万博1manbetxk模型,并运行仿真。
mdl =“mpc_sequence”;open_system (mdl) sim (mdl)
- - - >转换”模型。将“mpc”对象的“属性”放入状态空间。——>模型转换为离散时间。假设对测量的输出通道#1没有增加任何干扰。——>”模式。mpc对象的Noise属性为空。假设每个测量输出通道上都有白噪声。
MPC控制器模块有一个mv.seq
输出端口,通过选择最优控制序列块参数。该端口输出控制器在每个采样时间计算出的最优控制序列。输出信号是一个数组p
+ 1行和Nmv
列,p
为预测层,Nmv
为被操纵变量的个数。
同样,控制器可以输出最优状态序列(x.seq
)及最优输出序列(y、 序号
).
该模型在每个仿真步骤将该控制序列输出到MATLAB®工作空间,将数据记录为useq
.
绘制特定时刻的最优控制序列。
时间=[0.2 1 2.1 2.2 3 3.5];图(“名字”,“最优序列的历史”)为T = 1:9 ct = times(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”)xlabel(的预测步骤) ylabel (“u”)头衔(斯普林特)(‘序列’(t = % 3.1度), usq .time(ct)))网格轴([0 p -1.1 1.1])保持从结束
MPC控制器使用前两秒,使输出非常接近新的设定点。控制器输出在1秒内处于上限(+1),下一秒切换到下限(-1),这是在输入约束极限下的最佳控制策略。
bdclose (mdl)