在运行时不同的输入和输出范围
这个例子展示了如何改变输入和输出饱和限制在实时控制。命令行和仿真软件®模拟,您指定更新在每个控制输入和输金宝app出约束区间。MPC控制器然后让他们指定范围内的输入和输出信号。
更多信息在运行时更新线性约束,明白了在运行时更新约束。
创建工厂模型和MPC控制器
定义一个输出离散植物样品时间Ts
。
t = 0.1;工厂=汇集(tf ([1。8 3]), Ts);[A, B, C, D] = ssdata(植物);
创建一个MPC控制器与指定预测地平线,p
、控制地平线,c
,样品时间,Ts
。使用植物
内部预测模型。
p = 10;m = 4;mpcobj = mpc(植物、t、p、m);
- - >“权重。ManipulatedVariables”属性的“mpc”对象是空的。假设默认的0.00000。- - >“权重。ManipulatedVariablesRate”属性的“mpc”对象是空的。假设默认的0.10000。- - >“权重。OutputVariables”属性的“mpc”对象是空的。假设默认的1.00000。
指定控制器优化权重。
mpcobj.Weights。MV = 0;mpcobj.Weights。MVrate = 0.5;mpcobj.Weights。OV = 1;
在这个例子中,被控变量的上下界,和上限在运行时输出变量是多种多样的。这样做,您必须首先定义初始假有限值这些约束在MPC控制器对象。指定的值MV.Min
,MV.Max
,OV.Max
。
在运行时,这些限制是使用一个改变mpcmoveopt
对象在命令行或相应的输入信号MPC控制器。
mpcobj.MV。最小值= 1;mpcobj.MV。Max = 1;mpcobj.OV。Max = 1;
使用仿真软件模拟模型金宝app
打开仿真软金宝app件模型。
mdl =“mpc_varbounds”;open_system (mdl)
在这个模型中,输入最小和最大约束端口(umin
和umax
)和输出最大约束端口(ymax
MPC控制器的块被启用。无约束最小输出界以来,ymin
输入端口被禁用。
配置输出选点,裁判
仿真时间,尖
。
ref = 1;尖= 20;
运行仿真,查看输入和输出响应在I / O空间。
(mdl sim (mdl) open_system (' /我/ / O '])
- - >转换”模型。工厂”属性的“mpc”对象状态。- - >输出假设扰动添加到测量输出通道# 1是集成的白噪声。- - >”模型。噪音”属性的“mpc”对象是空的。假设白噪声在每个测量输出通道。
在命令行模拟模型
指定工厂的初始状态和控制器。
x = 0(大小(B, 1), 1);xmpc = mpcstate (mpcobj);
存储闭环输出,被控变量和状态轨迹MPC控制器的数组YY
,UU
,XX
,分别。
YY = [];UU = [];XX = [];
创建一个mpcmoveopt
对象指定运行时绑定值。
选择= mpcmoveopt;
运行仿真循环。
为t = 0:圆形(尖/ Ts)%保存植物状态。XX = [XX;x];%计算和存储装置的输出。没有直接的引线%从输入到输出。y = C * x;YY = [YY;y ');%得到参考信号值输出的数据模型金宝app%的模拟。ref = yout.Data (t + 1、2);%更新输入和输出范围。对于一致性、使用%约束值输出的仿真软件模拟。金宝app选项。MVMin = uout.Data (t + 1、2);选项。MVMax = uout.Data (t + 1, 3);选项。OutputMax = yout.Data (t + 1, 3);%计算MPC控制动作。u = mpcmove (mpcobj xmpc y ref,[],选项);%更新植物状态和存储输入信号的值。x = x + B * * u;UU = [UU;u ');结束
比较仿真结果
画出输入和输出信号的仿真软件和命令行模拟输入和输出范围的变化。金宝app
图次要情节(1、2、1)情节(0:Ts:尖,[UU uout.Data (: 1) uout.Data (:, 2) uout.Data(:, 3)])网格标题(“输入”)传说(命令行输入的,模金宝app型输入的,“下限”,…“上界”,“位置”,“东南”)次要情节(1、2、2)情节(0:Ts:尖(YY yout.Data (: 1) yout.Data(:, 3)])网格标题(“输出”)传说(的命令行输出,模金宝app型输出的,“上界”,…“位置”,“东南”)
命令行和仿真软件模拟的结果是相同的。金宝appMPC控制器使输入和输出信号在指定的范围内改变整个模拟的约束。
bdclose (mdl)