自定义状态估计
模型预测控制工具箱™软件允许您覆盖默认的控制器状态估计方法。
为此,您可以使用以下方法:
你可以覆盖默认的卡尔曼增益,和,使用
setEstimator
函数。获取默认值从控制器使用getEstimator
。这些命令假设的列和在工程单位的测量装置输出。在内部,该软件将它们转换成无量纲形式。您可以使用自定义的评估选择,跳过所有卡尔曼增益控制器内的计算。控制器操作时,在每个控制间隔必须使用一个外部程序估计控制器状态和提供这些状态估计的控制器。
不支持自定义状态估计金宝appMPC设计师。更多信息见控制器状态估计和实现自定义状态估计量相当于内置的卡尔曼滤波器。
定义植物模型
考虑双积分器的情况下工厂的所有的植物状态是可衡量的。在这种情况下,您可以提供测量状态的MPC控制器,而不是有控制器估计状态。
线性开环模型是一个双积分器。
工厂=特遣部队(1,(1 0 0));
MPC控制器设计
创建控制器对象样本的时间0.1
秒,预测地平线10
步骤,和控制的地平线3
步骤。
t = 0.1;mpcobj = mpc(3)植物,Ts, 10日;
- - >“权重。ManipulatedVariables”属性是空的。假设默认的0.00000。- - >“权重。ManipulatedVariablesRate”属性是空的。假设默认的0.10000。- - >“权重。OutputVariables”属性是空的。假设默认的1.00000。
指定执行机构饱和限制作为操纵变量约束。
mpcobj。MV =结构(“最小值”,1“马克斯”1);
控制器配置为使用自定义状态估计。
setEstimator (mpcobj“自定义”);
模拟控制器
初始化变量来存储闭环反应。
Tf =圆(5 / Ts);YY = 0 (Tf, 1);UU = 0 (Tf, 1);
准备使用的植物模拟,将它转换为一个离散时间模型并设置初始状态。
sys =汇集(ss(植物),Ts);xsys = (0, 0);
得到一个句柄mpcstate
对象,该对象用于存储控制器。
xmpc = mpcstate (mpcobj);
- - >转换”模型。植物状态”属性。- - >将模型转换为离散时间。假设没有干扰测量输出通道# 1。- - >”模型。噪音”属性是空的。假设白噪声在每个测量输出。
使用迭代模拟闭环反应mpcmove
函数。
为每个模拟步骤:
获得植物输出,
y
从当前状态。存储装置的输出。
植物状态
mpcstate
对象当前测量状态值,xsys
使用处理xmpc
。对植物的不可测量状态,状态估计必须由一个观察者提供。当使用内置的估计量,这不是必要的。计算MPC控制作用,
u
,通过在mpcstate
对象和输出参考,1
。存储控制信号。
更新设备状态。
为t = 0: Tf y = sys.C * xsys;%植物方程:输出YY (t + 1) = y;xmpc。工厂= xsys;%状态估计u = mpcmove (mpcobj xmpc, [], 1);不需要% yUU (t + 1) = u;xsys =系统。* xsys + sys.B * u;%植物方程:下一个状态结束
仿真结果。
图次要情节(2,1,1)情节(0:Ts: 5, YY)标题(“y”次要情节(2,1,2)情节(0:Ts: 5, UU)标题(“u”)
植物模拟闭环控制的线性模型在仿真软件。金宝app对于这个模型,控制器mpcobj
在MPC控制器中指定块。
mdl =“mpc_customestimation”;open_system (mdl) sim (mdl)
MATLAB和Simulink仿真的闭环反应是相同的。金宝app
流(“\ nDifference之间在MATLAB和Simulink仿真是% g \ n '金宝app规范(UU-u));
区别在MATLAB和Simulink仿真5.92777 e-14金宝app
关闭仿真软件模型。金宝app
bdclose (mdl)