自定义国家估计

模型预测控制工具箱™软件允许您覆盖默认控制器状态估计方法。

为此,您可以使用以下方法:

  • 您可以覆盖默认的卡尔曼收益,$ l $$ m $, 使用setEstimator功能。从控制器使用中获取默认值GetEstimator.。的列$ l $$ m $处于测量植物输出的工程单位。在内部,软件将它们转换为无量纲形式。

  • 您可以使用自定义估算选项,跳过控制器内的所有Kalman增益计算。当控制器操作时,在每个控制间隔处,必须使用外部过程来估计控制器状态并向控制器提供这些状态估计。

不支持自定义状态估计金宝appMPC设计师

考虑所有植物状态可测量的双积分工厂的情况。在这种情况下,您可以向MPC控制器提供测量的状态,而不是控制器估计状态。

定义工厂模型

线性开环工厂模型是双积分器。

植物= TF(1,[1 0 0]);

MPC控制器设计

使用指定的采样时间,预测地平线和控制地平线创建控制器对象。

ts = 0.1;p = 10;m = 3;mpcobj = mpc(植物,ts,p,m);
- >“MPC”对象的“权重”属性为空。假设默认为0.00000。- >“权重”属性“MPC”对象的“权重”属性为空。假设默认为0.10000。- >“MPC”对象的“权重”属性为空。假设默认为1.0万。

指定执行器饱和限制为操纵变量约束。

mpcobj.mv = struct('min',-1,'最大限度'1);

配置控制器以使用自定义状态估计。

setestimator(mpcobj,'风俗');

模拟控制器

配置变量来存储闭环响应。

tf = round(5 / ts);yy =零(tf,1);UU =零(TF,1);

通过将其转换为离散时间模型并设置初始状态,准备模拟中使用的植物。

sys = c2d(ss(植物),ts);xsys = [0; 0];

在仿真开始使用之前指定初始控制器状态MPCState.对象。

xmpc = mpcstate (mpcobj);
- >将“MPC”对象的“Model.Plant”属性转换为状态空间。- >将模型转换为离散时间。假设没有添加到测量的输出通道#1中的干扰。- >“MPC”对象的“Model.Noise”属性为空。假设每个测量的输出通道上的白噪声。

迭代模拟闭环响应MPCMOVE.功能。

对于每个模拟步骤:

  • 获得植物输出,ysys,目前的状态。

  • 设置植物状态MPCState.对象,xmpc,到当前测量的状态值,xsys

  • 计算MPC控制动作,,通过MPCState.对象。

  • 存储工厂输出和控制动作信号。

  • 更新测量的工厂状态。

为了t = 0:tf ysys = sys.c * xsys;xmpc.plant = xsys;u = mpcmove(mpcobj,xmpc,[],1);YY(T + 1)= ysys;UU(T + 1)= U;Xsys = sys.a * xsys + sys.b * u;结尾

绘制模拟结果。

图形子图(2,1,1)绘图(0:TS:5,YY)标题('是')子图(2,1,2)绘图(0:TS:5,UU)标题('U'

模拟Simulink中线性植物模型的闭环控制。金宝app对于此模型,控制器mpcobj在MPC控制器块中指定。

mdl =“mpc_customestimation”;Open_System(MDL)SIM(MDL)

MATLAB和SIMULINK模拟的闭环响应是相同的。金宝app

fprintf('matlab中的模拟之间的ndifferation和simulink是%g \ n'金宝app规范(UU-u));
MATLAB仿真与Simulink仿真的差异为6.77858e-14金宝app
bdclose (mdl)

也可以看看

|

相关的话题