主要内容

Gain-Scheduled MPC控制非线性化学反应器

这个例子展示了如何使用多个MPC控制器来控制非线性连续搅拌釜反应器(装运箱)转换从一个低转化率高转化率。

多个MPC控制器设计在不同的操作条件,然后实现多块MPC控制器的仿真软件。金宝app在运行时,使用调度信号切换控制器。

连续搅拌釜反应器

连续搅拌釜反应器(装运箱)是一种常见的化学系统过程中产业。装运箱系统的原理是:

这个系统是一个夹套非绝热的釜式反应器广泛描述[1]。这艘船被认为是完全混合,和一个一阶放热、不可逆的反应,——> B,发生。进口试剂是美联储的流槽以恒定容积率。产品流出口连续在同一容积率,和液体密度是常数。因此,反应液体的体积是恒定的。

装运箱模型的输入:

数组$ $ \开始{}{你}& # xA; u_1 = CA_i \;& # 38;\ textnormal{浓度的进口饲料# xA;流}[kgmol / m ^ 3] \ \ & # xA; u_2 = T_i \;& # 38;\ textnormal{进口原料流温度}[K] \ \ & # xA; u_3 = T_c \;& # 38;\ textnormal{夹克冷却剂温度}[K] \ \ & # xA; \{数组}$ $

模型的输出,这也是该模型,包括:

数组$ $ \开始{}{你}& # xA; y_1 = x_1 = CA \;& # 38;\ textnormal {A的浓度在反应堆槽}[kgmol / m ^ 3] \ \ & # xA; y_2 = x_2 = T \;& # 38;\ textnormal{反应堆温度}[K] \ \ & # xA; \{数组}$ $

控制目标是维持试剂的浓度,CA美元在其预期的定位点,从而改变随着时间的推移,当反应堆转换从一个低转化率较高的转化率。冷却液温度T_c美元是被操纵的变量使用的MPC控制器跟踪参考。进口原料流浓度和温度都假定为常数。仿真软件金宝app模型mpc_cstr_plant实现了非线性装运箱厂。

关于Gain-Scheduled模型预测控制

众所周知,装运箱动态强烈非线性对反应堆温度变化,可以开环不稳定在过渡到另一个从一个操作条件。单个MPC控制器设计在特定的操作条件不能令人满意的控制性能在一个宽的操作范围。

与线性控制非线性装运箱厂MPC控制技术,你有几个选择:

  • 如果无法获得线性植物模型在运行时,首先需要获得一些线性植物模型离线在不同的操作条件,典型的操作范围。接下来,你可以选择两种方法来实现货币政策委员会的控制策略:

(1)设计几个MPC控制器脱机,每个工厂模型。在运行时,使用多块MPC控制器,开关控制器之间基于所需的调度策略,在这个例子中讨论。使用这种方法时,植物模型有不同的订单或时间延迟。

(2)设计一个MPC控制器脱机名义操作点。在运行时,使用自适应MPC控制器块连同一个线性变参数系统(LPV系统块)。自适应MPC控制器块更新预测模型在每个控制间隔,和LPV系统块供应一个线性模型基于调度策略。更多细节,请参阅自适应MPC控制使用线性变参数系统的非线性化学反应器。使用这种方法,当所有的植物模型有相同的顺序和时间延迟。

  • 如果一个线性植物模型可以获得在运行时,您应该使用自适应MPC控制器实现非线性控制块。有两种典型的方式来获得线性植物模型在线:

(1)使用逐次线性化。更多细节,请参阅自适应MPC控制使用逐次线性化的非线性化学反应器。使用这种方法,当一个非线性植物模型是可用的,并且可以在运行时线性化。

(2)使用在线估计来确定线性模型循环时关闭。更多细节,请参阅自适应MPC控制的非线性化学反应器使用在线估计模型。使用这种方法,当一个线性植物模型不能获得LPV系统或逐次线性化。

获得线性植物模型在初始运行条件

这个例子中,运行仿真软件®和仿真软件控制设金宝app计™软件是必需的。

如果~ mpcchecktoolboxinstalled (“金宝app模型”)disp (仿金宝app真软件需要运行这个例子。)返回结束如果~ mpcchecktoolboxinstalled (“slcontrol”)disp (仿金宝app真软件控制设计需要运行这个例子。)返回结束

首先,获得一个线性植物模型在初始运行条件,是10 kgmol / m ^ 3,两个“透明国际”Tc298.15 K。生成模型的线性状态空间系统模型,使用等功能金宝appoperspec,findop,线性化从仿真软件金宝app控制设计。

创建操作规范。

plant_mdl =“mpc_cstr_plant”;op = operspec (plant_mdl);

指定初始条件已知的进料浓度。

op.Inputs (1)。u = 10;op.Inputs (1)。知道= true;

指定初始条件已知的进料温度。

op.Inputs (2)。u = 298.15;op.Inputs (2)。知道= true;

指定初始条件已知的冷却液温度。

op.Inputs (3)。u = 298.15;op.Inputs (3)。知道= true;

计算初始条件。

[op_point, op_report] = findop (plant_mdl, op);
操作点搜索报告:- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - opreport mpc_cstr_plant =操作点搜索报告模型。(时变组件评估在时间t = 0)操作点规范成功实现。状态:- - - - - - - - - - - Min x马克斯dxMin dx dxMax………………………………(1) mpc_cstr_plant /装运箱/集成商0 311.2639正0 8.1176 e-11 0 (2) mpc_cstr_plant /装运箱/ Integrator1 0 8.5698正0 -6.8709 e-12 0输入:- - - - - - - - - - -看上去最小u最大长得一样(1)mpc_cstr_plant / CAi 10 10 10 (2) mpc_cstr_plant / Ti 298.15 298.15 298.15 (3) mpc_cstr_plant / Tc 298.15 298.15 298.15输出:- - - - - - - - - - - Min y马克斯说______ (1)mpc_cstr_plant / T 311.2639负无穷到正无穷(2)mpc_cstr_plant / CA负8.5698正无穷

获得的名义值x,y,u

x0 = [op_report.States(1)方式;op_report.States(2)方式);y0 = [op_report.Outputs (1) .y;op_report.Outputs (2) .y];情况= [op_report.Inputs (1) .u;op_report.Inputs (2) .u;op_report.Inputs (3) .u];

获得一个线性模型的初始条件。

工厂=线性化(plant_mdl op_point);

验证线性模型是开环稳定的条件。

eig(植物)
ans = -0.5223 - -0.8952

设计MPC控制器初始运行条件

指定信号类型用于MPC。假设反应堆温度和浓度都是可衡量的。

plant.InputGroup。UnmeasuredDisturbances = (1 - 2);plant.InputGroup。ManipulatedVariables = 3;plant.OutputGroup。测量= (1 - 2);工厂。InputName = {“蔡”,“透明国际”,“Tc”};工厂。OutputName = {“T”,“CA”};

创建MPC控制器与指定的样品时间和违约预测和控制的视野。

t = 0.5;mpcobj = mpc(植物、Ts);
- - >“PredictionHorizon”属性是空的。假设默认10。- - >“ControlHorizon”属性是空的。假设默认2。- - >“权重。ManipulatedVariables”属性是空的。假设默认的0.00000。- - >“权重。ManipulatedVariablesRate”属性是空的。假设默认的0.10000。 -->The "Weights.OutputVariables" property is empty. Assuming default 1.00000. for output(s) y1 and zero weight for output(s) y2

在控制器中设置名义值。无边无际的干扰的名义值必须是零。

mpcobj.Model。名义=结构(“X”x0,“U”,(0,0,情况(3)),“Y”,y0,“DX”[0 0]);

由于植物输入和输出信号有不同的数量级,指定比例因子。

Uscale = (10、30、50);Yscale = (50; 10);mpcobj.DV (1)。ScaleFactor = Uscale (1);mpcobj.DV (2)。ScaleFactor = Uscale (2);mpcobj.MV。ScaleFactor = Uscale (3);mpcobj.OV (1)。ScaleFactor = Yscale (1); mpcobj.OV(2).ScaleFactor = Yscale(2);

指定的目标跟踪是一个过渡的反应堆的浓度。状态估计中使用的反应堆温度测量,但控制器不会试图直接调节它。它将根据需要调节不同浓度。因此,设置它的MPC重量为零。

mpcobj.Weights。OV = [0 1];

植物输入1和2是不可测量的干扰。默认情况下,控制器是集成在这些输入白噪声与单位大小在配置状态估计量。试着提高状态估计信噪比的因素10提高抗干扰性能。

Dist = ss (getindist (mpcobj));Dist.B =眼(2)* 10;setindist (mpcobj“模型”、距离);
- - >将模型转换为离散时间。- - >”模型。干扰”属性是空的:假设无边无际的输入扰动# 1是集成的白噪声。假设无节制的输入扰动# 2是集成的白噪声。假设没有干扰测量输出通道# 2。假设没有干扰测量输出通道# 1。- - >”模型。噪音”属性是空的。假设白噪声在每个测量输出。

保持所有其他MPC参数为默认值。

测试控制器与进料浓度的扰动步

mpc_cstr_single金宝app仿真软件模型包含装运箱厂和MPC控制器反馈配置。

mpc_mdl =“mpc_cstr_single”;open_system (mpc_mdl)

注意,MPC控制器块被配置为向前看(预览)选点改变未来;即预测选点过渡。这通常可以提高选点跟踪。

定义一个常量定位点的输出。

CSTR_Setpoints。时间= [0;60);CSTR_Setpoints.signals。值= (y0 y0) ';

测试应对进料浓度增加5%。

set_param ([mpc_mdl' /进料浓度的),“价值”,“10.5”);

情节设置尺度和模拟响应。

open_system ([mpc_mdl' /测量'])open_system ([mpc_mdl/冷却液温度的])set_param ([mpc_mdl' /测量'),“Ymin”,305 ~ 8,“Ymax”,“320 ~ 9”)set_param ([mpc_mdl/冷却液温度的),“Ymin”,“295”,“Ymax”,“305”)sim (mpc_mdl, 10)
- - >将模型转换为离散时间。假设没有干扰测量输出通道# 2。假设没有干扰测量输出通道# 1。- - >”模型。噪音”属性是空的。假设白噪声在每个测量输出。

闭环反应令人满意。

模拟设计MPC控制器使用完整的过渡

首先,定义所需的选点过渡。经过10分钟的热身时间,坡道选点浓度下降的速度每分钟0.25,直到达到2.0 kmol / m ^ 3。

CSTR_Setpoints。时间= [0 10 39]';CSTR_Setpoints.signals。值= [y0(1) *(31日1),[y0 (2), y0 (2), (y0 (2): -0.25 3:2)”; 2; 2]];

删除以前使用的进料浓度增加5%。

set_param ([mpc_mdl' /进料浓度的),“价值”,“十”)

情节设置尺度和模拟响应。

set_param ([mpc_mdl' /测量'),“Ymin”,“300 ~ 0”,“Ymax”,400 ~ 10)set_param ([mpc_mdl/冷却液温度的),“Ymin”,“240”,“Ymax”,“360”)

模拟模型。

sim (mpc_mdl 60)

闭环反应是不可接受的。可以提高性能的全面过渡如果其他MPC控制器设计沿着过渡路径在不同的操作条件。在接下来的两个部分,你设计MPC控制器的中间和最终的过渡阶段。

MPC控制器设计中间操作条件

创建操作规范。

op = operspec (plant_mdl);

指定提要浓度。

op.Inputs (1)。u = 10;op.Inputs (1)。知道= true;

指定提要温度。

op.Inputs (2)。u = 298.15;op.Inputs (2)。知道= true;

指定反应堆浓度。

op.Outputs (2)。y = 5.5;op.Outputs (2)。知道= true;

发现稳态操作条件。

[op_point, op_report] = findop (plant_mdl, op);%获得名义值| | x, y | |和| |。x0 = [op_report.States(1)方式;op_report.States(2)方式);y0 = [op_report.Outputs (1) .y;op_report.Outputs (2) .y];情况= [op_report.Inputs (1) .u;op_report.Inputs (2) .u;op_report.Inputs (3) .u];
操作点搜索报告:- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - opreport mpc_cstr_plant =操作点搜索报告模型。(时变组件评估在时间t = 0)操作点规范成功实现。状态:- - - - - - - - - - - Min x马克斯dxMin dx dxMax………………………………(1) mpc_cstr_plant /装运箱/集成商0 339.4282正0 3.416 e-08 0 (2) mpc_cstr_plant /装运箱/ Integrator1 0 5.5正0 -2.8663 e-09 0输入:- - - - - - - - - - -最小u最大累积_________ (1)mpc_cstr_plant / CAi 10 10 10 (2) mpc_cstr_plant / Ti 298.15 298.15 298.15 298.222 (3) mpc_cstr_plant / Tc负无穷到正无穷输出:- - - - - - - - - - - Min y马克斯说______ (1)mpc_cstr_plant / T 339.4282负无穷到正无穷(2)mpc_cstr_plant / CA 5.5 5.5 5.5

获得一个线性模型的初始条件。

plant_intermediate =线性化(plant_mdl op_point);

验证线性模型是开环不稳定的条件。

eig (plant_intermediate)
ans = 0.4941 - -0.8357

指定信号类型用于MPC。假设反应堆温度和浓度都是可衡量的。

plant_intermediate.InputGroup。UnmeasuredDisturbances = (1 - 2);plant_intermediate.InputGroup。ManipulatedVariables = 3;plant_intermediate.OutputGroup。测量= (1 - 2);plant_intermediate。InputName = {“蔡”,“透明国际”,“Tc”};plant_intermediate。OutputName = {“T”,“CA”};

创建MPC控制器。

mpcobj_intermediate = mpc (plant_intermediate, Ts);
- - >“PredictionHorizon”属性是空的。假设默认10。- - >“ControlHorizon”属性是空的。假设默认2。- - >“权重。ManipulatedVariables”属性是空的。假设默认的0.00000。- - >“权重。ManipulatedVariablesRate”属性是空的。假设默认的0.10000。 -->The "Weights.OutputVariables" property is empty. Assuming default 1.00000. for output(s) y1 and zero weight for output(s) y2

设置名义值,扩展因素以及权重的控制器。

mpcobj_intermediate.Model。名义=结构(“X”x0,“U”,(0,0,情况(3)),“Y”,y0,“DX”[0 0]);Uscale = (10、30、50);Yscale = (50; 10);mpcobj_intermediate.DV (1)。ScaleFactor = Uscale (1);mpcobj_intermediate.DV (2)。ScaleFactor = Uscale (2);mpcobj_intermediate.MV。ScaleFactor = Uscale (3);mpcobj_intermediate.OV (1)。ScaleFactor = Yscale (1);mpcobj_intermediate.OV (2)。ScaleFactor = Yscale (2);mpcobj_intermediate.Weights。OV = [0 1]; Dist = ss(getindist(mpcobj_intermediate)); Dist.B = eye(2)*10; setindist(mpcobj_intermediate,“模型”、距离);
- - >将模型转换为离散时间。- - >”模型。干扰”属性是空的:假设无边无际的输入扰动# 1是集成的白噪声。假设无节制的输入扰动# 2是集成的白噪声。假设没有干扰测量输出通道# 2。假设没有干扰测量输出通道# 1。- - >”模型。噪音”属性是空的。假设白噪声在每个测量输出。

MPC控制器设计最终的操作条件

创建操作规范。

op = operspec (plant_mdl);

指定提要浓度。

op.Inputs (1)。u = 10;op.Inputs (1)。知道= true;

指定提要温度。

op.Inputs (2)。u = 298.15;op.Inputs (2)。知道= true;

指定反应堆浓度。

op.Outputs (2)。y = 2;op.Outputs (2)。知道= true;

发现稳态操作条件。

[op_point, op_report] = findop (plant_mdl, op);%获得名义值| | x, y | |和| |。x0 = [op_report.States(1)方式;op_report.States(2)方式);y0 = [op_report.Outputs (1) .y;op_report.Outputs (2) .y];情况= [op_report.Inputs (1) .u;op_report.Inputs (2) .u;op_report.Inputs (3) .u];
操作点搜索报告:- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - opreport mpc_cstr_plant =操作点搜索报告模型。(时变组件评估在时间t = 0)操作点规范成功实现。状态:- - - - - - - - - - - Min x马克斯dxMin dx dxMax………………………………(1) mpc_cstr_plant /装运箱/集成商0 373.1311正0 5.5692 e-11 0 (2) mpc_cstr_plant /装运箱/ Integrator1 0 2正0 -4.5972 e-12 0输入:- - - - - - - - - - - Min u马克斯说______ (1)mpc_cstr_plant / CAi 10 10 10 (2) mpc_cstr_plant / Ti 298.15 298.15 298.15 305.2015 (3) mpc_cstr_plant / Tc负无穷到正无穷输出:- - - - - - - - - - - Min y马克斯说______ (1)mpc_cstr_plant / T 373.1311负无穷到正无穷(2)mpc_cstr_plant / CA 2 2 2

获得一个线性模型的初始条件。

plant_final =线性化(plant_mdl op_point);

验证线性模型再次开环稳定在这个条件。

eig (plant_final)
答我-1.1077 - 1.0901 = -1.1077 + 1.0901

指定信号类型用于MPC。假设反应堆温度和浓度都是可衡量的。

plant_final.InputGroup。UnmeasuredDisturbances = (1 - 2);plant_final.InputGroup。ManipulatedVariables = 3;plant_final.OutputGroup。测量= (1 - 2);plant_final。InputName = {“蔡”,“透明国际”,“Tc”};plant_final。OutputName = {“T”,“CA”};

创建MPC控制器。

mpcobj_final = mpc (plant_final, Ts);
- - >“PredictionHorizon”属性是空的。假设默认10。- - >“ControlHorizon”属性是空的。假设默认2。- - >“权重。ManipulatedVariables”属性是空的。假设默认的0.00000。- - >“权重。ManipulatedVariablesRate”属性是空的。假设默认的0.10000。 -->The "Weights.OutputVariables" property is empty. Assuming default 1.00000. for output(s) y1 and zero weight for output(s) y2

设置名义值,扩展因素以及权重的控制器。

mpcobj_final.Model。名义=结构(“X”x0,“U”,(0,0,情况(3)),“Y”,y0,“DX”[0 0]);Uscale = (10、30、50);Yscale = (50; 10);mpcobj_final.DV (1)。ScaleFactor = Uscale (1);mpcobj_final.DV (2)。ScaleFactor = Uscale (2);mpcobj_final.MV。ScaleFactor = Uscale (3);mpcobj_final.OV (1)。ScaleFactor = Yscale(1); mpcobj_final.OV(2).ScaleFactor = Yscale(2); mpcobj_final.Weights.OV = [0 1]; Dist = ss(getindist(mpcobj_final)); Dist.B = eye(2)*10; setindist(mpcobj_final,“模型”、距离);
- - >将模型转换为离散时间。- - >”模型。干扰”属性是空的:假设无边无际的输入扰动# 1是集成的白噪声。假设无节制的输入扰动# 2是集成的白噪声。假设没有干扰测量输出通道# 2。假设没有干扰测量输出通道# 1。- - >”模型。噪音”属性是空的。假设白噪声在每个测量输出。

控制装运箱工厂使用多个MPC控制器

下面的模型使用了多个MPC控制器块来实现三个MPC控制器操作范围。

mmpc_mdl =“mpc_cstr_multiple”;open_system (mmpc_mdl)

模型配置为使用三个控制器在一个序列:mpcobj,mpcobj_intermediate,mpcobj_final

open_system ([mmpc_mdl' /多个MPC控制器”])

此外,两个开关指定何时从一个控制器切换到另一个。规则是:

  1. 如果装运箱浓度> = 8日使用mpcobj

  2. 如果3 < =装运箱浓度< 8日使用mpcobj_intermediate

  3. 如果装运箱浓度< 3,使用mpcobj_final

模拟使用多个MPC控制器。

open_system ([mmpc_mdl' /测量'])open_system ([mmpc_mdl' / MV '])sim (mmpc_mdl)
- - >将模型转换为离散时间。假设没有干扰测量输出通道# 2。假设没有干扰测量输出通道# 1。- - >”模型。噪音”属性是空的。假设白噪声在每个测量输出。- - >将模型转换为离散时间。假设没有干扰测量输出通道# 2。假设没有干扰测量输出通道# 1。- - >”模型。Noise" property is empty. Assuming white noise on each measured output.

现在控制的过渡。主要的改进是通过开环不稳定的过渡地区。的情节转换信号显示控制器转换发生时。MV字符改变这些时候因为新引入的动态特性发生变化的预测模型。

引用

[1]Seborg, d, E。,T. F. Edgar, and D. A. Mellichamp,过程动力学和控制2004年,第二版,威利。

bdclose (plant_mdl) bdclose (mpc_mdl) bdclose (mmpc_mdl)

另请参阅

|

相关的话题