主要内容

自定义状态估计

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

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

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

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

不支持自定义状态估计万博1manbetxMPC设计师

考虑所有植物状态可测量的双积分工厂的情况。在这种情况下,您可以向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 =圆(5 / Ts);YY = 0 (Tf, 1);UU = 0 (Tf, 1);

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

SYS = C2D(SS(植物),TS);xsys = [0; 0];

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

xmpc = mpcstate (mpcobj);
- - - >转换”模型。将“mpc”对象的“属性”放入状态空间。——>模型转换为离散时间。假设对测量的输出通道#1没有增加任何干扰。——>”模式。mpc对象的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中线性植物模型的闭环控制。万博1manbetx对于此模型,控制器mpcobj在MPC控制器块中指定。

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

MATLAB和SIMULINK模拟的闭环响应是相同的。万博1manbetx

fprintf('matlab中的模拟之间的ndifferation和simulink是%g \ n'万博1manbetx规范(UU-u));
Matlab和Simulink中模拟之间的差异为3.99378e-14万博1manbetx
bdclose (mdl)

也可以看看

|

相关的话题