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

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

第一原则非线性工厂模型可用,并且在每个控制间隔被线性化。自适应MPC控制器然后更新其内部预测模型与所述线性化的工厂模型和成功地实现非线性控制。

关于连续搅拌釜式反应器

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

这是一个有护套的非绝热槽式反应堆,在Seborg的书中有详细的描述,“过程动力学和控制”,由Wiley出版,2004年。假设容器是完全混合的,并且发生了一个单一的一阶放热不可逆反应,a—> B。试剂A的进口流以恒定的容积率输入到容器中。产品流以相同的容积率和液体密度连续存在。因此,反应液体的体积是恒定的。

CSTR模型的输入为:

$$ \begin{array} {ll}
u_1 = CA_i \;& # 38;[kgmol/m^3] \\
u_2 = T_i \;& # 38;{进料流温度}[K] \\
u_3 = T_c \;& # 38;textnormal{导管架冷却剂温度}[K] \\&#; end{array} $$

输出(y(t)),即模型(x(t))的状态,为:

$$ \begin{array} {ll}
y_1 = x_1 = CA \;& # 38;反应堆槽内A浓度[kgmol/m^3] \\;y_2 = x_2 = T \;& # 38;\textnormal{Reactor temperature} [K] \\
\end{array} $$

控制目标是保持试剂A的浓度,CA美元在其期望的设定点,其随时间而改变时,从低转换率,以高转化率的反应器转换。冷却剂温度$ T_C $是所使用的MPC控制器跟踪参考以及拒绝来自所述入口进料流的温度所引起的测量的干扰的受操纵变量T_i美元。入口进料流浓度,CA_i美元为常数。仿真软件金宝app模型mpc_cstr_plant实现了非线性CSTR工厂。

我们还假设,直接测量浓度是不可用的或罕见的,这是在实践中常见的情况。相反,我们使用“软传感器”根据温度测量和植物模型来估计CA。

关于自适应模型预测控制

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

为了控制线性MPC控制技术,非线性CSTR工厂,你有几种选择:

  • 如果在运行时无法获得线性工厂模型,则首先需要离线获取多个不同运行条件下的线性工厂模型,这些模型覆盖典型的运行范围。接下来,你可以选择两种方法之一来实现MPC控制策略:

(1)设计几个MPC控制器脱机,每个设备模型。在运行时,使用多个MPC控制器块,从一个到另一个基于期望的调度策略切换MPC控制器。有关详细信息,请参阅非线性化学反应器的MPC控制。当工厂模型有不同的订单或时间延迟时,使用这种方法。

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

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

(1)使用如下例所示的逐次线性化。当一个非线性的工厂模型可用并且可以在运行时线性化时,使用这种方法。

当环闭合(2)使用网上估计以识别线性模型。看到非线性化学反应器中使用联机模式估计的自适应MPC控制为更多的细节。当线性植物模型不能从LPV系统或连续线性化得到时,使用这种方法。

得到初始运行条件下的线性工厂模型

为了使工厂线性化,需要Simulink®和Sim金宝appulink控制设计®。

如果〜mpcchecktoolboxinstalled('金宝appSIMULINK')disp (的金宝appSimulink(R)需要运行这个例子“。返回结束如果〜mpcchecktoolboxinstalled(“slcontrol”)disp (“金宝app需要运行该示例中的Simulink控制设计(R)”。返回结束

为了实现一个自适应MPC控制器,首先需要在初始工作点,其中CAI为10公斤·摩尔/立方公尺设计一个MPC控制器,Ti和TC为298.15 K.

创建工作点的规范。

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);
操作点搜索报告:——mpc_cstr_plant模型的操作点搜索报告。(t=0时刻评估的时变元件)工作点规格成功满足。状态:- - - - - - - - - - - (1)mpc_cstr_plant /装运箱/集成商x: 311 dx: 8.12 e-11 (0) (2) mpc_cstr_plant /装运箱/ Integrator1 x: 8.57 dx: -6.87 e-12(0)输入:- - - - - - - - - - - (1)mpc_cstr_plant / CAi u: 10 (2) mpc_cstr_plant / Ti u: 298 (3) mpc_cstr_plant / Tc u: 298输出:- - - - - - - - - - - (1)mpc_cstr_plant / T y: 311(负无穷到正无穷)(2)mpc_cstr_plant / CA y: 8.57(负无穷到正无穷)

获得的X,Y和u标称值。

X0 = [op_report.States(1).X; op_report.States(2).X];Y0 = [op_report.Outputs(1).Y; op_report.Outputs(2).Y];U0 = [op_report.Inputs(1).U; op_report.Inputs(2).U; op_report.Inputs(3).U];

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

SYS =线性化(plant_mdl,op_point);

掉落的第一家工厂输入蔡,因为它不使用MPC。

sys =系统(:2:3);

因为自适应MPC控制器只接受离散时间的植物模型,所以要离散化植物模型。

t = 0.5;工厂=汇集(sys、Ts);

MPC控制器设计

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

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

plant.InputGroup。MeasuredDisturbances = 1;plant.InputGroup。ManipulatedVariables = 2;plant.OutputGroup。测量= 1;plant.OutputGroup。无边无际的= 2;工厂。InputName = {“钛”“Tc”};工厂。OutputName = {'T''CA'};

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

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

在控制器中设置标称值

mpcobj.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)可用。

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. “自适应MPC控制器”块以自适应方式运行设计的MPC控制器。

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

请注意,新的线性植物模型必须是一个离散时间状态空间系统与相同的顺序和原植物模型具有采样时间。如果工厂有时间延迟,还必须跟原来一样的时间延迟,并吸收到状态空间模型。

验证自适应MPC控制性能

控制器的性能进行验证,都设定值跟踪和抗干扰能力。

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

  • 调节:进料温度Ti具有通过一个正弦波的5度振幅,这是进料至MPC控制器所测量的干扰表示缓慢波动。

模拟闭环性能。

open_system ([mdl'/浓度'])open_system([MDL/温度的])open_system([MDL'/极'])SIM(MDL)
——>假设被测输出通道1的输出干扰为集成白噪声。- - >”模型。“mpc”对象的“噪音”属性为空。假设每个测量的输出通道上都有白噪声。

bdclose (mdl)

跟踪调节性能良好。然而,在实际反应堆的应用中,模型的不精确性和不可测的干扰可能会导致比这里显示的更差的跟踪。额外的模拟可以用来研究这些影响。

非自适应MPC控制比较

自适应MPC提供比非自适应MPC优越的控制性能。为了说明这一点,在非自适应模式运行相同的MPC控制器的控制性能如下所示。所述控制器与MPC控制器块实现。

mdl1 ='ampc_cstr_no_linearization';open_system mdl1 open_system ([mdl1'/浓度'])open_system([mdl1/温度的])SIM(mdl1)

如预期,跟踪和调节性能是不可接受的。

bdclose (mdl1)

也可以看看

相关的话题