主要内容

基于线性变参数系统的非线性化学反应器自适应MPC控制

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

在离线情况下,建立了一个由三个线性电厂模型组成的线性参数变化系统来描述电厂运行范围内的局部动态。自适应MPC控制器利用LPV系统在每个控制区间更新内部预测模型,成功地实现了非线性控制。

关于连续搅拌釜反应器

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

该系统是在[1]中广泛描述的夹套非绝热罐式反应器。假设容器完全混合,发生单次一级放热不可逆反应a—> B。试剂A的入口流以恒定的容量速率被送入罐中。产品流以相同的体积速率连续地流出,液体密度是恒定的。因此,反应液体的体积是恒定的。

CSTR模型的输入为:

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

模型的输出,也就是模型状态,分别是:

$$ \begin{array} {ll}
y = x = CA \;& # 38;\textnormal{A在反应器内的浓度}[kmol/m^3] \\
y_2 = x_2 = T \;& # 38;\textnormal{反应堆温度}[K] \\
\end{array} $$

控制目标是保持试剂A的浓度,CA美元当反应器从低转化率转变为高转化率时,设定值会随时间变化。冷却剂温度T_c美元是MPC控制器用来跟踪引用的被操纵变量。假定进口进料流浓度和温度为常数。Simu金宝applink模型mpc_cstr_plant实现了非线性CSTR装置。有关CSTR反应堆和相关示例的更多信息,请参见装运箱模型

关于自适应模型预测控制

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

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

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

(1)离线设计多个MPC控制器,每个工厂模型一个。在运行时,使用多重MPC控制器块,它根据所需的调度策略在控制器之间切换。详情请参见非线性化学反应器的增益控制.当工厂模型有不同的顺序或时间延迟时使用这种方法。

(2)在初始工作点离线设计一个MPC控制器。在运行时,使用自适应MPC控制器块(在每个控制间隔更新预测模型)和线性参数变化(LPV)系统块(为线性工厂模型提供调度策略),如本例所示。当所有的工厂模型具有相同的顺序和时间延迟时,使用这种方法。

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

(1)采用逐次线性化。详情请参见连续线性化的非线性化学反应器自适应MPC控制.当非线性工厂模型可用并且可以在运行时线性化时使用这种方法。

(2)利用在线估计方法在闭环时识别线性模型。详情请参见基于在线模型估计的非线性化学反应器自适应MPC控制.当线性植物模型不能从LPV系统或连续线性化中获得时,使用这种方法。

得到初始工况下的线性工厂模型

首先,得到初始工况下的线性工厂模型,其中是10kmol /m^3,两者都是吗“透明国际”而且Tc为298.15 K。若要从Simulink模型生成线性状态空间系统,请使用诸如金宝appoperspecfindop,线性化来自Sim金宝appulink Control Design。

创建工作点规范。

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正无穷

获得标称价值xy,u

x0_initial = [op_report.States(1).x;op_report.States(2)方式);y0_initial = [op_report.Outputs(1).y;op_report.Outputs (2) .y];u0_initial = [op_report.Inputs(1).u;op_report.Inputs (2) .u;op_report.Inputs (3) .u];

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

Plant_initial = linearize(plant_mdl,op_point);

离散工厂模型。

Ts = 0.5;plant_initial = c2d(plant_initial,Ts);

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

plant_initial.InputGroup。UnmeasuredDisturbances = [1 2];plant_initial.InputGroup。ManipulatedVariables = 3;plant_initial.OutputGroup。测量= [1 2];plant_initial。InputName = {“蔡”“透明国际”“Tc”};plant_initial。OutputName = {“T”“CA”};

得到中间工况下的线性工厂模型

创建工作点规范。

Op = operspec(plant_mdl);

指定进料浓度。

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

指定进料温度。

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

指定反应器浓度。

op.Outputs(2)。Y = 5.5;op.Outputs(2)。已知=真实;

找到稳态工况。

[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 339.4282正0 3.4187 e-08 0 (2) mpc_cstr_plant /装运箱/ Integrator1 0 5.5正0 -2.8686 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负无穷到正无穷输出:---------- 最小y最大  ________ ________ ________ ( 1) mpc_cstr_plant / T 339.4282负无穷到正无穷(2)mpc_cstr_plant / CA 5.5 5.5 5.5

获得标称价值xy,u

x0_intermediate = [op_report.States(1).x;op_report.States(2)方式);y0_intermediate = [op_report.Outputs(1).y;op_report.Outputs (2) .y];u0_intermediate = [op_report.Inputs(1).u;op_report.Inputs (2) .u;op_report.Inputs (3) .u];

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

Plant_intermediate = linearize(plant_mdl,op_point);

离散工厂模型

plant_intermediate = c2d(plant_intermediate,Ts);

指定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”};

得到最终工况下的线性工厂模型

创建工作点规范。

Op = operspec(plant_mdl);

指定进料浓度。

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

指定进料温度。

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

指定反应器浓度。

op.Outputs(2)。Y = 2;op.Outputs(2)。已知=真实;

找到稳态操作条件。

[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 373.1311正0 5.7298 e-11 0 (2) mpc_cstr_plant /装运箱/ Integrator1 0 2正0 -4.7411 e-12 0输入 : ---------- 最小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负无穷到正无穷输出:---------- 最小y最大  ________ ________ ________ ( 1) mpc_cstr_plant / T 373.1311负无穷到正无穷(2)mpc_cstr_plant / CA 2 2 2

获得标称价值xy,u

x0_final = [op_report.States(1).x;op_report.States(2)方式);y0_final = [op_report.Outputs(1).y;op_report.Outputs (2) .y];u0_final = [op_report.Inputs(1).u;op_report.Inputs (2) .u;op_report.Inputs (3) .u];

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

Plant_final = linearize(plant_mdl,op_point);

离散工厂模型

plant_final = c2d(plant_final,Ts);

指定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”};

构造线性变参数系统

使用LTI数组存储三个线性工厂模型。

Lpv (:,:,1) = plant_initial;Lpv (:,:,2) = plant_intermediate;Lpv (:,:,3) = plant_final;

指定反应堆温度T作为调度参数。

lpv。SamplingGrid = struct(...“T”, (y0_initial (1);y0_intermediate (1);y0_final (1)]);

指定设备输入、输出和每个稳态工作点的状态的标称值。

Lpv_u0 (:,:,1) = u0_initial;Lpv_u0 (:,:,2) = u0_intermediate;Lpv_u0 (:,:,3) = u0_final;Lpv_y0 (:,:,1) = y0_initial;Lpv_y0 (:,:,2) = y0_intermediate;Lpv_y0 (:,:,3) = y0_final;Lpv_x0 (:,:,1) = x0_initial;Lpv_x0 (:,:,2) = x0_intermediate;Lpv_x0 (:,:,3) = x0_final;

你不需要提供输入信号u到LPV系统块,因为厂输出信号y本例中不使用。

初始工况下MPC控制器设计

在初始工况下设计一个MPC控制器。控制器设置,如视界和调谐权值,应选择适用于整个工作范围。

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

mpcobj = mpc(plant_initial,Ts);
——>“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_initial,...“U”, (0, 0, u0_initial (3)),...“Y”y0_initial,“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参数为默认值。

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

打开Simulin金宝appk模型。

mdl =“ampc_cstr_lpv”;open_system (mdl)

模型包括三个部分:

  1. CSTR块实现了非线性植物模型。

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

  3. LPV系统模块(控制系统工具箱)提供了一个局部状态空间的工厂模型及其在每个控制间隔内插的标称值。然后,植物模型被馈送到自适应MPC控制器块,并更新MPC控制器使用的预测模型。在本例中,初始工厂模型用于初始化LPV System块。

您可以使用Simulink模型作金宝app为模板来开发自己的基于lpv的自适应MPC应用程序。

验证自适应MPC控制性能

控制器的性能验证针对设定值跟踪和干扰抑制。

  • 跟踪:反应堆温度T设定值从原来的311 K(低转化率)转换为377 K(高转化率)kgmol/m^3。在过渡期间,植物首先变得不稳定,然后再次稳定(见极点图)。

  • 调节:进料温度“透明国际”具有缓慢的波动,以振幅为5度的正弦波表示,这是馈送到MPC控制器的测量扰动。

模拟闭环性能。

open_system ([mdl/浓度的(mdl) open_system (/温度的]) sim (mdl)
假设测量的2号输出通道没有扰动。假设测量的输出通道1没有任何扰动。——>”模式。“噪音”属性为空。假设每个测量输出都有白噪声。

跟踪调节性能良好。

参考文献

[1]塞博格,D. E.埃德加,D. A.梅利尚,过程动力学与控制,第二版,威利,2004年。

bdclose (mdl)

另请参阅

相关的话题