这个例子说明了如何设计一个多输入多输出非线性对象的模型预测控制器。该装置有3个操纵变量和2个测量输出。
要运行此示例,需要Simulink®和Si金宝appmulink控制设计™。
如果~ mpcchecktoolboxinstalled (“金宝app模型”) disp (运金宝app行这个示例需要Simulink(R)。)返回结束如果~ mpcchecktoolboxinstalled ('slcontrol') disp (运金宝app行这个示例需要Simulink控制设计(R)。)返回结束
非线性工厂在Simulink模型来实现金宝appmpc_nonlinmodel
和线性化在默认运行条件下使用线性化
从Simulink的控制设金宝app计命令。
工厂=线性化(“mpc_nonlinmodel”);
指定名称I / O变量。
plant.InputName = {质量流量的;“热流”;“压力”};工厂。OutputName = {“温度”;“水平”};工厂。InputUnit = {公斤/年代”“J / s”“爸爸”};工厂。OutputUnit = {'K''M'};
创建具有采样周期、预测和控制视野的控制器对象:
TS = 0.2;P = 5;m = 2时;mpcobj = MPC(植物中,Ts,P,M);
- - - >“权重。对象的“mpc”属性为空。假设默认的0.00000。- - - >“权重。对象的“mpc”属性为空。假设默认的0.10000。- - - >“权重。“mpc”对象的属性为空。假设默认的1.00000。
指定MV约束。
mpcobj。MV =结构(“最小值”{3; 2; 2},“马克斯”{3; 2; 2},“杀鼠灵”, {-1000; -1000; -1000});
定义的操纵和控制变量的权重。
mpcobj。重量=结构(“MV”(0 0 0),“MVRate”,(。1。1。1)'OV',[1 1]);
模拟运行。
mdl1 =“mpc_nonlinear”;open_system(mdl1)SIM(mdl1)
——>转换模型到离散时间。——>假设添加到测量输出通道#1的输出干扰是集成的白噪声。——>假设添加到测量输出通道#2的输出干扰是集成的白噪声。——>”模式。“mpc”对象的“Noise”属性为空。假设每个测量输出通道都有白噪声。
为了跟踪斜坡,三重积分器被定义为对两个输出的输出干扰模型。
特遣部队(outdistmodel = {1 1 0; 0}, {1 0 0 0, 1; 1, [1 0 0 0]});setoutdist (mpcobj“模型”, outdistmodel);
模拟运行。
mdl2 =“mpc_nonlinear_setoutdist”;open_system (mdl2) sim (mdl2)
——>转换模型到离散时间。——>”模式。“mpc”对象的“Noise”属性为空。假设每个测量输出通道都有白噪声。
当约束不活动时,MPC控制器的行为就像一个线性控制器。
mpcobj。MV = [];
将输出干扰模型重置为默认值
setoutdist (mpcobj“集成商”);
线性控制器LTI的输入为向量[ym;r],其中ym为被测输出向量,r为输出参考向量。
LTI = SS(mpcobj,“r”);
——>转换模型到离散时间。——>假设添加到测量输出通道#1的输出干扰是集成的白噪声。——>假设添加到测量输出通道#2的输出干扰是集成的白噪声。——>”模式。“mpc”对象的“Noise”属性为空。假设每个测量输出通道都有白噪声。
模拟运行。
参= (1,1);%输出引用步骤信号mdl3 =“mpc_nonlinear_ss”;open_system(mdl3)SIM(mdl3)
流('比较输出轨迹:||ympc-ylin|| = %g\n',范数(ympc-ylin));DISP(“MPC控制器和线性控制器产生相同的闭环轨迹。”);
比较输出轨迹:MPC控制器和线性控制器产生相同的闭环轨迹。
bdclose (mdl1) bdclose (mdl2) bdclose (mdl3)