放热化学反应器的非线性模型预测控制

此示例示出了如何使用非线性的MPC控制器,因为它从一个低的转化率,以高转化率转变成控制非线性连续搅拌釜反应器(CSTR)。

关于连续搅拌釜式反应器

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

这个系统是一个非绝热夹套釜式反应器在[1]中广泛描述。该容器被假设为完全混合,和一个单一的第一阶放热和不可逆反应,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 = T \;& # 38;\textnormal{Reactor temperature} [K] \\
y_2 = x_2 = CA \;& # 38;反应堆槽中A的浓度正常[kgmol/m^3] \\;结束{数组}$$

控制目标是保持出口流中试剂A的浓度,$ CA $当反应器从低转化率过渡到高转化率时,其所需的设定值发生变化。冷却液温度$ T_C $是控制器用于跟踪引用的操作变量。测量了A在料流中的浓度和料流温度的扰动。

金宝appSimulink模型

要运行这个例子,Simulink®的需要。金宝app

如果〜mpcchecktoolboxinstalled('金宝appSIMULINK')disp (的金宝appSimulink需要运行这个例子。“返回结束

打开仿真软金宝app件模型。

MDL =“mpc_cstr_nonlinear”;open_system (mdl)

非线性预测模型

非线性MPC需要一个预测模型来描述你所知道的植物的非线性行为。为了挑战控制器,这个例子故意引入了建模错误,例如,随着温度的升高,预测模型的反应速率超过了真实工厂的反应速率。有关预测模型状态函数的详细信息,请参见exocstrStateFcnCT.m

此外,为了抑制出口流中浓度出现的随机阶跃式的不可测干扰,用一个假设输入为零均值白噪声的积分器来增强工厂模型。增加后的预测模型有四种状态(T, CA, Dist)和四种输入(CA_i, T_i, T_c, WN)。

因为你仅在控制浓度离开反应器感兴趣,输出函数返回一个标量值,这是第二状态(CA)加第三状态(DIST)。对于预测模型输出功能的详细信息,请参阅exocstrOutputFcn.m

非线性MPC

控制目标是将工厂从低转化率(CA = 8.5698 kgmol/m^3)的初始工作点转移到高转化率(CA = 2 kgmol/m^3)的最终工作点。在最后的稳定状态下,由于冷却不再是自动调节的,所以装置是开环不稳定的。因此,反应器温度趋于逃跑从操作的角度。

在MATLAB®中创建一个非线性MPC控制器对象。如前所述,预测模型有三种状态、一种输出和四种输入。在输入中,前两个输入(进料组成和进料温度)是测量扰动,第三个输入(冷却剂温度)是操作变量。第四个输入是进入增强积分器的白噪声,它表示一个未测量的输出干扰。

nlobj = nlmpc(3,1,'MV'3,“医学博士”(1 - 2),“UD”,4);

预测模型的采样时间与控制器的采样时间相同。

TS = 0.5;nlobj.Ts = TS;

为了减少计算工作量,使用3秒(6个步骤)短预测范围。此外,为了增强鲁棒性,使用在控制水平线块移动。

nlobj。PredictionHorizon = 6;nlobj。ControlHorizon = [2 2 2];

由于MV的大小是为了300的OV是为了1,缩放MV以使它们相容,这样默认的调整权重都可以使用。

nlobj.MV(1).ScaleFactor = 300;

限制冷却剂温度调节速率,每两个连续的间隔只能增加或减少5度。

nlobj.MV (1)。杀鼠灵= 5;nlobj.MV (1)。RateMax = 5;

将状态按单位顺序缩放是一种很好的做法。这样做对控制策略没有影响,但可以改善数值行为。

nlobj.States(1).ScaleFactor = 300;nlobj.States(2).ScaleFactor = 10;

指定非线性状态和输出函数。

nlobj.Model.StateFcn =“exocstrStateFcnCT”;nlobj.Model。OutputFcn ='exocstrOutputFcn';

这是在模拟使用它们之前测试您的预测模型和任何其他自定义功能的最佳实践。要做到这一点,使用validateFcns命令。在这种情况下,使用初始工作点为用于测试的标称条件下,未测量的干扰状态设置为0

x0 = (311.2639;8.5698;0);情况= [10;298.15;298.15);validateFcns (x0, nlobj情况(3),情况(1:2)');
Model.StateFcn是OK。Model.OutputFcn是OK。用户提供的模型,成本和约束函数的分析完成。

非线性状态估计

非线性MPC控制器需要每隔采样时间三种状态(包括未测量的干扰状态)的估计。为了提供这种估计,使用扩展卡尔曼滤波器(EKF)嵌段。该块使用相同的模型作为非线性MPC控制器不同之处在于所述模型是离散时间。有关详细信息,请参阅exocstrStateFcnDT.m

EKF测量当前浓度,并用它来修正从先前间隔的预测。在这个例子中,假定测量是相对准确的,并使用在扩展的卡尔曼滤波器块小协方差。

闭环仿真

在模拟中,提高目标浓度而不是突然改变步骤。可以使用更快的斜坡速率,因为使用了非线性预测模型。

在工作点转移,在这两个测量的干扰信道的阶跃变化发生在1020秒。在时间40,未测量的干扰输出(在反应器出口处的浓度的阶跃变化)时也是如此。

open_system([MDL,'/浓度(OV)'])open_system([MDL,' /冷却剂温度(MV) '])SIM(MDL)

出口流中的浓度精确地跟踪其参考值,并收敛到所需的最终值。同时,该控制器还能同时抑制已测干扰和未测干扰。

初始控制器移动通过在冷却剂温度下的最大速率的变化受到限制。这可以通过提供控制器MPC与先行参考信号,其通知在所述预测范围的预期参考变化的控制器被改善。

参考文献

[1] Seborg,D.E。,T. F.埃德加,和D. A. Mellichamp。处理动力学与控制,第二版,Wiley,2004年,第34-36和94-95。

bdclose (mdl)

也可以看看

|

相关的话题