通过检查最优控制序列来理解控制行为

这个例子展示了如何检查由模型预测控制器在每个样本时间计算的操作变量的优化序列。

该工厂是一个受输入饱和影响的双积分器。

设计MPC控制器

MPC控制器的基本设置包括:

  • 双积分器作为预测模型

  • 预测地平线20

  • 控制地平线10

  • 输入约束-1 <= U(t)的<= 1

配置MPC控制器。

TS = 0.1;P = 20;米= 10;mpcobj = MPC(TF(1,[1 0 0])中,Ts,P,M);mpcobj.MV =结构(“最低”,-1,“最大”,1);NU = 1;
- >“MPC”对象的“We​​ights.ManipulatedVariables”属性是空的。假设默认0.00000。- >“MPC”对象的“We​​ights.ManipulatedVariablesRate”属性是空的。假设默认0.10000。- >“MPC”对象的“We​​ights.OutputVariables”属性是空的。假设默认1.00000。

仿真模型在Simulink金宝app

要运行这个例子,Simulink®的需要。金宝app

如果〜mpcchecktoolboxinstalled('金宝appSIMULINK')DISP(的金宝appSimulink需要运行这个例子。“返回结束

打开Simulin金宝appk模型和运行模拟。

MDL ='mpc_sequence';open_system(MDL)SIM(MDL)
- >转换“MPC”对象的“Model.Plant”属性以状态空间。- >转换模型,以离散时间。假设没有干扰加到测量到的输出信道#1。- >的“MPC”对象的“Model.Noise”属性是空的。假设在每个测得的输出信道的白噪声。

MPC控制器块具有mv.seq输出端口,这是通过选择使能最优控制序列块参数。该端口输出每个采样时间由控制器计算出的最佳控制序列。的输出信号是与阵列p+1行和NMV列,其中p是的预测范围和NMV是操纵变量的数量。

以类似的方式,控制器可以输出最佳状态序列(x.seq)和最佳输出序列(y.seq)。

该模型出口此控制序列在每个模拟步骤的工作区MATLAB®,记录该数据作为useq

分析最优控制序列

绘制在特定时刻的最优控制序列。

乘以= [0 .2 .1 .2 .2 . 3. 3.5];图('名称'“最优顺序历史”对于T = 1:9的CT =时间(T)* 10 + 1;副区(3,3,T)H =楼梯(0:P,useq.signals.values(CT,:));h.LineWidth = 1.5;保持积((0:p)的+ 5,useq.signals.values(CT,:),'* R')包含(“预测步骤”)ylabel('U')标题(的sprintf('序列(T =%3.1F)',useq.time(CT)))网格坐标轴([0 P -1.1 1.1])保持结束

MPC控制器使用第一个两秒钟,使输出非常接近新的设定点。控制器输出为高限(1)一秒钟,并切换到低限值(-1)为下一个第二下,它们是输入约束限制的最佳控制策略。

bdclose(MDL)

也可以看看