主要内容

非线性化学反应器的逐次线性化自适应MPC控制

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

第一原理非线性对象模型可用,并在每个控制间隔处线性化。然后,自适应MPC控制器用线性化的对象模型更新其内部预测模型,成功地实现了非线性控制。

关于连续搅拌釜式反应器

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

这是一个夹套式非绝热罐式反应器,在Seborg的书《过程动力学与控制》中有详细描述,由Wiley出版,2004年。假设容器完全混合,并发生一个一级放热和不可逆反应a-->B。试剂a的入口流以恒定的体积速率被送入储罐。产品流以相同的体积速率连续流出,液体密度恒定。因此,体积反应液的me是常数。

CSTR模型的输入为:

$$\begin{array}{ll}
;u_1=CA_i\&;\textnormal{A在入口进料流中的浓度[kgmol/m^3]\
;u_2=T#i\&;\textnormal{入口进料流温度}[K]\
 xA;u#3=T#c\
 38;\textnormal温度{$$

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

$$\begin{array}{ll}
;y#u 1=x#u 1=CA\&;\textnormal{A在反应器罐中的浓度}[kgmol/m^3]\
;y#u 2=x#u 2=T\&;\textnormal{反应器温度}[K]\
 end{$$

控制目标是保持试剂A的浓度,$CA$当反应堆从低转化率过渡到高转化率时,其所需设定点随时间变化。冷却剂温度$T_c$是MPC控制器用于跟踪参考以及拒绝由入口进料流温度引起的测量干扰的操纵变量$T_i$.入口进料流浓度,$CA_i$,假定为常数。Simulink模型万博1manbetxmpc_cstr_装置实现了非线性CSTR装置。

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

关于自适应模型预测控制

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

要使用线性MPC控制技术控制非线性CSTR装置,您有几个选项:

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

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

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

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

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

(2) 当回路闭合时,使用在线估计来识别线性模型。看见基于在线模型估计的非线性化学反应器自适应MPC控制更多细节。当无法从LPV系统或连续线性化中获得线性对象模型时,使用此方法。

获得初始运行条件下的线性电厂模型

为了使设备线性化,需要Simulink®和Sim万博1manbetxulink Control Design®。

如果~mpcchecktoolbox已安装(“万博1manbetxsimulink”)disp('万博1manbetx运行此示例需要Simulink(R)。')回来终止如果~mpcchecktoolbox已安装(“slcontrol”)disp('万博1manbetx运行此示例需要Simulink控件设计(R)。')回来终止

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

创建操作点规范。

植物=“mpc_cstr_工厂”; op=操作规范(工厂mdl);

在初始条件下已知进料浓度。

运算输入(1)。u=10;运算输入(1)。已知=真;

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

运算输入(2).u=298.15;运算输入(2).Known=true;

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

运算输入(3).u=298.15;运算输入(3).Known=true;

计算初始条件。

[op_点,op_报告]=findop(工厂mdl,op);
工作点搜索报告:--------------------------------------mpc_cstr_模型电厂的工作点搜索报告。(在时间t=0时评估的时变部件)工作点规范已成功满足。状态:------------(1)mpc_cstr_电厂/cstr/积分器x:311 dx:8.12e-11(0)(2)mpc\u cstr\u设备/cstr/积分器1 x:8.57 dx:-6.87e-12(0)输入:-------------(1)mpc\u cstr\u设备/CAi u:10(2)mpc\u cstr\u设备/TIU:298(3)mpc\u cstr\u设备/TCU:298输出:-------------(1)mpc\u cstr\u设备/TY 311[-Inf](2)mpc\u cstr\u设备/CAY:8.57[-Inf]

获得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=线性化(设备mdl,操作点);

删除第一个设备输入CAi,因为MPC未使用它。

sys=sys(:,2:3);

离散化对象模型,因为自适应MPC控制器只接受离散时间对象模型。

Ts=0.5;工厂=c2d(系统,Ts);

MPC控制器的设计

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

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

plant.InputGroup.MeasuredDistrictions=1;plant.InputGroup.ManipulatedVariables=2;plant.OutputGroup.Measured=1;plant.OutputGroup.Unmeasured=2;plant.InputName={"Ti",“Tc”};plant.OutputName={“不”,“CA”};

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

mpcobj=mpc(工厂);
-->“mpc”对象的“PredictionHorizon”属性为空。正在尝试PredictionHorizon=10。-->“mpc”对象的“ControlHorizon”属性为空。假设2。-->“mpc”对象的“Weights.ManufacturedVariables”属性为空。假设默认值为0.00000。-->“mpc”的“Weights.ManufacturedVariablesRate”属性对象为空。假设默认值为0.10000。-->“mpc”对象的“Weights.OutputVariables”属性为空。“mpc”对象的“Weights.OutputVariables”属性为空。假设输出y1的默认值为1.00000,输出y2的默认值为零

在控制器中设置标称值

mpcobj.Model.Nominal=struct(“X”,x0,“你”,u0(2:3),“是的”,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=[01];

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

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

在Simulink(R)中实现CSTR装置的自适应MPC控制万博1manbetx

打开Simulin万博1manbetxk模型。

mdl=“ampc_cstr_线性化”;开放式系统(mdl)

该模型包括三个部分:

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

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

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

请注意,新的线性对象模型必须是一个离散时间状态空间系统,其阶数和采样时间与原始对象模型相同。如果对象有时滞,它也必须与原始时滞相同,并被吸收到状态空间模型中。

验证自适应MPC控制性能

控制器性能根据设定点跟踪和干扰抑制进行验证。

  • 跟踪:反应堆浓度CA设定值从原来的8.57(低转化率)转变为2(高转化率)kgmol/m^3。在转变过程中,电厂首先变得不稳定,然后再次稳定(见极点图)。

  • 调节:进给温度Ti具有缓慢的波动,由振幅为5度的正弦波表示,这是馈送至MPC控制器的测量扰动。

模拟闭环性能。

开放式系统([mdl“/浓度”])开放式系统([mdl“/温度”])开放式系统([mdl“/杆”])sim卡(mdl)
-->假设添加到测量输出通道#1的输出干扰为积分白噪声。-->“mpc”对象的“Model.Noise”属性为空。假设每个测量输出通道上存在白噪声。

bdclose(mdl)

跟踪和调节性能非常令人满意。但是,在实际反应堆的应用中,模型不准确和未测量的干扰可能会导致跟踪效果比此处显示的差。可以使用其他模拟来研究这些影响。

与非自适应MPC控制的比较

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

mdl1=“ampc_cstr_无线性化”;开放式系统(mdl1)开放式系统([mdl1“/浓度”])开放式系统([mdl1“/温度”])sim卡(mdl1)

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

bdclose(mdl1)

另见

相关话题