此示例示出了如何改变在实时控制输入和输出饱和极限。对于这两种命令行和的Simulink模拟,可以指定在金宝app每个控制间隔更新输入和输出的限制。MPC控制器然后保持其指定的范围内的输入和输出信号。
有关在运行时更新线性约束的更多信息,请参见在运行时更新约束。
定义与采样时间一个SISO离散时间植物TS
。
t = 0.1;植物= c2d(tf(1,[1 .8 3]),Ts);[A, B, C, D] = ssdata(植物);
创建具有指定预测层的MPC控制器,p
,控制范围,C
,样本时间,TS
。用厂
作为内部预测模型。
p = 10;m = 4;mpcobj = mpc(植物、t、p、m);
- >“MPC”对象的“Weights.ManipulatedVariables”属性是空的。假设默认0.00000。- >“MPC”对象的“Weights.ManipulatedVariablesRate”属性是空的。假设默认0.10000。- >“MPC”对象的“Weights.OutputVariables”属性是空的。假设默认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件模型。
MDL ='mpc_varbounds';open_system (mdl)
在这个模型中,最大和最小值的约束端口(umin
和UMAX
)和输出最大约束端口(YMAX
)MPC控制器块的被启用。由于结合的最小输出不受约束,所述YMIN
输入端口被禁用。
配置输出设定值,REF
,仿真持续时间,尖
。
REF = 1;尖= 20;
运行模拟,并查看I/O范围内的输入和输出响应。
SIM(MDL)open_system([MDL'/ I // O'])
- >转换“MPC”对象的“Model.Plant”属性以状态空间。- >加入到测量的输出信道#1假设输出干扰被集成白噪声。- >的“MPC”对象的“Model.Noise”属性是空的。假设在每个测得的输出信道的白噪声。
指定对象和控制器的初始状态。
X =零(大小(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'];%获得从由Simulink中输出的数据中的基准信号值金宝app%的模拟。REF = yout.Data(T + 1,2);更新输入和输出界限。为了一致性,使用%约束由Simulink仿真值输出。金宝appoptions.MVMin = uout.Data(T + 1,2);options.MVMax = uout.Data(T + 1,3);options.OutputMax = yout.Data(T + 1,3);%计算MPC控制动作。U = mpcmove(mpcobj,xmpc,Y,ref时,[],选项);%更新工厂状态和存储输入信号的值。X = A * X + B * U;UU = [UU;U'];结束
标绘出由两个Simulink和与变化的输入和输出范围沿着命令行模拟的输入和输出信号。金宝app
图副区(1,2,1)情节(0:TS:尖,[UU uout.Data(:,1)uout.Data(:,2)uout.Data(:,3)])网格标题(“输入”)图例(“命令行输入”,“金宝appSimulink中输入”,“下限”,...“上界”,“位置”,'东南') subplot(1,2,2) plot(0:Ts:,[YY . data (:,1) yout.Data(:,3)])“输出”)图例(“命令行输出”,模金宝app型输出的,“上界”,...“位置”,'东南')
命令行的结果和Simulink的模拟是相同的。金宝appMPC控制器保持指定的边界作为约束内的输入和输出信号在整个模拟改变。
bdclose (mdl)