模型预测控制工具箱™软件允许您覆盖默认的控制器状态估计方法。
为此,您可以使用以下方法:
你可以覆盖默认的卡尔曼增益,和,使用setEstimator
函数。获取控制器使用的默认值getEstimator
.这些命令假设和是在工程单位中测量的工厂产出。在内部,软件将它们转换成无量纲形式。
您可以使用自定义估计选项,跳过控制器内的所有卡尔曼增益计算。当控制器运行时,在每个控制间隔,您必须使用一个外部过程来估计控制器状态,并将这些状态估计提供给控制器。
中不支持自定义状态估计金宝appMPC设计师.
考虑双积分器工厂的情况,工厂的所有状态都是可测量的。在这种情况下,您可以向MPC控制器提供测量到的状态,而不是让控制器估计状态。
线性开环对象模型是一个双积分器。
Plant = tf(1,[1 0 0]);
使用指定的示例时间、预测范围和控制范围创建控制器对象。
t = 0.1;p = 10;m = 3;mpcobj = mpc(植物、t、p、m);
- - - >“权重。“mpc”对象的“操纵变量”属性为空。假设默认的0.00000。- - - >“权重。“mpc”对象的“操纵变量率”属性为空。假设默认的0.10000。- - - >“权重。“mpc”对象的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);
- - - >转换”模型。“mpc”对象的“植物”属性到状态空间。——>将模型转换为离散时间。假设测量输出通道1没有增加干扰。——>”模式。“mpc”对象的“Noise”属性为空。假设每个测量输出通道上都有白噪声。
迭代地模拟闭环响应mpcmove
函数。
对于每个模拟步骤:
获得植物产量,ysys
,表示当前状态。
中设置植物状态mpcstate
对象,xmpc
,为当前测量的状态值,xsys
.
计算MPC控制动作,u
,路过mpcstate
对象。
存储设备输出和控制动作信号。
更新测量的工厂状态。
为t = 0:Tf ysys = sys.C*xsys;xmpc。工厂= xsys;u = mpcmove (mpcobj xmpc, [], 1);YY (t + 1) = ysys;UU (t + 1) = u;xsys =系统。* xsys + sys.B * u;结束
绘制模拟结果。
图subplot(2,1,1) plot(0:Ts:5,YY)标题(“y”) subplot(2,1,2) plot(0:Ts:5,UU) title(“u”)
在Simulink中对线性被控对象模型进行闭环控制仿真。金宝app对于这个模型,控制器mpcobj
在MPC Controller块中指定。
mdl =“mpc_customestimation”;open_system (mdl) sim (mdl)
MATLAB和Simulink仿真的闭环响应是相同的。金宝app
流(MATLAB和Simulink仿真的差异是%g\n金宝app规范(UU-u));
MATLAB仿真与Simulink仿真的区别是3.99378e-14金宝app
bdclose (mdl)