主要内容

基于连续线性化的非线性化学反应器自适应MPC控制

这个例子展示了如何使用自适应MPC控制器来控制非线性连续搅拌槽式反应器(CSTR)从低转化率过渡到高转化率的过程。

第一原理非线性植物模型是可用的,并被线性化在每个控制区间。该自适应MPC控制器利用线性化的植物模型更新其内部预测模型,成功地实现了非线性控制。

关于连续搅拌式反应器

连续搅拌釜式反应器(CSTR)是过程工业中常见的化工系统。CSTR系统的原理图如下:

这是一个夹套的非绝热罐式反应堆,在Seborg的书中有广泛的描述,“过程动力学和控制”,Wiley, 2004年出版。假设容器完全混合,发生一个一级放热不可逆反应a—> B。试剂A的入口流以恒定的容积率被注入罐中。产品流以相同的容积率连续流出,且液体密度恒定。因此反应液体的体积是恒定的。

CSTR模型的输入是:

$$ \begin{array} {ll}
& # 38;\textnormal{进口进料中A的浓度
流}[kgmol/m^3] \\
u_2 = T_i \;& # 38;\textnormal{进料流温度}[K] \\
u_3 = T_c \;& # 38;\textnormal{护套冷却剂温度}[K] \\
\end{array} $$ . \

而输出(y(t)),也是模型(x(t))的状态,为:

$$ \begin{array} {ll}
& # 38;\textnormal{A在反应堆槽中的浓度}[kgmol/m^3] \\
y_2 = x_2 = T \;& # 38;\textnormal{反应堆温度}[K] \\
\end{array} $$ . \

控制目标是维持试剂A的浓度,CA美元当反应器从低转化率过渡到高转化率时,该值随时间变化。冷却剂温度T_c美元被操纵的变量是否被MPC控制器用来跟踪基准并拒绝由进口进料流温度引起的测量扰动T_i美元.进料流浓度,CA_i美元,假设为常数。Simu金宝applink模型mpc_cstr_plant实现了非线性CSTR装置。

我们还假设无法直接测量浓度或不经常测量浓度,这在实践中是通常的情况。相反,我们使用“软测量”来估算基于温度测量和植物模型的CA。有关CSTR反应器和相关示例的更多信息,请参见装运箱模型

关于自适应模型预测控制

众所周知,CSTR动力学对反应堆温度变化具有很强的非线性,并且在从一种操作条件过渡到另一种操作条件时可能是开环不稳定的。在特定的工作条件下设计的单一MPC控制器不能在广泛的工作范围内提供令人满意的控制性能。

要用线性MPC控制技术控制非线性CSTR装置,您有以下几种选择:

  • 如果不能在运行时获得线性植物模型,首先需要在覆盖典型运行范围的不同操作条件下离线获得几个线性植物模型。接下来你可以选择以下两种方法之一来实现MPC控制策略:

(1)离线设计多个MPC控制器,每个设备模型一个。在运行时,使用多个MPC控制器块,根据所需的调度策略将MPC控制器从一个切换到另一个。有关更多细节,请参见非线性化学反应器的增益调度MPC控制.当工厂模型具有不同的顺序或时间延迟时,使用此方法。

(2)在初始工作点离线设计一个MPC控制器。在运行时,使用自适应MPC控制器块(在每个控制间隔更新预测模型)和线性参数变化(LPV)系统块(为线性工厂模型提供调度策略)。看到基于线性变参数系统的非线性化学反应器自适应MPC控制了解更多细节。当所有的工厂模型具有相同的顺序和时间延迟时,使用此方法。

  • 如果在运行时可以获得线性植物模型,则应该使用Adaptive MPC Controller块来实现非线性控制。在线获取线性植物模型有两种典型方法:

(1)如本例所示,使用连续线性化。当非线性工厂模型可用并且可以在运行时线性化时,使用此方法。

(2)在闭环状态下,利用在线估计方法辨识线性模型。看到基于在线模型估计的非线性化学反应器自适应MPC控制了解更多细节。当线性植物模型无法从LPV系统或连续线性化中获得时,使用此方法。

获得初始工况下的线性植物模型

要实现自适应MPC控制器,首先需要在初始工作点设计一个MPC控制器,其中CAi为10 kgmol/m^3, Ti和Tc为298.15 K。

创建操作点规范。

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

在初始条件下,饲料浓度是已知的。

op.Inputs(1)。U = 10;op.Inputs(1)。已知=真实;

在初始条件下,进料温度是已知的。

op.Inputs(2)。U = 298.15;op.Inputs(2)。已知=真实;

在初始条件下,冷却剂温度是已知的。

op.Inputs(3)。U = 298.15;op.Inputs(3)。已知=真实;

计算初始条件。

[op_point, op_report] = findop(plant_mdl,op);
操作点搜索报告:--------------------------------- opreport = mpc_cstr_plant模型的操作点搜索报告。(时变组分在t=0时的评估值)成功满足作业点规格。州 : ---------- 最小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输出:---------- 最小y最大  ________ ________ ________ ( 1) mpc_cstr_plant / T 311.2639负无穷到正无穷(2)mpc_cstr_plant / CA负8.5698正无穷

得到x, y和u的标称值。

x = [op_report.States(1).x;op_report.States(2).x];y0 = [op_report.Outputs(1).y;u0 = [op_report.Inputs(1).u;op_report.Inputs(2).u;op_report.Inputs(3).u];

得到初始条件下的线性植物模型。

Sys =线性化(plant_mdl, op_point);

删除第一个植物输入CAi,因为MPC不使用它。

Sys = Sys (:,2:3);

由于自适应MPC控制器只接受离散时间的植物模型,因此对植物模型进行离散化处理。

Ts = 0.5;plant = c2d(sys,Ts);

MPC控制器设计

在初始运行条件下设计MPC。在自适应模式下运行时,工厂模型将在运行时更新。

指定MPC中使用的信号类型。

plant. inputgroup . measureddisorders = 1;plant. inputgroup . manipulation variables = 2;plant.OutputGroup.Measured = 1;plant.OutputGroup.Unmeasured = 2;工厂。InputName = {“透明国际”“Tc”};工厂。OutputName = {“T”“CA”};

创建MPC控制器,默认预测和控制范围

Mpcobj = mpc(植物);
——>“PredictionHorizon”属性为空。假设默认为10。“ControlHorizon”属性为空。假设默认值为2。- - - >“权重。“操纵变量”属性为空。假设默认值为0.00000。- - - >“权重。“操纵变量率”属性为空。假设默认为0.10000。 -->The "Weights.OutputVariables" property is empty. Assuming default 1.00000. for output(s) y1 and zero weight for output(s) y2

在控制器中设置标称值

mpcoj . model .名义=结构(“X”x0,“U”情况(2:3),“Y”, y0,“DX”, [0 0]);

设置刻度因子,因为工厂输入和输出信号有不同的数量级

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

让反应堆温度T浮动(即没有设定点跟踪误差惩罚),因为目标是控制反应堆浓度CA,只有一个可操作变量(冷却剂温度Tc)可用。

mpcoj . weights . ov = [0 1];

由于冷却剂夹套的物理约束,Tc的变化速率以每分钟的度为限。

mpcoj . mv . ratemin = -2;mpcoj . mv . ratemax = 2;

在Simulink (R)中实现CSTR装置的自适应MPC控制金宝app

打开Simulin金宝appk模型。

mdl =“ampc_cstr_linearization”;open_system (mdl)

该模型包括三个部分:

  1. “CSTR”块实现了非线性工厂模型。

  2. “自适应MPC控制器”块以自适应模式运行设计的MPC控制器。

  3. MATLAB函数块中的“连续线性器”块,它对第一原理非线性CSTR植物进行线性化,并在每个控制区间为“自适应MPC控制器”块提供线性植物模型。双击该块以查看MATLAB代码。您可以使用该块作为模板,为您自己的应用程序开发适当的线性化器。

注意,新的线性植物模型必须是一个离散时间状态空间系统,具有与原植物模型相同的阶数和采样时间。如果设备存在时滞,也必须与原时滞相同,吸收到状态空间模型中。

验证自适应MPC控制性能

控制器的性能验证了设定点跟踪和干扰抑制。

  • 跟踪:反应器浓度CA设定值从原来的8.57(低转化率)转变为2(高转化率)kgmol/m^3。在过渡期间,植物首先变得不稳定,然后又恢复稳定(见极点图)。

  • 调节:进料温度Ti有缓慢的波动,表现为振幅为5度的正弦波,这是一个测量到的扰动馈送给MPC控制器。

模拟闭环性能。

open_system ([mdl/浓度的(mdl) open_system (/温度的(mdl) open_system (' /杆']) sim (mdl)
假设在测量的输出通道1中添加的输出干扰是集成白噪声。——>”模式。“噪音”属性为空。假设每个测量输出都有白噪声。

bdclose (mdl)

跟踪和调节性能令人满意。然而,在实际反应堆的应用中,模型的不准确性和未测量的干扰可能导致较差的跟踪比这里显示的。可以使用额外的模拟来研究这些影响。

与非自适应MPC控制相比

自适应MPC比非自适应MPC具有更好的控制性能。为了说明这一点,同一MPC控制器在非自适应模式下运行的控制性能如下图所示。该控制器由MPC控制器块实现。

mdl1 =“ampc_cstr_no_linearization”;open_system mdl1 open_system ([mdl1/浓度的]) open_system ([mdl1/温度的]) sim (mdl1)

正如预期的那样,非自适应MPC的跟踪和调节性能是不可接受的。

bdclose (mdl1)

另请参阅

相关的话题