主要内容

开关控制器基于最优成本

这个例子展示了如何使用“最优成本”外港的MPC控制器块之间切换多模型预测控制器的输出是离散值限制。

定义植物模型

线性植物模型如下:

% 1 2的输入和输出工厂= ss (tf ({1}, {[1 1.2 - 1], [1]}),“最小值”);%得到状态空间实现矩阵,用于仿真软件万博1manbetx[A, B, C, D] = ssdata(植物);%初始植物状态x0 = (0, 0, 0);

MPC控制器设计

指定输入和输出信号类型。

%的第一输入操作变量,第二个是测量干扰植物= setmpcsignals(植物,“MV”,1“医学博士”2);

设计两个MPC控制器和两个等式约束的操纵变量u = 1第一个和u = 1第二个。只有u在当前时间是量子化的。随后计算控制行动可以是任何值介于1和1。控制器使用滚动时域方法实际上这些值不去工厂。

t = 0.2;%采样时间p = 20;%预测地平线m = 10;%控制地平线mpc1 = mpc(植物、t、p、m);%首先MPC对象mpc2 = mpc(植物、t、p、m);%第二MPC对象%指定权重mpc1。重量=结构(“MV”0,“MVRate”3,“输出”1);%的重量mpc2。重量=结构(“MV”0,“MVRate”3,“输出”1);%的重量%指定约束%的操纵变量限制第一控制器:u = 1mpc1。MV =结构(“最小值”(1,1),“马克斯”,(1,1));%的操纵变量限制第二个控制器:u = 1mpc2。MV =结构(“最小值”(1,1),“马克斯”,(1,1));
- - >“权重。ManipulatedVariables”属性是空的。假设默认的0.00000。- - >“权重。ManipulatedVariablesRate”属性是空的。假设默认的0.10000。- - >“权重。OutputVariables”属性是空的。假设默认的1.00000。- - >“权重。ManipulatedVariables" property is empty. Assuming default 0.00000. -->The "Weights.ManipulatedVariablesRate" property is empty. Assuming default 0.10000. -->The "Weights.OutputVariables" property is empty. Assuming default 1.00000.

在仿真软件模拟®万博1manbetx

%指定的信号:Tstop = 40;%参考信号:阶跃变化在时间t = 10ref.time = 0: Ts (Tstop + p * Ts);ref.signals。值=双(ref.time > 10) ';%测量干扰信号:在时间t = 30阶跃变化md.time = ref.time;md.signals。值=双(md.time > 30) ';

关系操作符块比较了计算成本在地平线,和它的输出信号是用来选择的操纵变量控制器的最小成本在地平线上。

开放和模拟仿真软件模型:万博1manbetx

mdl =“mpc_optimalcost”;open_system (mdl);%开放模型(R万博1manbetx)模型sim (mdl Tstop);%开始模拟%开放模型范围万博1manbetxopen_system ([mdl' / MV ']);open_system ([mdl' /最优成本']);open_system ([mdl/ /引用/输出的]);
- - >将模型转换为离散时间。- - >输出假设扰动添加到测量输出通道# 1是集成的白噪声。- - >”模型。噪音”属性是空的。假设白噪声在每个测量输出。- - >将模型转换为离散时间。- - >输出假设扰动添加到测量输出通道# 1是集成的白噪声。- - >”模型。噪音”属性是空的。假设白噪声在每个测量输出。

注意:

  • 不时0到10,控制动作不断切换MPC1(1)和MPC2 (+ 1)。这是因为参考信号为0,它需要一个控制器输出0达到稳定状态,无法实现与MPC控制器。

  • 从时间10到30,MPC2控制输出(+ 1)选择因为参考信号变成了+ 1,它需要一个控制器输出+ 1达到稳定状态(植物获得1),这可以通过MPC2。

  • 从30到40,控制行动又开始切换。这是因为与测量扰动的存在(+ 1),MPC1导致稳态0和MPC2导致稳态+ 2,而参考信号仍然需要+ 1。

模拟使用MPCMOVE命令

使用mpcmove执行一步一步模拟和计算当前MPC控制作用:

%离散时间动态(广告、Bd、Cd, Dd) = ssdata (c2d(植物、Ts));%的模拟步骤Nsteps =圆(Tstop / Ts);

初始化矩阵存储仿真结果

YY = 0 (Nsteps + 1, - 1);RR = 0 (Nsteps + 1, - 1);UU = 0 (Nsteps + 1, - 1);成本= 0 (Nsteps + 1, - 1);x = x0;%初始植物状态处= mpcstate (mpc1);%处理控制器# 1的初始状态此时= mpcstate (mpc2);%处理控制器# 2的初始状态

开始仿真。

td = 0: Nsteps%建立信号v = md.signals.values (td + 1);r = ref.signals.values (td + 1);%植物方程:输出更新Cd * y = x + v Dd (:, 2) *;%设置选项只返回结构最优成本的解决方案选择= mpcmoveopt;选项。只有ComputeCost = true;%计算控制移动机汇两个控制器[u1, Info1] = mpcmove (mpc1处,y, r, v,选项);(u2, Info2) = mpcmove (mpc2,此时,y, r, v,选项);%比较结果最优成本和选择%对应最小的成本价值预测已露端倪如果Info1.Cost < = Info2。u = u1成本;成本= Info1.Cost;%更新内部MPC状态正确的值此时假定。工厂= xt1.Plant;此时假定。干扰= xt1.Disturbance;此时假定。LastMove = xt1.LastMove;其他的u = u2;成本= Info2.Cost;%更新内部MPC状态正确的值处。工厂= xt2.Plant;处。干扰= xt2.Disturbance;处。LastMove = xt2.LastMove;结束%存储工厂信息YY (td + 1) = y;RR (td + 1) = r;UU (td + 1) = u;成本(td + 1) =成本;%植物方程:状态更新广告* x = x + Bd (: 1) * u + Bd (:, 2) *;结束

阴谋的结果mpcmove与仿真结果比较仿真软件®:万博1manbetx

次要情节(131)图((0:Nsteps) * Ts, [YY, RR]);%的阴谋和参考信号的输出网格标题(“OV和参考”)次要情节(132)图((0:Nsteps) * Ts, UU);%的阴谋被控变量网格标题(“MV”)次要情节(133)图((0:Nsteps) * Ts、成本);%情节最优MPC价值函数网格标题(“最优成本”)

结果是一样的仿真软件模型范围所示。万博1manbetx

bdclose (mdl)

另请参阅

相关的话题