模型预测控制工具箱™软件允许您覆盖默认控制器状态估计方法。
为此,您可以使用以下方法:
您可以覆盖默认的卡尔曼收益,和, 使用setEstimator
功能。从控制器使用中获取默认值GetEstimator.
。的列和处于测量植物输出的工程单位。在内部,软件将它们转换为无量纲形式。
您可以使用自定义估算选项,跳过控制器内的所有Kalman增益计算。当控制器操作时,在每个控制间隔处,必须使用外部过程来估计控制器状态并向控制器提供这些状态估计。
不支持自定义状态估计金宝appMPC设计师。
考虑所有植物状态可测量的双积分工厂的情况。在这种情况下,您可以向MPC控制器提供测量的状态,而不是控制器估计状态。
线性开环工厂模型是双积分器。
植物= TF(1,[1 0 0]);
使用指定的采样时间,预测地平线和控制地平线创建控制器对象。
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)