西西河

主题:【原创】化工过程控制的实践 -- 润树

共:💬332 🌺795
分页树展主题 · 全看首页 上页
/ 23
下页 末页
    • 家园 【原创】3.模型预估控制(MPC)

      MPC在十几年前开始红火起来,现在也还没有衰竭的迹象。从技术上来说,我想可能有两个重要的因素在起作用。一是其模型预估的功能,使一些比较难于控制的变量能够得到较好的控制,二是过程模型的建立使得多变量控制变得比较容易实现。其结果,当然必须在改善过程的生产效益,减少能源消耗,提高产能上体现出来。下面,我们就这两个因数具体地谈一谈。

      为什么模型预估能够改善控制效果呢?这要从常规PID(比值加积分加微分)控制谈起。如图3.0.1所示的常规PID控制回路方框图,PID的输入e,是我们所希望过程要达到的设定点SP与过程实际输出值y之间的差值,我们把它叫作偏差。当这个偏差稳定在零或很小的数值时,过程就算达到了稳态。一但设定点改变,或过程受到干扰而其输出发生变化,偏差就不再是零,控制器就会通过PID的算法,来改变控制器输出即过程的输入u,来把偏差重新驱动到零。

      点看全图

      图3.0.1 典型的控制系统方框图

      问题是,究竟过程的输入应该是多少才能使其输出达到设定值,从而使偏差为零呢?PID控制器并不确切地知道,它所知道的是,如果偏差为正值,那么我应该大概增加多少过程输入(这里的过程增益为正),而如果偏差为负值,我就应该大概减少多少过程的输入。这里大概增加多少/大概减少多少的数值,取决于工程师根据对过程的认识来设定的PID参数。因此,参数设定得好,控制系统就能很快消除偏差;反之,则可能要经过很长的时间才能消除偏差(图3.0.2a),严重时偏差将在正负值之间来回振荡,导致系统长时间不能稳定下来(图3.0.2b)。

      点看全图

      图3.0.2 不同参数设定下的PID控制响响应

      显然,这里的关键是要知道过程的特性,即它的静态增益和动态时间常数(对于大多数的化工过程而言)。事实上,如果知道了该特性,那么一个理想的控制器算法不是PID,而是该过程函数的颠倒(inverse)。一个负反馈系统理想的算法,就静态来说,过程的增益和控制器的增益之乘积应该是1(即它们互为倒数);而就动态来说,过程是滞后的,那么控制器就应该是超前的。比如,一个用阀门开度来控制流量的过程函数是2 /(100S + 1),那么理想控制器应是(100S + 1)/ 2 = 50S + 0.5。也就是说,如果实际流量比设定值小2个单位,那么阀门开度应该增加1个百分度。现在我们用MATLAB仿真来看看这样的理想控制。由于是理想模型控制,我们甚至连反馈也不需要了。用Simulink的传递函数模块不能直接实现(50S + 0.5),但我们可以合理地用(50S + 0.5)/(S + 1)来近似。图3.0.3上方的两个显示分别是过程的输入和输出。我们可以看到,过程输出响应很快,几乎在瞬间就达到了设定点 (否则为什么叫理想?)。下方的两个显示是在缩短到前十几秒来看的输入和输出。

      点看全图

      图3.0.3 理想模型控制的响应

      当然在实践中,这样的理想控制是不大可能实现的,有两个原因:

      1)从上例可以看到,由于控制器算法是一个很强的微分,它在设定点改变瞬间(零时刻)的输出是500,也就是说要阀门的开度达到500%,这显然是不现实的 (最大开度是100%)。也就是说,在实现模型控制时,必须考虑系统的约束条件。

      2)无论用什么方法去获得过程的模型,这个模型不可能与过程实际特性完全一致。如果让系统处于开环状态,那么不但不能获得理想的控制效果,甚至连设定值都永远无法达到(没有PID的积分作用)。由于这个原因,模型控制仍然必须有反馈的机制,形成闭环控制。

      在考虑以上两点的基础上,利用过程模型来预先计算(预估)过程输入输出在某一时段里的变化轨迹,从而对控制系统进行动态优化的MPC的三个基本方程就出来了:

      问题: ( 1 ) Minimize Sum (e[i]’Q e[i] + u[i]’R u[i]) ,e[i] = x[i] - sp

      满足: ( 2 ) x[i+1] = A x[i] + B R u[i], x[0] = x0

      结果: ( 3 ) u”[i] = K[i]x”[i], i = 1, 2, …… , p

      方程(1)中的e[i]’是过程偏差向量e[i]的转置,u[i]’是过程输入向量u[i]的转置,x[i]是过程的状态向量。这个方程提出的问题是,对过程的偏差向量加权的平方以及过程的输入向量加权(Q, R)的平方之和进行最小化。传统上,动态优化控制只考虑控制偏差e的轨迹,而这里输入u的的变化轨迹也成为了一个优化变量,这是因为,u的变化不但要受到物理条件(比如阀门开度不能大于100%)和安全生产(比如压缩机速度不能变化太快)的约束,而且它们的变化本身与生产成本有很大关系。在化工生产中,很大一部份的u都与能源的使用有关(裂解炉的燃料,精馏塔再沸器的蒸汽等等)。

      方程(2)是用状态空间函数来描述的过程动态和静态特性。不同的MPC产品,也可能用不同的数学形式来描述此特性。

      方程(3)中的u”[i]和x”[i]是求解方程(1)所获得的过程优化输入输出变量值。K[i]是在求解方程 (1) 所对应的黎卡的(Ricatti)方程所获得的状态反馈增益矩阵。

      在实际的MPC计算中,还必须加入输入和输出的约束条件(通常用不等式来表达),以及从过程的实时检测来校正过程模型误差,因此比这里的三个方程要复杂得多。如果再应用到多输入多输出的控制系统中,其计算量更是庞大。我们在这里就不深入讨论了。对MPC的理论和计算有进一步兴趣的朋友,可以参考其它文献。这里向你推荐下面这篇论文。

      [URL]http://www.chee.uh.edu/faculty/nikolaou/MPCtheoryRevised.pdf [/URL]

      使MPC热门的第二个因素是它在多变量过程控制中的应用。传统的过程控制系统是单输入单输出(SISO)的,这对于一些简单的控制回路,像流量,压力,温度等,是很有效的,完全没有必要用MPC。但是如果要通过控制来提高某个生产装置的生产效率,就必须有一个大的控制器来对各SISO系统进行整体的协调,这就诞生了多变量的MPC。事实上,现在工业界说到MPC,都是指多变量的模型预估控制。

      在此控制器中,可能有M个控制变量(manipulated variables, MV),N个被控变量(controlled variables, CV)。取决于实际的应用对象,将可能出现下面三种情形:

      1)M > N,有无数个解,所有的CV都可被控制在设定值上。

      2)M = N,有唯一解,所有的CV都可被控制在设定值上。

      3)M < N,无解,不能将所有的CV都控制在设定值上。

      由于实际应用中有众多的约束条件,以上3)是最常见的。在这样的情况下,多数CV都是被控制在某一范围之内,而不是在某一个设定值上。

      MPC的输出,一般都不是直接送到生产管线上的执行单元,像阀门,电机等,而是作为SISO控制回路的设定值。这就形成了两个级别的控制系统。第一级是常规控制,大约每秒钟计算一次控制器的输出;而MPC是第二级控制,大约每分钟进行一次这样的计算。比如一个精馏塔,在常规控制下,它的塔顶回流是由一个流量调节器控制的,它的再沸器蒸汽流量是由塔底温度调节器控制的,但是这两个调节器的设定点(希望的回流量和温度值)则是由操作工手动设定的。而在MPC控制下,这两个设定点就可能成了MV,MPC通过调节它们的数值来控制塔顶和塔底产品的成分指标,形成一个2 x 2的MPC。当一个MPC所覆盖的过程很大很复杂时,它可能会有十几个甚至几十个MV和CV。

      MPC在提高化工生产过程的效率上,主要着眼于以下几个方面:

      1)提高原料转换成产品的转换率。这即可能体现在反应器的转换率上,也可以体现在把反应出来的产品尽可能多地从副产品中分离出来的过程中。MPC通常是通过提高过程的稳定性以及卡边操作(将某些CV推向低限或高限)等手段来达成的。

      2)提高产能。一个生产装置在设计并投入运行以后,生产者一般都会通过改善操作条件来获得更高的产能,但往往会受到某些约束条件或瓶颈的限制。MPC可以将这些约束条件推倒极限,因而使装置总是处于最大产能的操作状态。

      3)降低能源消耗。除了一些卡边操作的手段外,MPC的动态优化控制在这方面具有先天性的优势。

      我们将在下一节讲到MPC的软件及其应用时,就MPC在提高化工生产过程的效率上举例作详细的说明。

      • 家园 宝N枚

        惊喜:所有在本帖先送花者得【通宝】一枚

        恭喜:你意外获得【西西河通宝】一枚

        谢谢:作者意外获得【西西河通宝】一枚

        鲜花已经成功送出。

        此次送花为【有效送花赞扬,涨乐善、声望】

        • 家园 福星呵,可得常来

          好像你是从控制转管理了吧?要去那里高就呀,现在据说是baby boomer退休的时段,空出好多位置呢。

      • 家园 只有送花的份儿了

        辛苦辛苦,

      • 家园 提几个问题

        谢谢润树大哥的介绍,想请教几个问题。

        1、模型。化工应用中使用怎样的模型?是基于理化特性建立的模型,还是基于输出输入特性建立的模型。如果是前者,一般是线性还是非线性模型?非线性模型需要进一步找到稳态工作点并线性化吗?如果是后者,是直接使用比如说阶跃响应辨识出来的非参数模型,就像DMC算法那样的,还是像GPC那样使用模型辨识中的数学模型,像CARIMA那样的?非参数模型需要进一步使用模型降阶来得到低阶的状态空间模型吗?

        2、实时优化。工业应用中,在有约束情况下,如何进行实时优化呢?具体说,使用怎样的优化算法呢?如果是线性无约束,当然可以离线解Recatti方程来求解LQR问题;但是当有约束时,如果约束不是简单的线性约束,或者模型有非线性,优化问题不再是凸优化,本来就没有有效的算法来求解,实时控制有如何解决这一问题呢?

        • 家园 有点混淆

          我说的MPC优化是动态优化,既解正文中的方程(1)。这个优化应该是和MPC控制计算同步的。这个动态优化是什么意思呢?就是为了使过程从一个静态达到另一个静态,控制器在给定线性约束条件下,应该怎么样规划它输出变量的轨迹(MV moves)。

          你提到的实时优化(real time optimization,RTO),是否指静态优化?RTO是用来解决下一个最优的静态点在什么地方的问题,是完全基于机理模型的优化,不存在线性化的问题。其求解方法是用Open Equation的方法,计算周期也要长得多,取决于对象,以小时论。

          • 家园 我想我懂你的意思了

            你也一直是在讨论MPC的优化解的问题。但晨枫似乎把你说的实时优化理解成了化工控制中的另一个问题,即steady state optimization, 因为Aspen 有一个这方面的产品,就叫Real Time Optimization,正好可以翻译成实时优化。我上面也就跟到那里去了。

            静态也就是稳态,其英文对应词是steady state。MPC的模型是把一个过程限定在一个时段里面,既从过程零时刻To的响应,到它达到新的静态(或稳态)的时刻Ts之间,来求解。这个时段,比如4小时,在控制周期为1分钟的情况下,就被分成了240个离散区间。MPC当然也不会把对应于这240个时刻的状态方程数值全部拿到目标函数(1)中去求解(那样计算量就太大了)而是取1,2,。。。p个数值,像DMC,是取前面14个值,来求解。这样一来,微分方程就变成了差分方程,加上线性的约束条件,不管多少,用LP就可以求解了吧。当然如果有非线性的情况,可能就得用别的方法来求解。但我所知道的MPC都是线性约束。

          • 家园 我完全不理解静态的意思

            对应的英文是什么呢?是不是就是稳态的意思呢?

            从理论的角度,MPC有三个部分:预测模型,滚动优化,反馈校正。我理解你正文中要求解的方程(1),也就是一个离散的LQR问题;我不理解的是,当方程(1)subject to 方程(2),然后如果再加上线性/非线性约束的时候,实践中是如何求解的呢?还是说我的问题理解错了,这根本不是你们感兴趣的问题?

            • 家园 我上面跟错了

              你也一直是在讨论MPC的优化解的问题。但晨枫似乎把你说的实时优化理解成了化工控制中的另一个问题,即steady state optimization, 因为Aspen 有一个这方面的产品,就叫Real Time Optimization,正好可以翻译成实时优化。我上面也就跟到那里去了。

              静态也就是稳态,其英文对应词是steady state。MPC的模型是把一个过程限定在一个时段里面,既从过程零时刻To的响应,到它达到新的静态(或稳态)的时刻Ts之间,来求解。这个时段,比如4小时,在控制周期为1分钟的情况下,就被分成了240个离散区间。MPC当然也不会把对应于这240个时刻的状态方程数值全部拿到目标函数(1)中去求解(那样计算量就太大了)而是取1,2,。。。p个数值,像DMC,是取前面14个值,来求解。这样一来,微分方程就变成了差分方程,加上线性的约束条件,不管多少,用LP就可以求解了吧。当然如果有非线性的情况,可能就得用别的方法来求解。但我所知道的MPC都是线性约束。

              不过我现在只是MPC的使用者,里面的很多计算究竟是如何进行的,确实不完全清楚。

              • 家园 谢谢润树大哥

                我想我搞清楚你的意思了。

                另外,你使用的MPC,是matlab带的toolbox,还是其他的软件包?

                我以前做过MPC方面的理论,比如说研究控制时域长度、滚动时域长度、预测时域长度、还有控制惩罚因子等等对于控制品质的影响,还有一些优化、稳定性、模型失配时的鲁棒性之类的东西。但是我不了解MPC的应用。最近有个项目,原来是用LQR加状态观测器实现控制的,我在考虑进一步提高性能,就想是否可以用MPC,或是其他的一些控制策略。

                • 家园 LQR加状态观测器还不行的话,MPC也没有办法的

                  除了能处理状态和输出约束外,MPC就是简化的LQR加状态观测器。能不能把控制问题说具体一点?或许能帮忙出一点主意?

                  control horizon和prediction horizon就是滚动时域啊!这个译名好,十几年来,我就一直不知道这个东西该怎么翻译。

                  • 家园 多谢晨枫

                    我的这个问题是个很复杂的问题,而且涉及到一定的IP问题,没法详细谈。

                    简单地说,这是一个多输入多输出的非线性控制问题。模型是通过有限元分析得出的,所以状态多达数百个;动力学方程dx/dt=f(x,u)中,f(x,u)是x的有理分式,分子分母各含x的高次项。我们有一套成熟的产品,是通过线性化,LQR加状态观测器,还有积分回路、anti-windup之类很多部分来实现的。现在的控制品质还不错,可以说,每一台PC都有我们的一小部分贡献。问题是,随着硬件设备的更新,我们需要设计新的控制器;同时希望能更进一步提高性能。理论上,曾经有仿真显示了H\infty有很好的性能;我自己做过Q-design的仿真,结果也很好。但是在实际引用中还要考虑其他许多问题,比如鲁棒性,还有是否容易实现等等。所以现在还在综合考虑之中。

分页树展主题 · 全看首页 上页
/ 23
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河