主要内容

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

本例展示了如何使用自适应MPC控制器控制非线性连续搅拌釜反应器(CSTR)从低转化率过渡到高转化率。

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

关于连续搅拌釜反应器

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

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

CSTR模型的输入为:

$$ \begin{array {ll}
u_1 = CA_i \;& # 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}
y = x = CA \;& # 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控制器从一个切换到另一个。详情请参见非线性化学反应器的增益控制.当工厂模型有不同的顺序或时间延迟时使用这种方法。

(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的操作点搜索报告。(time - varying Components evaluate at time 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的标称值。

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

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

Sys = linear (plant_mdl, op_point);

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

Sys = Sys (:,2:3);

由于自适应MPC控制器只接受离散时间的对象模型,使对象模型离散化。

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

MPC控制器设计

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

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

plant.InputGroup.MeasuredDisturbances = 1;plant.InputGroup.ManipulatedVariables = 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

在控制器中设置标称值

mpcobj.Model.Nominal = struct(“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)。

mpcobj.Weights.OV = [0 1];

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

mpcobj.MV.RateMin = -2;mpcobj.MV.RateMax = 2;

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

打开Simulin金宝appk模型。

mdl =“ampc_cstr_linearization”;open_system (mdl)

模型包括三个部分:

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

  2. “Adaptive MPC Controller”块以自适应模式运行设计的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)

另请参阅

相关的话题