非线性和Gain-Scheduled MPC控制乙烯氧化的植物
这个例子展示了如何使用一个非线性模型预测控制器控制一个氧化乙烯工厂,因为它从一个操作点转换到另一个。此外,线性MPC控制器生成直接从非线性MPC控制器来实现gain-scheduled产生类似性能的控制方案。
乙烯氧化装置
氧化乙烯(C2H4)环氧乙烷(灭菌)发生在冷却,气相催化反应器。三个反应同时发生在反应器内的气相混合:
C2H4 + 0.5 * O2 - >灭菌
C2H4 + 3 * O2 - > 2 * CO2 + 2 * H2O
灭菌+ 2.5 * O2 - > 2 * CO2 + 2 * H2O
不断的混合空气和乙烯是美联储。植物由第一原则描述非线性动态模型,实现为一组常微分方程(常微分方程)oxidationStateFcn
函数。有关更多信息,请参见oxidationStateFcn.m
。
植物包含四个州:
气体密度在反应堆(x1)
反应堆C2H4浓度(x2)
在反应堆灭菌浓度(x3)
反应堆温度(x4)
工厂有两个输入:
总容积进料流率(u1)
C2H4饲料的浓度(u2)
工厂有一个输出:
灭菌浓度废水流(y,相当于x3)
为方便起见,所有变量在模型中是无量纲的缩放。所有的州是可衡量的。植物从[1]获得的方程和参数。
控制目标
在这个例子中,总容积进料流率(u1)是被操纵的变量(MV)和灭菌浓度废水流(y)是输出变量(OV)。良好的跟踪性能y需要一个操作范围内的0.03
来0.05
。相应的u1值是0.38
和0.15
,分别。
在进料流(C2H4浓度u2)是一种测量干扰。它的标称值0.5
,一个典型的干扰的大小0.1
。控制器需要拒绝这样的干扰。
被操纵的变量u1有一个从0.0704
来0.7042
由于执行机构的局限性。
反馈控制与非线性MPC
一般来说,使用非线性MPC和一个精确的非线性预测模型提供了一个基准的性能;也就是说,您可以实现最好的控制解决方案。然而,在实践中,线性MPC控制解决方案,如自适应MPC或gain-schedule万博 尤文图斯d MPC,计算效率比非线性MPC。如果你的线性控制解决方案可以提供一个类似的性能,不需要实现非线性控制的解决方案,特别是在实时环境。
在这个例子中,首先设计一个非线性MPC控制器获取基准性能。之后,生成多个线性MPC对象非线性控制器的使用不同的操作点convertToMPC
函数。最后,您使用这些线性实现gain-scheduled MPC MPC对象和比较性能。
创建一个非线性MPC控制器4
州,1
输出,1
被操纵的变量,1
测量干扰。
nlobj = nlmpc (4 1“MV”,1“医学博士”2);
指定控制器样品时间和预测和控制的视野。
Ts = 5;PredictionHorizon = 10;ControlHorizon = 3;nlobj。Ts = t;nlobj。PredictionHorizon = PredictionHorizon;nlobj。ControlHorizon = ControlHorizon;
使用指定的非线性预测模型oxidationStateFcn.m
,这是一个连续时间模型。
nlobj.Model。StateFcn =“oxidationStateFcn”;nlobj.States (1)。Name =“窝”;nlobj.States (2)。Name =“CE”;nlobj.States (3)。Name =“首席执行官”;nlobj.States (4)。Name =“Tc”;
指定输出函数,它返回灭菌浓度废水流(x3)一样。规模因素是其典型的操作范围。
nlobj.Model。OutputFcn = @ (x, u) x (3);nlobj.OV。Name =“CEOout”;nlobj.OV。ScaleFactor = 0.03;
指定MV约束基于控制器执行机构的局限性。规模因素是其典型的操作范围。
nlobj.MV。最小值= 0.0704;nlobj.MV。Max = 0.7042;nlobj.MV。Name =“秦”;nlobj.MV。ScaleFactor = 0.6;
指定测量扰动的名字。规模因素是其典型的操作范围。
nlobj.MD。Name =“CEin”;nlobj.MD。ScaleFactor = 0.5;
最初的植物在一个平衡操作点灭菌(低浓度的y=0.03
在废水流。找到美国的初始值和输出使用fsolve
从优化工具箱。
选择= optimoptions (“fsolve”,“显示”,“没有”);uLow = (0.38 - 0.5);xLow = fsolve (@ (x) oxidationStateFcn (x, uLow)(0.3 - 0.03 1)选项);yLow = xLow (3);
验证预测模型的功能没有任何使用数值问题validateFcns
命令。验证函数的初始状态和输出值。
validateFcns (nlobj、xLow uLow (1) uLow (2));
模型。StateFcn就可以了。模型。OutputFcn就可以了。用户提供的模型分析、成本和约束函数完成。
指定参考信号的结构,加大0.03
来0.05
在50
秒的时间One hundred.
。
Tstop = 300;时间= (0:Ts (Tstop + PredictionHorizon * Ts)) ';r = [yLow *的总和(时间< 100),1);linspace (yLow yLow + 0.02 11); (yLow + 0.02) *的(和(> 150),1)];ref.time =时间;ref.signals。值= r;
货币政策委员会评估非线性性能,使用仿真软件模型。万博1manbetx模型中的非线性MPC控制器块被配置为使用nlobj
作为控制器。
mdlNMPC =“oxidationNMPC”;open_system (mdlNMPC)
运行仿真,查看输出。
sim (mdlNMPC) open_system ([mdlNMPC' / y '])
非线性MPC控制器产生好的参考跟踪和干扰抑制性能,如预期。
尽管ramp-like灭菌浓度设定点的变化发生在100年和150秒(黄色楼梯曲线情节),控制器知道变化早在50秒,因为引用预览。自的目标是最小化跟踪错误在整个地平线,控制器决定提前搬工厂,跟踪误差是最小的在预测地平线。如果预览是禁用的,控制器将开始在100秒的反应,这将产生一个较大的跟踪误差。
在这个例子中,因为所有的州是可衡量的,使用全状态反馈非线性MPC控制器。一般来说,当有不可测的,你必须设计一个非线性状态估计量,比如扩展卡尔曼滤波器(EKF)或一个移动的地平线估计量(加入)。
从非线性MPC控制器获得线性MPC控制器
在实践中,产生类似的性能时,线性MPC总是优于非线性MPC由于其较高的计算效率。既然你设计了一个非线性MPC控制器作为基准,你可以将它转换成一个线性MPC控制器在一个特定的操作点。
在本例中,您生成三个灭菌浓度线性MPC控制器0.03
,0.04
,0.05
,分别。在转换期间,非线性植物模型线性化在指定的操作点。所有规模因素、线性约束和二次非线性MPC对象中定义的重量都保留。然而,任何自定义非线性成本函数或自定义等式或不等式约束非线性被丢弃。
产生一个线性MPC控制器灭菌转化率较低的操作点y
=0.03
。指定操作点使用对应的状态和输入值,xLow
和uLow
,分别。
mpcobjLow = convertToMPC (nlobj xLow uLow);
产生一个线性MPC控制器与灭菌转化率介质操作点y
=0.04
。
uMedium = (0.24 - 0.5);xMedium = fsolve (@ (x) oxidationStateFcn (x, uMedium)(0.3 - 0.03 1)选项);mpcobjMedium = convertToMPC (nlobj xMedium uMedium);
产生一个线性MPC控制器灭菌转化率高的操作点y
=0.05
。
uHigh = (0.15 - 0.5);xHigh = fsolve (@ (x) oxidationStateFcn (x, uHigh)(0.3 - 0.03 1)选项);mpcobjHigh = convertToMPC (nlobj xHigh uHigh);
与Gain-Scheduled MPC反馈控制
实现一个gain-scheduled MPC使用生成的三线性MPC控制器的解决方案。调度方案是:
如果y是低于0.035,使用
mpcobjLow
。如果y是高于0.045,使用
mpcobjHigh
。否则,使用
mpcobjMedium
。
评估gain-scheduled控制器性能,使用另一个仿真软件模型。万博1manbetx
mdlMPC =“oxidationMPC”;open_system (mdlMPC)
运行仿真,查看输出。
sim (mdlMPC) open_system ([mdlMPC' / y '])
- - >将模型转换为离散时间。- - >输出假设干扰# 1添加到测量输出集成的白噪声。- - >”模型。噪音”是空的。假设白噪声在每个测量输出。- - >将模型转换为离散时间。- - >输出假设干扰# 1添加到测量输出集成的白噪声。- - >”模型。噪音”是空的。假设白噪声在每个测量输出。 -->Converting model to discrete time. -->Assuming output disturbance added to measured output #1 is integrated white noise. -->"Model.Noise" is empty. Assuming white noise on each measured output. -->Converting model to discrete time. -->Assuming output disturbance added to measured output #1 is integrated white noise. -->"Model.Noise" is empty. Assuming white noise on each measured output.
gain-scheduled控制器产生可比参考跟踪和干扰抑制性能。
结论
这个示例演示了一个一般的工作流程:
设计和模拟非线性MPC控制器在MATLAB和Simulink基准控制性能。万博1manbetx
使用非线性MPC对象直接生成线性MPC控制器所需的操作点。
使用这些控制器实现gain-scheduled MPC控制方案。
如果gain-scheduled控制器的性能类似的非线性控制器,你可以有信心实现线性控制非线性控制问题的解决方案。
关闭仿真软件模型。万博1manbetx
bdclose (mdlNMPC)
引用
[1]h . m . Ellis勾勒出p·d·Christofides。“经济模型预测控制设计输入变化率约束处理和保证经济表现。”电脑和化学工程92卷,2016年,页18-36。