这个例子展示了如何使用非线性MPC控制器来控制非线性连续搅拌槽式反应器(CSTR)从低转化率到高转化率的转变。
连续搅拌槽式反应器(CSTR)是过程工业中常用的化学系统。CSTR系统的原理图如下:
该系统是[1]中广泛描述的一种夹套非绝热罐式反应器。假设容器完全混合,发生单一的一级放热和不可逆反应,a -> B。试剂A的进口流以恒定的容积率被送入储罐。产品流以相同的容积率连续流出,液体密度是恒定的。因此,反应器中反应液体的体积是恒定的。
CSTR模型的输入是:
输出(y(t)),也是模型(x(t))的状态,为:
控制目标是保持出口流中试剂A的浓度,当反应器从低转化率转变为高转化率时,该值发生变化。冷却液温度是控制器用来跟踪参考的操纵变量。对进料流中A的浓度和进料流温度进行了扰动测量。
要运行此示例,需要Simulink®。万博1manbetx
如果~ mpcchecktoolboxinstalled (“万博1manbetx模型”) disp (“万博1manbetx运行这个示例需要Simulink。”)返回结束
打开仿真软万博1manbetx件模型。
mdl =“mpc_cstr_nonlinear”;open_system (mdl)
非线性MPC需要一个预测模型,以描述你的工厂的非线性行为,以你的最佳知识。为了挑战控制器,这个例子故意引入建模错误,例如,随着温度的增加,预测模型的反应速率超过了真实的工厂。有关预测模型状态函数的详细信息,请参见exocstrStateFcnCT.m
.
此外,为了排除出口流中浓度中出现的随机阶跃型不可测干扰,在植物模型中增加了一个积分器,该积分器的输入假定为零均值白噪声。扩展后的预测模型有4个状态(T, CA, Dist)和4个输入(CA_i, T_i, T_c, WN)。
因为您只对控制离开反应器的浓度感兴趣,所以输出函数返回一个标量值,即第二状态(CA)加上第三状态(Dist)。预测模型输出函数请参见exocstrOutputFcn.m
.
控制目标是将装置从转化率低的初始工作点(CA = 8.5698 kgmol/m^3)移动到转化率高的最终工作点(CA = 2 kgmol/m^3)。在最终稳定状态下,电站是开环不稳定的,因为冷却不再自我调节。因此,反应器温度趋向于跑了从操作的角度。
在MATLAB中创建一个非线性MPC控制器对象。如前所述,预测模型有三种状态、一种输出和四种输入。其中,前两个输入(饲料成分和饲料温度)是测量扰动,第三个输入(冷却液温度)是操纵变量。第四个输入是进入增广积分器的白噪声,它表示一个未测量的输出干扰。
Nlobj = nlmpc(3,1,“MV”3,“MD”,[1 2],“UD”4);
预测模型样本时间与控制器样本时间相同。
t = 0.5;nlobj。Ts = t;
为了减少计算工作量,使用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];u0=[10;298.15;298.15];验证EFCNS(nlobj,x0,u0(3),u0(1:2)”;
模型。StateFcn就可以了。模型。OutputFcn就可以了。分析了用户提供的模型、成本和约束功能。
非线性MPC控制器需要在每个采样时间估计三个状态(包括未测扰动状态)。为了提供这个估计,使用扩展卡尔曼滤波(EKF)块。该模块使用与非线性MPC控制器相同的模型,只是模型是离散时间的。有关详细信息,请参见exocstrStateFcnDT.m
.
EKF测量当前浓度,并使用它来校正之前区间的预测。在本例中,假设测量相对准确,并在扩展卡尔曼滤波块中使用小协方差。
在模拟中,增加目标浓度而不是做一个突然的步骤改变。因为使用了非线性预测模型,所以可以使用更快的斜坡速率。
在工作点过渡期间,两个被测扰动通道的阶跃变化发生在10
和20.
秒,分别。在时间40
,一个未测量的输出干扰(反应堆出口浓度的阶跃变化)也会发生。
(mdl open_system (,' /浓度(OV) '(mdl) open_system (,' /冷却剂温度(MV) ']) sim (mdl)
出口流中的浓度精确地跟踪它的参考值,并收敛到期望的最终值。同时,该控制器抑制了被测扰动和未被测扰动。
初始控制器的移动受到冷却剂温度的最大变化率的限制。这可以通过为控制器MPC提供一个前瞻参考信号来改善,该信号将在预测视界内的预期参考变化通知控制器。
塞堡,埃德加和梅利尚。过程动力学与控制,第二版,Wiley, 2004,第34-36和94-95页。
bdclose (mdl)