通过检查最优控制序列了解控制行为
此示例显示了如何在每个采样时间内检查由模型预测控制器计算的操作变量的优化序列。
该植物是一个以输入饱和度的双积分器。
设计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('min',-1,'最大限度',1);nu = 1;
- >“权重.ManipuldVariables”属性为空。假设默认为0.00000。- >“权重.ManipuldVariableRate”属性是空的。假设默认为0.10000。- >“权重”属性为空。假设默认为1.0万。
模拟Simulink模型金宝app
要运行此示例,需要Simulink®。金宝app
如果〜mpcchecktoolboxinstalled('金宝appsimulink')disp('金宝appSimulink需要运行此示例。'的)返回结尾
打开Simulin金宝appk模型,运行模拟。
mdl ='mpc_sequence';Open_System(MDL)SIM(MDL)
- >将“model.plant”属性转换为状态空间。- >将模型转换为离散时间。假设没有添加到测量的输出通道#1的干扰。- >“model.noise”属性是空的。假设每个测量的输出上的白噪声。
MPC控制器块具有一个mv.seq.
输出端口,通过选择来启用最佳控制序列块参数。该端口在每个采样时间输出由控制器计算的最佳控制序列。输出信号是一个阵列P.
+1行和NMV.
列,其中P.
是预测地平线和NMV.
是操纵变量的数量。
以类似的方式,控制器可以输出最佳状态序列(X.Seq.
)和最佳输出序列(Y.Seq.
)。
当模拟停止时,到工作区
块连接到mv.seq.
端口将此控件序列导出到MATLAB®工作区,记录变量中的数据useq.
。
分析最佳控制序列
在特定时间瞬间绘制最佳控制序列。
Times = [0 0.2 1 2 2.1 2.2 3 3.5 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')Xlabel('预测步骤')ylabel('U')标题(Sprintf('序列(t =%3.1f)',useq.time(ct)))网格轴([0 p -1.1 1.1])保持离开结尾
MPC控制器使用前两秒钟来使输出非常接近设定点。控制器输出位于上限(+1),一秒钟(+1),然后切换到下一秒的下限(-1),这是输入约束下的最佳控制策略。
BdClose(MDL)