在混合过程中使用自定义约束
这个例子展示了如何设计一个混合的MPC控制器过程使用自定义输入/输出线性约束。
混合过程
连续混合过程结合了三个饲料混合容器生产混合所需的浓度。的无量纲控制方程是:
在哪里
混合物的体积库存在容器中。
是饲料的体积流率
。
的体积流率的混合退出容器(来自下游的需求)。
成分的浓度吗
在饲料
。
成分的浓度吗
在混合。
是时候
在这个例子中,有三个提要,= 1,2和3和两个组分,
= 1和2。
控制目标是维持在设定值以下值:
两组分混合的浓度(质量目标)
在容器的体积混合库存(安全目标)
下游需求的挑战是,在饲料成分的浓度,
,可以从名义操作点。
混合物的库存,在混合组分的浓度
测量,但
是无边无际的。
在名义操作条件:
饲料1
,
和
饲料2
,
和
饲料3
,
和
此外,工厂只允许操作的总饲料流量进入混合室,提要,个人流速2,
,和饲料3,
。换句话说,饲料1的流量,
,不能直接操纵。然而,
间接影响其他三个流量如下:
每个提要有限可用性由上游工序:
定义线性植物模型
混合过程温和非线性,考虑到库存卷进入浓度方程,但是你可以用线性模型近似名义稳定状态。这种方法是相当准确的,除非无边无际的进料浓度变化。如果变化足够大,非线性过程的稳态增益变化的信号,和闭环系统会变得不稳定。
指定的名义流量三个输入流和输出流,或需求。在名义操作条件,输出流量等于输入流量的总和。
饲料= (1.6,0.4,0);F_out =总和(饲料);
定义输入提要的名义成分浓度,在哪里cin (i, j)
代表成分的浓度j
在饲料我
。
cin = (0.7 - 0.3, 0.2 - 0.8, 0.5 - 0.4);
定义名义成分浓度混合。
cout = * cin / F_out饲料;
的名义体积混合库存是2
V = 2;
创建一个与饲料流状态空间模型F1
,F2
,F3
作为输入
一个= [0 0 0;0 -F_out / V 0;0 0 -F_out / V];% 3州V, c1和c2Bu = [1 1 1;cin (: 1)“/ V;cin (:, 2) / V);% 3的输入是F1, F2, F3
以来,如上所述,植物总数的允许操作进给速率以及饲料2和3(没有直接控制饲料1),更改MV定义从[F1, F2, F3] [F_in F2、F3]使用方程F1 = F_in - F2 - F3
布鲁里溃疡Bu =[(: 1),但(:,2)布鲁里溃疡(:1),但(:,3)布鲁里溃疡(:1)];% 3输入F_in、F2、F3
添加测量干扰,融合需求,作为第四模型输入。
Bv = [1;cout ' / V);B = (Bu Bv);% 4输入F_in, F2、F3 F_out
定义所有的州是可衡量的和没有直接引线。
C =眼(3);D = 0 (3、4);
构造线性植物模型。
模型= ss (A, B, C, D);模型。InputName = {“F_in”,“₂”,“F_3”,“F_out”};Model.InputGroup。MV = 1:3;Model.InputGroup。MD = 4;模型。OutputName = {“V”,“c₁”,“c₂”};
创建MPC控制器
指定样品时间,预测地平线,地平线和控制的控制器。
t = 0.1;p = 10;m = 3;
创建一个控制器。
mpcobj = mpc(模型、t、p、m);
- - >“权重。ManipulatedVariables”是空的。假设默认的0.00000。- - >“权重。ManipulatedVariablesRate”是空的。假设默认的0.10000。- - >“权重。OutputVariables”是空的。假设默认的1.00000。
输出是库存数量,y (1)
组分浓度,y (2)
和y (3)
。对所有输出指定名义值。
mpcobj.Model.Nominal。Y = [V cout (1) cout (2)];
指定的名义值操纵变量,u (1)
,u (2)
和你(3)
测量的干扰,u (4)
。
mpcobj.Model.Nominal。U =[(提要)提要和提要(2)(3)F_out);
指定输出调整权重。更加关注控制两个constituenta的浓度,为第二和第三输出使用更大的权重。
mpcobj.Weights。OV = [1 5 5];
指定硬边界(物理限制)饲料2和3,操纵变量。
mpcobj.MV (2)。最小值= 0;mpcobj.MV (2)。Max = 1.6;mpcobj.MV (3)。最小值= 0;mpcobj.MV (3)。Max = 1.6;
指定混合约束
我们不能直接指定给1的上下界限流量和其他人一样,因为它不是一个MV。相反,我们必须执行下列不等式约束作为自定义输入/输出约束在MPC。
指定该硬约束形式。
E = [1 1 1;1 1 1];F = [0 0 0;0 0 0];g = (0, 1.6);
设置自定义约束MPC控制器。
setconstraint (mpcobj, E, F, g)
在仿真软件模拟模型金宝app
仿真软件金宝app模型包括一个混合过程的非线性模型和一个无边无际的干扰成分1饲料的浓度。
的需求
,建模为测量的干扰。操作员可以改变下游需求价值,和信号流程和控制器。
该模型模拟了下面的场景:
在
,这个过程是在名义操作点操作。
在
,需求减少
来
。
在
,有一个饲料1中成分的浓度变化,从[0.7 - 0.3][0.6 - 0.4]。
开放和模拟仿真软件模型。金宝app
mdl =“mpc_blendingprocess”;open_system (mdl) sim (mdl)%开放范围块窗户open_system ([mdl' /输入'(mdl) open_system (/输出的])
- - >将模型转换为离散时间。- - >输出假设扰动添加到# 2集成白噪声测量输出。- - >输出假设扰动添加到测量输出# 3是集成的白噪声。假设没有干扰# 1添加到测量输出。- - >”模型。噪音”是空的。假设白噪声在每个测量输出。
在仿真:
0时刻,核电站运营稳步的名义条件。
1时,需求减少了10%,控制器保持库存的定位点(V = 2)。
2时,有一个无边无际的饲料1中成分的浓度的变化。这个扰动会导致预测误差和干扰的混合浓度。
线性MPC控制器恢复得很好,单词查找树来驱动混合浓度回到它的定位点。然而,在饲料1达到上限(f = 1.6)强制执行自定义输入/输出约束,MPC再也不能保持零稳态误差由于饲料1饱和。约束条件包括,控制器的系统的物理限制。
bdclose (mdl)