在网上看到一个牛人写的“自动控制的故事”,非常的有趣,给每段加了个小标题,虽然不能全部看懂,但收藏在这里,也算是给自己以后的工作学习一个指引,即便对没有学习过自动控制的人,也可以从此篇文章中了解到不少知识。

(一)经典控制理论的由来

有人考证古代就有自动化的实例,但现代意义上的自动控制开始于瓦特的蒸汽机。据说纽考门比瓦特先发明蒸汽机,但是蒸汽机的转速控制问题没有解决,弄不好转速飞升,机器损坏不说,还可能说大事故。瓦特在蒸汽机的转轴上安了一个小棍,棍的一端和放汽阀连着,放气阀松开来就关闭,转速增加;按下去阀就打开,转速降低;棍的另一端是一个小重锤,棍中间某个地方通过支点和转轴连接。转轴转起来的时候,小棍由于离心力的缘故挥起来。转速太高了,小棍挥会挥得很高,放汽阀就被按下去打开,转速下降;转速太低了,小棍挥不起来,放汽阀就被松开来关闭,转速回升。这样,蒸汽机可以自动保持稳定的转速,即保证安全,又方便使用。也就是因为这个小小的转速调节器,瓦特的名字和工业革命连在一起,而纽考门的名字就要到历史书里去找了。

类似的例子在机械系统里很多,家居必备的抽水马桶是另一个例子。放水冲刷后,水箱里水位降低,浮子随水面下降,进水阀打开。随着水位的升高,进水阀逐渐关闭,直到水位达到规定高度,进水阀完全关闭,水箱的水正好准备下一次使用。这是一个非常简单但非常巧妙的水位控制系统,是一个经典的设计,但不容易用经典的控制理论来分析,不过这是题外话了。

这些机械系统设计巧妙,工作可靠,实在是巧夺天工。但是在实用中,如果每次都需要这样的创造性思维,那太累,最好有一个系统的方法,可以解决“所有”的自动控制问题,这就是控制理论的由来。

(二)反馈与动态过程

从小大人就教我们,走路要看路。为什么呢?要是不看着路,走路走歪了也不知道,结果就是东撞西撞的。要是看着路呢?走歪了,马上就看到,赶紧调整脚步,走回到正道上来。这里有自动控制里的第一个重要概念:反馈(feedback)。

反馈是一个过程:

1、设定目标,对小朋友走路的例子来说,就是前进的路线。

2、测量状态,小朋友的眼睛看着路,就是在测量自己的前进方向。

3、将测量到的状态和设定的目标比较,把眼睛看到的前进方向和心里想的前进方向作比较,判断前进方向是否正确;如果不正确,相差有多少。

4、调整行动,在心里根据实际前进方向和设定目标的偏差,决定调整的量。

5、实际执行,也就是实际挪动脚步,重回正确的前进方向。

在整个走路的过程中,这个反馈过程周而复始,不断进行,这样,小朋友就不会走得东倒西歪了。但是,这里有一个问题:如果所有的事情都是在瞬时里同时发生的,那这个反馈过程就无法工作。要使反馈工作,一定要有一定的反应时间。还好,世上之事,都有一个过程,这就为反馈赢得了所需要的时间。

小时候,妈妈在锅里蒸东西,蒸好了,从锅里拿出来总是一个麻烦,需要抹布什么的垫着,免得烫手。但是碗和锅的间隙不大,连手带抹布伸进去颇麻烦,我常常不知天高地厚,自告奋勇地徒手把热的碗拿出来。只要动作快,手起碗落,可以不烫手。当然喽,要是捧着热碗再东晃晃,西荡荡,那手上感觉的温度最终会和热碗一样,肯定要把手心、手指烫熟不可的。在从接触碗到皮肤温度和碗表面一样,这里面有一个逐渐升温的过程,这就是动态过程(dynamic process)。这里面有两个东西要注意:一个是升温的过程有多快,另一个是最终的温度可以升到多少。要是知道了这两个参数,同时知道自己的手可以耐受多少温度,理论上可以计算出热的碗在手里可以停留多少时间而不至于烫手。

反馈过程也叫闭环(closed loop)过程。既然有闭环,那就有开环(open loop)。开环就是没有反馈的控制过程,设定一个控制作用,然后就执行,不根据实际测量值进行校正。开环控制只有对简单的过程有效,比如洗衣机和烘干机按定时控制,到底衣服洗得怎么样,烘得干不干,完全取决于开始时的设定。对于洗衣机、烘干机这样的问题,多设一点时间就是了,稍微浪费一点,但可以保证效果。对于空调机,就不能不顾房间温度,简单地设一个开10分钟、关5分钟的循环,而应该根据实际温度作闭环控制,否则房间里的温度天知道到底会达到多少。

记得80年代时,报告文学很流行。徐迟写了一个《哥德巴赫猜想》,于是全国人民都争当科学家。小说家也争着写科学家,成就太小不行,所以来一个语不惊人死不休,某大家写了一个《无反馈快速跟踪》。那时正在大学啃砖头,对这个科学新发现大感兴趣,从头看到尾,也没有看明白到底是怎么无反馈快速跟踪的。现在想想,小说就是小说,不过这无良作家也太扯,无反馈还要跟踪,不看着目标,不看着自己跑哪了,这跟的什么踪啊,这和永动机差不多了,怎么不挑一个好一点的题目,冷聚变什么的,至少在理论上还是可能的。题外话了。

在数学上,动态过程用微分方程描述,反馈过程就是在描述动态过程的微分方程的输入项和输出项之间建立一个关联,这样改变了微分方程本来的性质。自动控制就是在这个反馈和动态过程里做文章的。

(三)开关控制

房间内的空调是一个简单的控制问题。不过这只是指单一房间,整个高层大楼所有房间的中央空调问题实际上是一个相当复杂的问题,不在这里讨论的范围。夏天了,室内温度设在28度,实际温度高于28度了,空调机启动致冷,把房间的温度降下来;实际温度低于28度了,空调机关闭,让房间温度受环境气温自然升上去。

通过这样简单的开关控制,室内温度应该就控制在28度。不过这里有一个问题,如果温度高于28度一点点,空调机就启动;低于28度一点点,空调机就关闭;那如果温度传感器和空调机的开关足够灵敏的话,空调机的开关频率可以无穷高,空调机不断地开开关关,要发神经病了,这对机器不好,在实际上也没有必要。解决的办法是设立一个“死区”(dead band),温度高于29度时开机,低于27度时关机。注意不要搞反了,否则控制单元要发神经了。

有了一个死区后,室内温度不再可能严格控制在28度,而是在27到29度之间“晃荡”。如果环境温度一定,空调机的制冷量一定,室内的升温/降温动态模型已知,可以计算温度“晃荡”的周期。不过既然是讲故事,我们就不去费那个事了。

这种开关控制看起来“土”,其实好处不少。对于大部分过程来说,开关控制的精度不高但可以保证稳定,或者说系统输出是“有界”的,也就是说实际测量值一定会被限制在一定的范围,而不可能无限制地发散出去。这种稳定性和一般控制理论里强调的所谓渐进稳定性不同,而是所谓BIBO稳定性,前者要求输出最终趋向设定值,后者只要求在有界的输入作用下输出是有界的,BIBO指bounded input bounded output。

对于简单的精度要求不高的过程,这种开关控制(或者称继电器控制,relay control,因为最早这种控制方式是用继电器或电磁开关来实现的)就足够了。但是很多时候,这种“毛估估”的控制满足不了要求。汽车在高速公路上行驶,速度设在定速巡航控制,速度飘下去几公里,心里觉得吃亏了,但要是飘上去几公里,被警察抓下来吃一个罚单,这算谁的?

开关控制是不连续控制,控制作用一加就是“全剂量”的,一减也是“全剂量”的,没有中间的过渡。如果空调机的制冷量有三个设定,:小、中、大,根据室温和设定的差别来决定到底是用小还是中还是大,那室温的控制精度就可以大大提高,换句话说,温度的“晃荡”幅度将大幅度减小。那么,如果空调机有更多的设定,从小小到小中到……到大大,那控制精度是不是更高呢?是的。既然如此,何不用无级可调的空调机呢?那岂不可以更精确地控制室温了吗?是的。

(四)PID控制

无级可调或连续可调的空调机可以精确控制温度,但开关控制不能再用了。家用空调机中,连续可调的不占多数,但冲热水淋浴是一个典型的连续控制问题,因为水龙头可以连续调节水的流量。冲淋浴时,假定冷水龙头不变,只调节热水。那温度高了,热水关小一点;温度低了,热水开打一点。换句话说,控制作用应该向减少控制偏差的方向变化,也就是所谓负负反馈。控制方向对了,还有一个控制量的问题。温度高了1度,热水该关小多少呢?

经验告诉我们,根据具体的龙头和水压,温度高1度,热水需要关小一定的量,比如说,关小一格。换句话说,控制量和控制偏差成比例关系,这就是经典的比例控制规律:控制量=比例控制增益*控制偏差,偏差越大,控制量越大。控制偏差就是实际测量值和设定值或目标值之差。在比例控制规律下,偏差反向,控制量也反向。也就是说,如果淋浴水温要求为40度,实际水温高于40度时,热水龙头向关闭的方向变化;实际水温低于40度时,热水龙头向开启的方向变化。

但是比例控制规律并不能保证水温能够精确达到40度。在实际生活中,人们这时对热水龙头作微调,只要水温还不合适,就一点一点地调节,直到水温合适为止。这种只要控制偏差不消失就渐进微调的控制规律,在控制里叫积分控制规律,因为控制量和控制偏差在时间上的累积成正比,其比例因子就称为积分控制增益。工业上常用积分控制增益的倒数,称其为积分时间常数,其物理意义是偏差恒定时,控制量加倍所需的时间。这里要注意的是,控制偏差有正有负,全看实际测量值是大于还是小于设定值,所以只要控制系统是稳定的,也就是实际测量值最终会稳定在设定值上,控制偏差的累积不会是无穷大的。这里再啰嗦一遍,积分控制的基本作用是消除控制偏差的余差(也叫残差)。

比例和积分控制规律可以应付很大一类控制问题,但不是没有改进余地的。如果水管水温快速变化,人们会根据水温的变化调节热水龙头:水温升高,热水龙头向关闭方向变化,升温越快,开启越多;水温降低,热水龙头向开启方向变化,降温越快,关闭越多。这就是所谓的微分控制规律,因为控制量和实际测量值的变化率成正比,其比例因子就称为比例控制增益,工业上也称微分时间常数。

微分时间常数没有太特定的物理意义,只是积分叫时间常数,微分也跟着叫了。微分控制的重点不在实际测量值的具体数值,而在其变化方向和变化速度。微分控制在理论上和实用中有很多优越性,但局限也是明显的。如果测量信号不是很“干净”,时不时有那么一点不大不小的“毛刺”或扰动,微分控制就会被这些风吹草动搞得方寸大乱,产生很多不必要甚至错误的控制信号。所以工业上对微分控制的使用是很谨慎的。

比例-积分-微分控制规律是工业上最常用的控制规律。人们一般根据比例-积分-微分的英文缩写,将其简称为PID控制。即使在更为先进的控制规律广泛应用的今天,各种形式的PID控制仍然在所有控制回路中占85%以上。

(五)参数整定与稳定性分析

在PID控制中,积分控制的特点是:只要还有余差(即残余的控制偏差)存在,积分控制就按部就班地逐渐增加控制作用,直到余差消失。所以积分的效果比较缓慢,除特殊情况外,作为基本控制作用,缓不救急。微分控制的特点是:尽管实际测量值还比设定值低,但其快速上扬的冲势需要及早加以抑制,否则,等到实际值超过设定值再作反应就晚了,这就是微分控制施展身手的地方了。

作为基本控制使用,微分控制只看趋势,不看具体数值所在,所以最理想的情况也就是把实际值稳定下来,但稳定在什么地方就要看你的运气了,所以微分控制也不能作为基本控制作用。比例控制没有这些问题,比例控制的反应快,稳定性好,是最基本的控制作用,是“皮”,积分、微分控制是对比例控制起增强作用的,极少单独使用,所以是“毛”。在实际使用中比例和积分一般一起使用,比例承担主要的控制作用,积分帮助消除余差。微分只有在被控对象反应迟缓,需要在开始有所反应时,及早补偿,才予以采用。只用比例和微分的情况很少见。

连续控制的精度是开关控制所不可比拟的,但连续控制的高精度也是有代价的,这就是稳定性问题。控制增益决定了控制作用对偏差的灵敏度。既然增益决定了控制的灵敏度,那么越灵敏岂不越好?非也。还是用汽车的定速巡航控制做例子。速度低一点,油门加一点,速度低更多,油门加更多,速度高上去当然就反过来。但是如果速度低一点,油门就加很多,速度更低,油门狂加,这样速度不但不能稳定在要求的设定值上,还可能失控。这就是不稳定。所以控制增益的设定是有讲究的。在生活中也有类似的例子。国民经济过热,需要经济调整,但调整过火,就要造成“硬着陆”,引起衰退;衰退时需要刺激,同样,刺激过火,会造成“虚假繁荣”。要达成“软着陆”,经济调整的措施需要恰到好处。这也是一个经济动态系统的稳定性问题。

实际中到底多少增益才是最合适的,理论上有很多计算方法,但实用中一般是靠经验和调试来摸索最佳增益,业内行话叫参数整定。如果系统响应在控制作用后面拖拖沓沓,大幅度振荡的话,那一般是积分太过;如果系统响应非常神经质,动不动就打摆子,呈现高频小幅度振荡的话,那一般是微分有点过分。中频振荡当然就是比例的问题了。不过各个系统的频率都是不一样的,到底什么算高频,什么算低频,这个几句话说不清楚,应了毛主席那句话:“具体情况具体分析”,所以就打一个哈哈了。

再具体说起来,参数整定有两个路子。一是首先调试比例增益以保证基本的稳定性,然后加必要的积分以消除余差,只有在最必要的情况下,比如反映迟缓的温度过程或容量极大的液位过程,测量噪声很低,才加一点微分。这是“学院派”的路子,在大部分情况下很有效。但是工业界有一个“歪路子”:用非常小的比例作用,但大大强化积分作用。这个方法是完全违背控制理论的分析的,但在实际中却是行之有效,原因在于测量噪声严重,或系统反应过敏时,积分为主的控制规律动作比较缓和,不易激励出不稳定的因素,尤其是不确定性比较高的高频部分,这也是“稳定压倒一切”的初衷吧。

在很多情况下,在初始PID参数整定之后,只要系统没有出现不稳定或性能显著退化,一般不会去重新整定。但是要是系统不稳定了怎么办呢?由于大部分实际系统都是开环稳定的,也就是说,只要控制作用恒定不变,系统响应最终应该稳定在一个数值,尽管可能不是设定值,所以对付不稳定的第一个动作都是把比例增益减小,根据实际情况,减小1/3、1/2甚至更多,同时加大积分时间常数,常常成倍地加,再就是减小甚至取消微分控制作用。如果有前馈控制,适当减小前馈增益也是有用的。在实际中,系统性能不会莫名其妙地突然变坏,上述“救火”式重新整定常常是临时性的,等生产过程中的机械或原料问题消除后,参数还是要设回原来的数值,否则系统性能会太过“懒散”。

对于新工厂,系统还没有投运,没法根据实际响应来整定,一般先估计一个初始参数,在系统投运的过程中,对控制回路逐个整定。我自己的经验是,对于一般的流量回路,比例定在0.5左右,积分大约1分钟,微分为0,这个组合一般不致于一上来就出大问题。温度回路可以从2、5、0.05开始,液位回路从5、10、0开始,气相压力回路从10、20、0开始。既然这些都是凭经验的估计,那当然要具体情况具体分析,不可能“放之四海而皆准”。

微分一般用于反应迟缓的系统,但是事情总有一些例外。我就遇到过一个小小的冷凝液罐,直径才两英尺,长不过5英尺,但是流量倒要8-12吨/小时,一有风吹草动,液位变化非常迅速,不管比例、积分怎么调,液位很难稳定下来,常常是控制阀刚开始反应,液位已经到顶或到底了。最后加了0.05的微分,液位一开始变化,控制阀就开始抑制,反而稳定下来了。这和常规的参数整定的路子背道而驰,但在这个情况下,反而是“唯一”的选择,因为测量值和控制阀的饱和变成稳定性主要的问题了。

(六)根轨迹与频域分析

对工业界以积分为主导控制作用的做法再啰嗦几句。学术上,控制的稳定性基本就是渐近稳定性,BIBO稳定性是没有办法证明渐近稳定性时的“退而求其次”的东西,不怎么上台面的。但是工业界里的稳定性有两个看起来相似、实质上不尽相同的方面:一个当然是渐近稳定性,另一个则是稳定性,但不一定向设定值收敛,或者说稳定性比收敛性优先这样一个情况。

具体来说,就是需要系统稳定在一个值上,不要动来动去,但是不是在设定值并不是太重要,只要不是太离谱就行。例子有很多,比如反应器的压力是一个重要参数,反应器不稳定,原料进料比例就乱套,催化剂进料也不稳定,反应就不稳定,但是反应器的压力到底是10个大气压还是12个大气压,并没有太大的关系,只要慢慢地但是稳定地向设定值移动就足够了。这是控制理论里比较少涉及的一个情况,这也是工业上时常采用积分主导的控制的一个重要原因。

前面说到系统的频率,本来也就是系统响应持续振荡时的频率,但是控制领域里有三拨人在捣腾:一拨是以机电类动力学系统为特色的电工出身,包括航空、机器人等,一拨是以连续过程为特色的化工出身的,包冶金、造纸等,还有一拨是以微分方程稳定性为特色的应用数学出身的。在瓦特和抽水马桶的年代里,各打各的山头,井水不犯河水,倒也太平。但控制从艺术上升为理论后,总有人喜欢“统一”,电工帮抢了先,好端端的控制理论里被塞进了电工里的频率。童子们哪,那哪是频率啊,那是……复频率。既然那些变态的电工帮能折腾出虚功率,那他们也能折腾出复频率来,他们自虐倒也算了,只是苦了我等无辜之众,被迫受此精神折磨。

事情的缘由是系统的稳定性。前面提到,PID的参数如果设得不好,系统可能不稳定。除了摸索,有没有办法从理论上计算出合适的PID参数呢?前面也提到,动态过程可以用微分方程描述,其实在PID的阶段,这只是微分方程中很狭窄的一支:单变量线性常微分方程。要是还记得大一高数,一定还记得线形常微的解,除了分离变量法什么的,如果自变量时间用t表示的话,最常用的求解还是把exp(λt)代入微分方程,然后解已经变成λ的代数方程的特征方程,解出来的解可以是实数,也可以是复数,是复数的话,就要用三角函数展开了。只要实根为负,那微分方程就是稳定的,因为负的指数项最终向零收敛,复根到底多少就无所谓了,对稳定性没有影响。但是,这么求解分析起来还是不容易,还是超不出“具体情况具体分析”,难以得出一般的结论。

法国人以好色、好吃出名,但是他们食色性也之后,还不老实,其中一个叫拉普拉斯的家伙,捣鼓出什么拉普拉斯变换,把常微分方程变成s的多项式。然后那帮电工的家伙们,喜欢自虐,往s里塞jω,就是那个复频率,整出一个变态的频率分析,用来分析系统的稳定性。不过说变态,也不完全公平,在没有计算机的年代,各种图表是最有效的分析方法,还美其名曰“几何分析”。频率分析也不例外。美国佬Evans搞出一个根轨迹(root locus),思路倒是满有意思的。他用增益作自变量,将系统的根(不管实的虚的)在复平面上画出轨迹来,要是轨迹在左半平面打转转,那就是实根为负,就是稳定的。再深究下去,系统响应的临界频率之类也可以计算出来。最大的好处是,对于常见的系统,可以给出一套作图规则来,眼睛一瞄,随手就可以画出根轨迹来,然后就可以告诉你,增益变化多多少,系统开始振荡,再增加多少,系统会不稳定,云云。

根轨迹还是比较客气的,还有更变态的奈奎斯特、伯德和尼科尔斯法,想想脑子都大。都是叫那帮电工分子害的。时至今日,计算机分析已经很普及了,但是古典的图示分析还是有经久不衰的魅力,就是因为图示分析不光告诉你系统是稳定还是不稳定,以及其他一些动态响应的参数,图示分析还可以定性地告诉你增益变化甚至系统参数变化引起的闭环性能变化。咦,刚才还不是在说人家变态吗?呃,变态也有变态的魅力不是?哈哈。

(七)非常规PID

以频率分析(也称频域分析)为特色的控制理论称为经典控制理论。经典控制理论可以把系统的稳定性分析得天花乱坠,但有两个前提:一、要已知被控对象的数学模型,这在实际中不容易得到;二、被控对象的数学模型不会改变或漂移,这在实际中更难做到。对简单过程建立微分方程是可能的,但简单过程的控制不麻烦,经验法参数整定就搞定了,不需要费那个麻烦,而真正需要理论计算帮忙的回路,建立模型太困难,或者模型本身的不确定性很高,使得理论分析失去意义。

经典控制理论在机械、航空、电机中还是有成功的应用,毕竟从F=ma出发,可以建立“所有”的机械系统的动力学模型,铁疙瘩的重量又不会莫名其妙地改变,主要环境参数都可以测量,但是经典控制理论至少在化工控制中实用成功的例子实在是凤毛麟角,给你一个50块塔板的精馏塔,一个气相进料,一个液相进料,塔顶、塔底出料加一个侧线出料,塔顶风冷冷凝器,塔底再沸器加一个中间再沸器,你就慢慢建模去吧,等九牛二虎把模型建立起来了,风冷冷凝器受风霜雨雪的影响,再沸器的高压蒸汽的压力受友邻装置的影响,气相进料的温度和饱和度受上游装置的影响而改变,液相进料的混合组分受上游装置的影响而改变,但组分无法及时测量(在线气相色谱分析结果要45分钟才能出来),动态特性全变了。

老家伙歌德两百年前就说了,理论是灰色的,生命之树常青。我们知道马鹿喜欢金光的或者银光的,至少也要红的,不过只好将就啦,青绿地干活。在实用中,PID有很多表兄弟,帮着大表哥一块打天下。

比例控制的特点是:偏差大,控制作用就大。但在实际中有时还嫌不够,最好偏差大的时候,比例增益也大,进一步加强对大偏差的矫正作用,及早把系统拉回到设定值附近;偏差小的时候,当然就不用那么急吼吼,慢慢来就行,所以增益小一点,加强稳定性。这就是双增益PID(也叫双模式PID)的起源。想想也对,高射炮瞄准敌机是一个控制问题。如果炮管还指向离目标很远的角度,那应该先尽快地把炮管转到目标角度附近,动作猛一点才好;但炮管指向已经目标很近了,就要再慢慢地精细瞄准。工业上也有很多类似的问题。

双增益PID的一个特例是死区PID(PID with dead band),小偏差时的增益为零,也就是说,测量值和设定值相差不大的时候,就随他去,不用控制。这在大型缓冲容器的液位控制里用得很多。本来缓冲容器就是缓冲流量变化的,液位到底控制在什么地方并不紧要,只要不是太高或太低就行。但是,从缓冲容器流向下游装置的流量要尽可能稳定,否则下游装置会受到不必要的扰动。死区PID对这样的控制问题是最合适的。

但是天下没有免费的午餐。死区PID的前提是液位在一般情况下会“自动”稳定在死区内,如果死区设置不当,或系统经常受到大幅度的扰动,死区内的“无控”状态会导致液位不受限制地向死区边界“挺进”,最后进入“受控”区时,控制作用过火,液位向相反方向不受限制地“挺进”,最后的结果是液位永远在死区的两端振荡,而永远不会稳定下来,业内叫hunting。双增益PID也有同样的问题,只是比死区PID好一些,毕竟只有“强控制”和“弱控制”的差别,而没有“无控区”。在实用中,双增益的内外增益差别小于2:1没有多大意义,大于5:1就要注意上述的持续振荡或hunting的问题。

双增益或死区PID的问题在于增益的变化是不连续的,控制作用在死区边界上有一个突然的变化,容易诱发系统的不利响应,平方误差PID就没有这个问题。误差一经平方,控制量对误差的曲线就成了抛物线,同样达到“小偏差小增益、大偏差大增益”的效果,还没有和突然的不连续的增益变化。但是误差平方有两个问题:一是误差接近于零的时候,增益也接近于零,回到上面死区PID的问题;二是很难控制抛物线的具体形状,或者说,很难制定增益在什么地方拐弯。对于第一个问题,可以在误差平方PID上加一个基本的线性PID,是零误差是增益不为零;对于后一个问题,就要用另外的模块计算一个连续变化的增益了。具体细节比较琐碎,将偏差送入一个分段线性化(也就是折线啦)的计算单元,然后将计算结果作为比例增益输出到PID控制器,折线的水平段就对应予不同的增益,而连接不同的水平段的斜线就对应于增益的连续变化。通过设置水平段和斜线段的折点,可以任意调整变增益的曲线。要是“野心”大一点,再加几个计算单元,可以做出不对称的增益,也就是升温时增益低一点,降温时增益高一点,以处理加热过程中常见的升温快、降温慢的问题。

双增益或误差平方都是在比例增益上作文章,同样的勾当也可以用在积分和微分上。更极端的一种PID规律叫积分分离PID,其思路是这样的:比例控制的稳定性好,响应快,所以偏差大的时候,把PID中的积分关闭掉;偏差小的时候,精细调整、消除余差是主要问题,所以减弱甚至关闭比例作用,而积分作用切入控制。概念是好的,但具体实施的时候,有很多无扰动切换的问题。

这些变态的PID在理论上很难分析系统的稳定性,但在实用中解决了很多困难的问题。大言不惭一句,这些PID本人在实际中都用过。

(八)复杂控制系统(过程控制)

打仗时,如果敌人太顽固,要么换更大的炮,把敌人轰倒;要么采用更巧妙的战术,把敌人晕倒。控制也是一样,单回路PID难以解决的问题,常常可以通过更巧妙的回路结构来解决。单一的PID回路当然可以实现扰动抑制,但要是主要扰动在回路中,而且是明确的,加一个内回路作帮手是一个很不错的主意。

还记得洗热水澡的例子吗?要是热水压力不稳定,老是要为这个而调整热水龙头,那很麻烦。要是有一个人专门负责根据热水压力调节热水流量,把热水压力稳定下来,而且稳定在标定值,那洗澡的时候,水温就容易控制多了,只要告诉那个人现在需要多少热水流量,而不必烦心热水压力对热水流量的影响。这个负责热水流量的控制回路就是内回路,也叫副回路,而洗澡的温度就是外回路,也叫主回路,当然是主回路指挥副回路。

这种主回路套副回路的结构叫串级控制(cascade control),曾经是单回路PID后工业上第一种“先进过程控制”,现在串级已经用得很多了,也不再有人叫它“先进过程控制”了。串级控制最主要的功用是抑制回路内的扰动,增强总体控制性能。不过串级也不能乱用。如果主回路和副回路的相应速度差不多,或者主回路的相应速度甚至慢于副回路(通过变态的调试是可以做到的),这样的串级要出问题。理论上可以用共振频率什么的分析,但是不用费那个事,用膝盖想想就知道,一个急性子的头儿把一个温吞水的下属指挥得团团转,结果只能是大家都精疲力竭,事情还办砸了。相反,一个镇定自若的头儿指挥一个手脚麻利的下属,那事情肯定办得好。

如果主要扰动在回路以外,但是可以预知,那就要用另一个办法,就是前面说到的前馈了。还是用洗热水澡的例子。如果冷水管和同一个水房的抽水马桶功用,你在洗澡,别人一抽水,那你就变煮熟的龙虾了。这个时候,要使那个人在抽水的同时告诉你一声,你算好时间,算好量,猛减热水,那温度还是可以大体不变的。这就是所谓前馈控制(feedforward control)。

前馈控制有两个要紧的东西:一是定量的扰动对被控变量的影响,也就是所谓前馈增益;二是扰动的动态,别人抽水到洗澡龙头的水温变热,这里面有一个过程,不是立时三刻的。如果可以精确知道这两样东西,那前馈补偿可以把可测扰动完全补偿掉。但实际上没有精确知道的事情,要是指望前馈来完全补偿,弄巧成拙是肯定的。所以前馈通常和反馈一起用,也就是在PID回路上再加一个前馈。一般也只用静态前馈,也就是只补偿扰动对被控变量的静态影响,而忽略扰动的动态因素,主要是为了静态前馈已经把前馈80%的好处发掘出来了,动态前馈既复杂又不可靠,在PID回路里很少有人用。

理论上的前馈都是在PID的控制作用上再加一个前馈作用,实际上也可以乘一个控制作用。乘法前馈的作用太猛,我从来没有用过,一般都是用加法。在实施中,前馈是和扰动的变化(也就是增量)成比例的,所以扰动变量不变了,前馈作用就消失,否则,整定前馈控制增益会对PID主回路造成扰动。前馈增益可以根据粗略计算得到,比如说,抽水的量会造成温度下降多少、需要调整多少热水流量才能维持温度,这不难从热量平衡算出来。不想费这个事的话,也可以从历史数据中推算。一般算出来一个前馈增益后,打上7折甚至5折再用,保险一点,不要矫枉过正。

前馈作用一般是用作辅助控制作用的,但是在特殊情况下,前馈也可以作为“预加载”(pre-loading)作为基准控制作用。比如说,在一个高压系统的启动过程中,压力可以从静止状态的常压很快地什到很高的压力。高压系统不容许阀门大幅度运动,所以控制增益都比较低,但是这样一来,启动升压过程中,压力控制的反应就十分迟缓,容易造成压力过高。这时用压缩机的转速或高压进料的流量作前馈,将压力控制阀“预先”放到大概的位置,然后再用反馈慢慢调节,就可以解决这个问题。

在前面提到用单个阀门有时难以控制大范围变化的流量,这是一个很实际的问题。工业阀门一般turn down只有10:1,也就是说,如果这个阀门的最大流量是100吨/小时的话,低于10吨/小时就难以控制了,当然,高于90吨/小时也几近失去控制。所以,要真的保证0-100的精确控制,需要将一个大阀和一个小阀并列,小阀负责小流量时的精确控制,大阀负责大流量时的精确控制,这就是所谓的分程控制(split range control)

分程控制时,小阀首先打开,超过小阀最大流量是小阀就固定在全开位置,大阀开始打开,接过控制。这是开-开型分程控制。也有关-开型分程控制,比如反应器夹套温度控制,随温度逐渐上升,冷却水逐渐关闭,直到冷却水全关,加热蒸气开始打开。分程控制当然不一定只有两截,三截甚至更多都是可以的,道理都一样。分程控制的问题在于不同阀门的交接点。阀门在特别小的开度时,控制非常不灵敏,前面说到的10:1也是这个道理。所以实用中,开-开型分程控制常常在交接点附近有一段重叠,也就是小阀快要全开但还没有全开时,大阀已经开始动作,这样,到小阀全开、不能再动弹时,大阀已经进入有效控制范围。关-开型分程控制常常在交接点设置一个死区,避免出现两个阀都有一点点开度的情况。分程控制的交接点的设置有一点讲究,应该根据阀的大小。比如A阀比B阀大一倍,那分程点应该设在1/3先开B阀,而不是懒汉做法的1/2。

很多过程参数都是可以测量的,但也有很多参数是没法直接测量的,这时,如果能够通过别的可以测量的过程参数来间接计算真正需要控制的参数,这就是所谓的推断控制(inferential control)。比如精馏塔顶的产品纯度可以用气相色谱(gas chromatograph,GC)来测量,但结果要等40分钟才能出来,用来做实时控制,黄花菜都凉了。推断控制是和“软传感器”(soft sensor)的概念紧密相连的。对精馏塔塔顶纯度这个例子来说,可以用纯度和塔顶温度、压力作一个数学模型,用可以测量的温度和压力,间接计算出纯度。在计算机控制普及的今天,这是很容易实现的,但是在很多地方,推断控制仍然被看成很神秘的东西,悲哀。

有的时候,对同一个变量有不止一个控制手段。比如说,风冷器有风扇的转速可以调节,也有百叶窗的开度可以调节。风扇转速的效果快,控制精确;百叶窗开度的效果猛,不容易掌握,但有利于节能。所以,可以用风扇的快速响应来控制温度,但是用百叶窗开度来通过温度间接地缓慢地影响风扇的转速,使风扇转速回到最经济的设定。当然百叶窗开度的控制回路必须要比风扇转速的控制回路整定得慢得多,一般是缓慢的纯积分控制,否则两人要打架。由于这相当于控制风扇转速的“阀位”,工业上称其为阀位控制(valve position control)。这个阀位控制也可以变一变,风扇转速高于某一数值(比如80%的最大转速)时,把百叶窗开大一格,还是高就继续开大;风扇转速低于某一数值(比如低于20%最大转速)时,把百叶窗关小一格。这实际上是一个单向的积分作用,不同的地方有两点:

一、有两个设定值,由风扇转速是高还是低而定.

二、积分作用只有在风扇转速在这两个“极限”的外面起作用,在里面时,百叶窗的开度不变
这样,风扇转速不必回到一个特定值,而是可以在一个范围内浮动。

另外一个两个控制器“竞争”一个控制阀的情况是选择性控制(override control或selective control)。举个例子,锅炉的温度由燃料流量控制,温度高了,燃料流量就减下来,但是燃料流量低到燃料管路压力低于炉膛压力,那要出现危险的回火,所以,这时,燃料管路压力就要接管控制,而牺牲炉膛温度。换句话说,正常时候,炉膛温度控制起作用,燃料管路压力低于一定数值时,燃料管路压力控制器作用。在实施时,就是炉膛温度控制器和燃料管路压力控制器的输出都接到一个高选器,然后搞选器的输出接到实际的燃料阀。这个概念很清楚,但是初次接触选择性控制的人,常常容易被高选还是低选搞糊涂,明明是压力太低,怎么是高选呢?其实,只要记住高选还是低选是从阀门这一头看的,和温度、压力的高度没有关系。如果“非常”变量超过界限了,你要阀门打开,那就是高选;你要阀门关闭,那就是低选。

(九)什么是现代控制理论

PID从二、三十年到开始在工业界广泛应用,戏法变了几十年,也该换换花样了。PID说一千道一万,还是经典控制理论的产物。50-60年代时,什么都要现代派,建筑从经典的柱式、比例、细节的象征意义,变到“形式服从功能”的钢架玻璃盒子;汽车从用机器牵引的马车,变到流线型的钢铁的艺术;控制理论也要紧跟形势,要现代化。这不,美国佬卡尔曼隆重推出……现代控制理论。

都看过舞龙吧?一个张牙舞爪的龙头气咻咻地追逐着一个大绣球,龙身子扭来扭去,还时不时跳跃那么一两下。想象一下,如果这是一条看不见的盲龙,只能通过一个人在龙尾巴后面指挥龙尾巴,然后再通过龙身体里的人一个接一个地传递控制指令,最后使龙头咬住绣球。这显然是一个动态系统,龙身越长,人越多,动态响应越迟缓。如果只看龙头的位置,只操控龙尾巴,而忽略龙身子的动态,那就是所谓的输入-输出系统。经典控制理论就是建立在输入-输出系统的基础上的。对于很多常见的应用,这就足够了。

但是卡尔曼不满足于“足够”。龙头当然要看住,龙尾巴当然要捏住,但龙身体为什么就要忽略呢?要是能够看住龙身体,甚至操纵龙身体,也就是说,不光要控制龙尾巴,控制指令还要直接传到龙身体里的那些人,那岂不更好?这就是状态空间的概念:将一个系统分解为输入、输出和状态。输出本身也是一个状态,或者是状态的一个组合。在数学上,卡尔曼的状态空间方法就是将一个高阶微分方程分解成一个联立的一阶微分方程组,这样可以使用很多线形代数的工具,在表述上也比较简洁、明了。

现在,龙头、龙尾巴、龙身体都要看,不光要看,还要直接操控龙头到龙尾的每一个人。但是,这龙不是想看就看得的,不是想舞就舞得的。说到“看”,直接能够测量/观测的状态在实际上是不多的,所谓看,实际上是估算。要是知道龙身体有多少节(就是有多少个人在下面撑着啦),龙身体的弹性/韧性有多少,那么捏住龙尾巴抖一抖,再看看龙头在哪里,是可以估算出龙身体每一节的位置的,这叫状态观测。那么,要是这龙中间有几位童子开小差,手不好好拉住,那再捏住龙尾巴乱抖也没用,这时系统中的部分状态就是不可观测的。如果你一声令下,部分童子充耳不闻,那这些状态就是不可控制的。卡尔曼从数学上推导出不可控和不可观的条件,在根本上解决了什么时候才不是瞎耽误工夫的问题。这是控制理论的一个重要里程碑。

(十)状态反馈与状态观测器

再来看这条龙。如果要看这条龙整齐不整齐,排成纵列的容易看清楚;如果要清点人数,看每一个人的动作,排成横列的容易看清楚。但是不管怎么排,这条龙还是这条龙,只是看的角度不同。那时候中国人的春节舞龙还没有在美国的中国城里闹腾起来,不知道卡尔曼有没有看到过舞龙,反正他把数学上的线性变换和线性空间的理论搬到控制里面,从此,搞控制的人有了工具,一个系统横着看不顺眼的话,可以竖着看,因为不管怎么看,系统的本质是一样的。但是不同的角度有不同的用处,有的角度设计控制器容易一点,有的角度分析系统的稳定性容易一点,诸如此类,在控制理论里就叫这个那个“标准型”。这是控制理论的又一个里程碑。

观测状态的目的最终还是控制。只用输出的反馈叫输出反馈,经典控制理论里的反馈都可以归到输出反馈里,但是用状态进行反馈的就叫状态反馈了。输出反馈对常见系统已经很有效了,但状态反馈要猛得多。你想想,一个系统的所有状态都被牢牢地瞄住,所有状态都乖乖地听从调遣,那是何等的威风?台商的大奶们的最高境界呀。

尽管学控制的人都要学现代控制理论,但大多数人记得卡尔曼还是因为那个卡尔曼滤波器(Kalman Filter)。说它是滤波器,其实是一个状态观测器(state observer),用来从输入和输出“重构”系统的状态。这重构听着玄妙,其实不复杂。不是有系统的数学模型吗?只要模型精确,给它和真实系统一样的输入,它不就乖乖地把系统状态给计算出来了吗?且慢:微分方程的解不光由微分方程本身决定,还有一个初始条件,要是初始条件不对,微分方程的解的形式是正确的,但是数值永远差一拍。卡尔曼在系统模型的微分方程后再加了一个尾巴,把实际系统输出和模型计算的理论输出相比较,再乘上一个比例因子,形成一个实际上的状态反馈,把状态重构的偏差渐进地消除,解决了初始条件和其他的系统误差问题。

卡尔曼滤波器最精妙之处,在于卡尔曼推导出一个系统的方法,可以考虑进测量噪声和系统本身的随机噪声,根据信噪比来决定上述比例因子的大小。这个构型其实不是卡尔曼的独创,隆伯格(Luenburg)也得出了类似的结构,但是从系统稳定性角度出发,来决定比例因子。同样的结构大量用于各种“预测-校正”模型结构,在工业上也得到很多应用,比如聚合反应器的分子重量分布可以用反应器的温度、进料配比、催化剂等来间接计算,但不够精确,也无法把林林总总的无法测量的干扰因素统统包括进数学模型里,这时用实验室测定的真实值来定期校正,就可以结合数学模型及时的特点和实验室结果精确的特点,满足实时控制的要求,这或许可以算静态的卡尔曼滤波器吧。卡尔曼滤波器最早的应用还是在雷达上。所谓边扫描边跟踪,就是用卡尔曼滤波器估计敌机的位置,再由雷达的间隙扫描结果来实际校正。实际应用中还有一个典型的问题:有时候,对同一个变量可以有好几个测量值可用,比如有的比较直接但不精确,有的是间接的估算,有很大的滞后但精确度高,这时可以用卡尔曼滤波器把不同来源的数据按不同的信噪比加权“整合”起来,也算是民用版的“传感器融合”(sensor fusion)吧。

除了卡尔曼滤波器外,卡尔曼的理论在实际中用得不多,但是卡尔曼的理论在理论上建立了一个出色的框架,对理解和研究控制问题有极大的作用。

顺便说一句,卡尔曼的理论基本局限于线形系统,也就是说,十块大洋买一袋米,二十块大洋就买两袋米,都是成比例的。实际系统中有很多非线性的,两千块大洋还能买两百袋米,但两千万大洋就要看米仓有没有货了,市场涨不涨价了,不是钱越多,买的米越多,有一个非线性的问题。非线性的问题研究起来要复杂得多。实际系统还有其他特性,有的是所谓时变系统,像宇宙火箭,其质量随时间和燃料的消耗而变,系统特性当然也就变了。很多问题都是多变量的,像汽车转弯,不光方向盘是一个输入,油门和刹车也是输入变量。但是,状态空间的理论在数学表述上为线性、非线性、单变量、多变量、时变、时不变系统提供了一个统一的框架,这是卡尔曼最大的贡献。

(十一)最优控制1

前面说到,搞控制有三拨人:电工出身的,化工出身的,和应用数学出身的。再卡尔曼之前,电工出身的占主导地位,数学家们好在象牙塔里打转转,化工出身则还对控制理论懵里懵懂,还在“实干”呢。卡尔曼之后,一大批数学出身的人,利用对数学工具的熟悉,转攻控制理论。一时间,控制理论的数学化似乎成了“天下大势,顺我者昌,逆我者亡”了。在状态空间的框架下,多变量没有太多的问题好研究,于是最优化成为控制理论的新时尚。

对于一根给定的曲线,求一阶导数为零的点,就是这个曲线的极点;在对这一极点球二阶导数,大于零就是最小点,小于零就是最大点。但是动态系统是一个微分方程,对微分方程求一阶导数为零,就导致变分法和所谓欧拉方程。但这个东西用起来不方便。实际的最优控制不大直接使用变分。

庞特里亚京的极大值原理听起来吓人,其实说白了很简单。看见那山吗?山顶就是最高点;看见那山坡吗?要是在山腰划一道线,从山下往上爬,尽管山坡还在继续往上延伸,但是到线为止,不得逾越,那山腰上那道三八线就是最高点(切,这还用说?)。这就是庞特里亚京的极大值原理。当然啦,庞特里亚京是用精巧、深奥的数学语言表述的,要不然他在数学界里也别混了。不过呢,意思就是这么一个意思。

庞特里亚京极大值原理的一个典型应用就是所谓最速控制问题,或者叫时间最优控制(time optimal control)问题,简单地说,就是给定最大马力和最大刹车功率,怎么开汽车能够最快地从A点开到B点。你可以用优美但繁琐的数学求证,或者用膝盖想想,最快的方法,就是一上来就加足马力,全速前进;然后在不到终点的某一地点,全力刹车,使慢下来的汽车在到达终点时正好停下来。这时最快的方法,不可能比这更快了。稍微发挥一点想象力,可以想象“梆”的一下,控制量的油门板一脚到底,再是“梆”的一下,刹车板一脚到底,控制任务就完成了。所以最速控制也叫“梆-梆”控制(bang bang control)。

最速控制在理论上是一个很有趣的问题,解法也是简洁、优美,但在实际中直接使用的例子实在是凤毛麟角,一般都是开始时用“梆-梆”,或者匀速上升到最大控制,以缓和控制的冲击力;到终点附近时,改用PID作闭环微调,以克服“梆-梆”的系统模型误差十分敏感的缺点。电梯控制就是这样一个例子。从一楼到四楼,电动机很快匀速上升到最高转速,一过三楼,电动机就匀速下降到较低的转速,然后根据电梯实际位置和楼面之差,有控制地减速,直至停下来。要是控制参数调得好的话,一下子就稳稳当当地停下来;要是调的不够好,会在停下来之前上下晃荡几下。

(十二)最优控制2

最速控制问题是较早的最优控制问题,它提供了一个很有趣的思路,但这颗树上开花结果不多。相比之下,最优控制的另外一支枝繁叶茂,有生气得多了。这一支就是线型二次型最优控制(linear quadratic control)。数学是有趣的,但数学也是盲目的。在数学上,最优化问题就是一个在曲面上寻找凸点的问题,只要你能把一个物理问题表述成一个曲面,数学是不理会姓无姓资的。既然如此,控制偏差的平方在时间上的累积就是很自然的选择,二次型就是平方在线性代数里的说法。线型系统的偏差平方有很好的性质,这山峰是一个馒头山,没有悬崖峭壁,没有沟坎,容易爬;一山只有一峰,不用担心找错地方。不过这山峰不能只包含控制偏差,还要包含控制量,原因有三个:

1、如果不包括控制量,那最优控制的解是没有意义的,因为无穷大的控制量可以使累计平方偏差为最小,但无穷大的控制量是不现实的。
2、控制量的大小通常和能量、物料的消耗连在一起,实际控制问题一般是“在最小能量、物料消耗小达到最高的控制精度”,所以在“山峰”中同时包含控制偏差和控制量是很自然的。
3、系统模型总是有误差的,误差“总是”在高频、大幅度控制作用下最突出,所以为了减低系统对模型误差的敏感性,也有必要限制控制量的大小。

所以线性二次型最优控制的“目标函数”(也就是定义山峰形状的数学表述)是一个控制偏差和控制量各自平方的加权和的积分。积分当然就是“在时间上的累积”了,加权和其实就是在控制偏差的平方项和控制量的平方相前分别乘以比例因子,然后再相加。两个比例因子的相对大小决定了谁更重要。运用矩阵微分和线型代数工具,不难导出线性二次型控制律—一个基本的状态反馈控制律!只是反馈增益矩阵是按最优化的要求计算出来的。

线型二次型最优控制开创了一整个新的控制领域,很快从状态空间走出来,进入其他领域,子孙繁衍,人丁兴旺。这一支是当今最优控制在应用中的主体。

线性二次型控制具有各种各样的优点,但是,线性二次型没有回答一个最基本的控制问题:这个闭环系统是不是稳定。这里,我们的饱受牵记的李亚普诺夫整出两个稳定性(或者叫收敛性)的定理,前一个没有什么太了不起的,把非线性系统线性化,就是把一根曲线用很多一小段、一小段的直线近似,然后按直线来分析。后一个就有点邪门了。老李琢磨出一个定理,说是对于任意一个系统,如果能找到一个自我耗散的能量函数(数学说法是正定函数),也就是其数值永远为正,但随时间渐进地趋向零,或者说这个能量函数对时间的导数永远为负,那这个系统就是稳定的。据说定理的证明是一个天才的杰作,我等凡人只有频频点头的份。不过想想也对,系统的能量耗散没了,系统不也就安分下来了吗?当然就稳定喽。

李亚普诺夫比卡尔曼还要数学家,他的定理只给出“如果存在……就……”,怎么找这个自我耗散的能量函数他没说,这个函数一般是什么样他也没说。这难不倒搞自动控制的广大革命群众。不是要正定函数吗?不是没有限制什么形式的正定函数吗?那就用控制偏差的平方吧。说干就干,但是干着干着,好玩的事情出现了,对偏差平方(或二次型)的求导,导出了和线性二次型最优控制推导过程中同样出现的一个所谓黎卡蒂方程(Riccati equation),感情这是殊途同归呀。换句话说,线性二次型控制总是稳定的。这是线性二次型控制的一个重要贡献:把最优性和稳定性连到一起

再扯一句李亚普诺夫,他的第二个定理非常威猛,但是有点像一个奇形怪状的大锤,到现在人们还在找合适的钉子,好用这把大锤砸几下。线性二次型控制是已知的仅有的几个钉子之一,另一个是变结构控制,也可以用李亚普诺夫方法,这是题外话了。

(十四)系统辨识1

形形色色的控制理论再牛,没有被控过程的数学模型,照样抓瞎。前面的洗澡水温就是一个数学模型。这个模型是杜撰的,当然可以很容易地给它所有模型参数。但在实际中,模型参数不会从天上掉下来。多少科学家毕生致力于建立某一特定的物理、生物、化学或别的学科的数学模型,基本机制已经清楚的模型都不容易建立,更不用说很多过程的基本机制或深层机制并不清楚。所以靠机理推导被控过程的数学模型是可能的,但对日常的控制问题来说,并不实际。这就是控制理论的另一个分支—辨识—一显身手的地方了。

如果给定一个模型,也就是一个数学公式,给它一组输入数据,模型就可以计算出对应的输出数据。比如说,给定模型y=2*x+1,再给出x=1,2,3,4,那y就等于3,5,7,9,就这么很简单。辨识的问题反过来,先给定一个模型结构,在这里就是y=ax+b,已知输入-输出数据是x=1,2时y=3,5,要求计算出a和b。显然,这是一个二元一次方程,谁都会解。在实际中,输入-输出的观察数据含有测量噪声,这对参数估计的精度不利;但通常积累观察的数据量远远超过未知参数的个数,不说数学,感觉上这就应该对克服测量噪声有利,关键是怎么利用这“多余”的数据。一个办法是把数据组两两配对,借众多的二元一次方程,然后对解出来的a和b作平均。还有一个办法就是有名的最小二乘法了,说穿了,就是以a和b为最优化的“控制量”,使模型输出和实际观测值之间的累积平方误差为最小。

实际工业过程大多有多年的运行经验,大量的数据不成问题。对于大多数常见过程,模型的基本结构和定性性质也可以猜一个八九不离十,有了如此有力的数学“大锤”,那么应该可以砸开一切建模的硬核桃啦。且慢,世上没有真正的“神奇”,一个问题解决了,另一个同等难度的问题又会出现。对于辨识来说,问题有好几个。

第一个问题是工业数据的闭环性。大多数重要参数都有闭环回路控制。如果没有闭环回路控制,那要么就是过程特性实在太复杂,简单回路控制不了;要么就是这个参数其实不重要,飘移一点没人在乎。然而,一旦闭环,系统地输入和输出就是相关的了。这一相关不要紧,输入-输出数据之间的因果性就全乱了:输出通过被控过程本身和输入相关(这是好的,辨识就是要测算出这个相关关系,输出要是和输入不相关,也没有控制或辨识什么事了),输入通过反馈和输出相关;输入-输出成为一个闭合系统,你可以用任意多条定理或方法证明同样的事:由于因果不分,闭环辨识是不可能的,除非另外加入“新鲜”的激励,比如使劲变设定值,或者在闭环回路里额外施加独立于输入、输出的激励信号,比如“莫名其妙”地把阀门动几下。

弄到最后,工业数据到底能用多少,就不是一个简单的回答。有的过程常年稳定操作,像乙烯装置,只有小范围的微调。这倒不是人家懒或者不求上进,而是这些装置早已高度优化,常年操作的极其接近极限的位置,但原料和产品单一,所以工艺状况不怎么大变。这种系统的闭环数据用起来很吃力,常常必须做一定的开环试验。有的过程经常在不同的状态之间转换(transition),或者由于不同的原料,如“吃”得很杂的炼油厂,或者由于不同的产品,如聚乙烯装置,这实际上就是“使劲变设定值”,是新鲜的激励。这种系统的闭环数据比较好用,但有别的问题,下面要谈到。

(十五)系统辨识2

第二个问题是动态和稳态。动态模型的作用有两个:一是描述需要多少时间输出才能达到某一数值;二是输出最终能够达到什么数值。用股票市场举一个例子,你需要知道两件事:一是这支股票最后会升到多少,二是需要多少时间才能升到那里,只知道其中一个对你并没有太大的用处。当然为了简化,这里假定这支股票一路飙升,不来忽升忽降火跌买涨卖的名堂。这就要求输入-输出数据必须包含充分的动态和稳态信息,过于偏颇其中一方面对另一方面会不利。

所以,长期稳定运行的过程中可能包含足够的稳态数据,但动态不足;常年不怎么稳定的过程可能包含足够的动态数据,但稳态不足。用PID控制打比方,精确的稳态数据有助于计算正确的比例控制增益,精确的动态数据有助于计算正确的积分和微分增益,显然,把比例增益整对了更为重要。为了获得精确的稳态,在辨识中常常需要等过程开环稳定下来才进行下一步,但是问题是,司机过程有时时间常数很长,几个精馏塔一串联,时间常数几个小时是客气的,一、两天都是可能的。这样一来,一个不太大的模型,十来个变量,开环试验一做就是一、两个星期。要是一个装置能够两个星期开环,那也不需要什么控制了。

第三个问题是激励的信噪比。都说人类活动是二氧化碳和温室效应的主要原因,但要是你去生一堆篝火,再去高空大气层去测一测二氧化碳和温室效应,肯定什么也测不出来,本来多少,现在还是多少。为什么呢?不是因为这堆篝火没有效果,而是环境中的自然的变化远远超过了篝火的作用,换句话说,就是噪声远远超过了信号。工业测试也是一样,信号一定要有一定的强度,否则是白耽误工夫。信号强度应该使过程达到严重失稳的边缘,这样才好获得在大范围内都精确的模型,以便控制器不光在“风平浪静”的情况下可以正常工作,在“惊涛骇浪”的情况下也能使系统恢复稳定。

然而,工厂以生产为主,在一切都“斤斤计较”的今天,如此大范围的测试所带来的产品损失甚至对设备的可能的危害,都是工厂极不愿意见到的。理论家们设计了一个伪随机信号,用一连串宽窄不等的方波信号,作为激励过程的输入,在理论上可以是过程参数的平均值不致偏离设定值太多,但ISO9000不仅要求产品质量的平均值要保证,产品质量的一致性也要保证。再说,伪随机信号的脉宽不好确定,太窄了,稳态数据不够;太宽了,和常规的阶跃信号也没有什么两样。所以伪随机信号在实际上用得很少。

第四个问题是输入的相关性。实际工业过程到了要用辨识来确定模型的时候,都是单回路对付不了了,所以都是多变量过程。在理论上,多个输入变量可以同时变化,只要输入变量的变化是相互独立的,数学上容许多个输入变量同时变化,而辨识可以正确地辨别模型。然而,在使用实际过程的历史数据时,常常遇到多个输入变量并不相互独立的问题。比如说,在制作巧克力的过程中,香草巧克力比较“苦”,或者说不太甜,而牛奶巧克力比较甜。

问题是做牛奶巧克力时,不光加糖,还要加牛奶(废话,不加牛奶那还是牛奶巧克力吗?)由于两者总是同时出现,在甜度模型里,就难以辨别甜度是由于加糖的关系,还是由于加牛奶的关系。有的时候可以根据对具体过程的认识,人工地限制辨识的过程,来消除这种影响,有的时候,就不太容易了,只好不用历史数据,专门做试验,用各自独立的输入,便是模型。

第五个问题是模型结构。模型结构包括两个方面,一是模型的阶数,二是剔除在物理上不可能的模型。辨识的模型归根结蒂还是差分方程,这就有一个如何预设阶数的问题。数学上有很多验前和验后的检验方法,在工业上,人们偷一个懒,改用费参数模型,也就是用一条响应曲线而不是一个方程来表述一个模型,这样就可以绕过阶数的问题。但是剔出不现实的模型还是一个手工活,需要对每一个模型仔细研究,以确定模型所描述的动态关系是否合理。数学方法还是不够可靠。

在搞模型的人中间,常常会听到黑箱、白箱和灰箱的说法。黑箱模型就是不理会实际过程的物理、化学等性质,纯粹从数学出发,假设一个模型结构,然后用种种数学方法找出一个最好的模型。白箱反其道而行之,从物理、化学等性质出发,建立机理模型。黑箱模型的好处是“放之四海而皆准”,不需要对具体过程有深入的了解。黑箱模型是一种削足适履的作法,但是如果履本身就做得比较好,具有相当的灵活性和适应性,就并不需要削足。由于黑箱模型可以自由假设模型结构,黑箱模型的处理和使用都比较方便。黑箱模型是经验主义的,数据里没有包含的情况,黑箱模型无法预测。

白箱模型则是“量身度造”的,反映了过程的物理、化学等性质,对实际过程的数据没有太大的依赖,对数据中不包含的情况也能可靠地预测。但是白箱模型的结构有具体问题决定,得出的模型不一定容易使用。在实际中,人们经常在假设一个模型结构的时候考虑进大大简化的过程机理,所以模型结构不是凭空拍脑袋出来,而是粗略地抓住了过程的基本特质,然后再用黑箱方法的“数据绞肉机”,将简化模型没有能够捕捉的细微末节一网打尽。这种模型结合了黑箱和白箱的特点,所以称为灰箱。实际建模中,纯粹黑箱或白箱的成功例子很少,灰箱的成功机会就要多得多。

不管什么箱,最后还是有一个如何辨识实际过程的问题。闭环辨识的好处不用多说了,问题是如何从闭环辨识中获得有用的模型。工业上有一个办法,没有一个“官名”,但实际上是一个开环-反馈过程。具体做法是这样的:先用粗略的过程知识构造一个简单的多变量控制器,其任务不是精确控制被控过程,而是将被控变量为此在极限之内,一旦逼近或超过极限,就采取动作将其“赶”回极限内;但只要在极限内,就按部就班地坐阶跃扰动,测试过程特性。测试的结果用来改进控制器的模型,然后再来一遍。几遍(一般两遍就够了)之后,模型精度应该很不错了。这个方法比较好地解决了辨识精度和过程稳定性的要求。

(十六)自适应控制

西游记里最好看的打斗是孙悟空大战二郎神那一段。孙悟空大不过就变,二郎神则是“敌变我变”,紧追不舍,最后把个无法无天的顽皮猴子擒拿归案。用控制理论的观点看,这“敌变我变”的本事就是自适应控制控制器结构根据被控过程的变化自动调整、自动优化。

自适应控制有两个基本思路,一是所谓模型跟踪控制,二是所谓之校正控制。模型跟踪控制也叫模型参考控制,在概念上对人们并不陌生。毛主席那阵子,经常树立各种榜样,目的就是要在党发出号召时,我们比照榜样的行为,尽量调整自己的行为,使我们的行为了榜样的行为接近。这就是模型跟踪控制的基本思路。模型跟踪控制在航空和机电上用得比较多,在过程控制中很少使用。

自校正控制的思路更接近人们对自适应的理解。自校正控制是一个两步走的过程,首先对被控过程作实时辨识,然后再辨识出来的模型的基础,实时地重新构造控制器。思路简单明了,实施也不算复杂,但自校正控制在一开始的欢呼后,并没有在工业上取得大范围的成功,原因何在呢?

原因之一是闭环辨识。虽然自校正控制不断改变控制器的参数,在一定程度上打破了固定增益反馈控制对输入、输出带来的因果关系,但是因果关系还是存在,还是相当强烈,对辨识模型的质量带来影响。

原因之二是所谓“协方差爆炸”。数学上当然有严格的说法,但简单地说,就是自校正控制器的目的当然还是系统稳定下来,但是在系统越来越稳定的过程中,自校正控制器对偏差和扰动的敏感度越来越高,最后到“万籁俱静”的时候,敏感度在理论上可以达到无穷大,然而,这时如果真的扰动来了,控制器一下子就手足无措了。

原因之三是实际过程的复杂性。在辨识实际过程时,最重要的步骤不是后面的“数学绞肉机”,而是对数据的筛选,必须把各种异常数据剔除出去,否则就是“垃圾进来,垃圾出去”。但是,要实时、自动地剔除异常数据,这个要求非同小可,比设计、投运一个自校正控制器费事多了。这是自校正控制在实际中成功例子有限的最大原因。

(十七)模型预估控制

自动控制从一开始就是以机电控制为主导的。60年代数学派主导了一段时间后,70年代化工派开始“小荷才露尖尖角”。自校正控制已经有很多化工的影子,但化工派的正式入场之作是模型预估控制(model predictive control,MPC)。这是一个总称,其代表作是动态矩阵控制(dynamic matrix control,DMC)。DMC是Charlie Cuttler的PhD论文,最先在壳牌石油公司获得应用,以后Cuttler自立门户,创办DMC公司,现在是Aspen Technology公司的一部分。

数学控制理论非常优美,放之四海而皆准,但是像老虎一样,看起来威猛,却是干不得活的,干活毕竟靠老牛。DMC的成功之处在于应用伪理论,将一些本来不相干的数学工具一锅煮,给一头老老实实的老牛披上一张绚烂的老虎皮,在把普罗大众唬得一愣一愣的时候,悄悄地把活干了。

DMC基本就是把非参数模型(在这里是截断的阶跃曲线)放入线性二次型最优控制的架构下,成功地解决了解决了多变量、滞后补偿和约束控制问题。多变量的含义不言自明,滞后放在离散动态模型下也很容易实现预测,这也没有什么稀奇。稀奇的是,DMC用“土办法”解决了约束控制问题。所有实际控制问题的控制量都有极限。加速时,油门踩到底了,那就是极限,再要多一马力也多不出来了。庞特里亚金的最大值原理在理论上可以处理约束控制问题,在实际上很难求出有用的解来,最速控制是一个特例。那DMC是怎么解决约束控制问题的呢?当某个控制量达到极限时,这个控制量就固定在极限值上了,这就不再是变量,而是已知量,把已知量代进去,将控制矩阵中相关的行和列抽掉,重新排列矩阵,剩余的接着求解。这也没有什么稀奇。令人头疼的是如何处理输出约束的问题。DMC把线性规划和控制问题结合起来,用线性规划解决输出约束的问题,同时解决了静态最优的问题,一石两鸟,在工业界取得了极大的成功。自卡尔曼始,这是第一个大规模产品化的“现代控制技术”,Cuttler在DMC上赚了大钱了,在“高技术泡沫”破碎之前把公司卖给Aspen Technology,更是赚得钵满盆溢。他女婿是一个医生,也不行医了,改行搞过程控制,跟着Cuttler干了。

DMC的英明之初在于从实际需要入手,不拘泥于理论上的严格性、完整性,人参、麻黄、红药水、狗皮膏药统统上,只要管用就行。在很长一段时间内,DMC的稳定性根本没有办法分析,但是它管用。搞实际的人容易理解DMC的歪道理,但搞理论的人对DMC很头疼。

DMC打开局面后,一时群雄蜂起,但尘埃落定之后,如今只有三家还在舞台上。Honeywell的RMPCT(Robust Multivariable Predictive Control Technology)是一个中国同胞开创的,他的独特之处在于引入“漏斗”概念。大部分控制问题都有一个特点:如果扰动当前,有一点控制偏差是可以容忍的;但时间一长,控制偏差应该消除。换句话说,这就像一个时间轴上对偏差的横放的漏斗。这个概念对复杂过程的MPC参数整定非常有用,已经在别的公司的产品上也出现了。

第三家就是方兴正艾的Pavilion Technology的Perfecter。美国公司有一个坏毛病,喜欢对好好的产品取一个不伦不类的名字。Perfecter的特色是将神经元技术(neural net)和MPC结合起来,所以可以有效地处理非线性过程。神经元模型没有什么神秘的,说穿了,就是具有某些特定复杂形式的回归模型,但是比回归模型更不适宜内插和外推。DMC也号称可以处理非线性,因为即使阶跃响应曲线拐上几拐,DMC照样囫囵吞枣,可以计算控制输出来,这就是非参数模型的好处。

但是问题在于DMC的结构框架毕竟还是线性的,阶跃响应的概念根本不适合非线性过程,因为非线性响应和输入的绝对数值、相对变化甚至变化方向有关,甚至可以更复杂,所以所谓DMC可以处理非线性是放空炮。如果实际过程的非线性不强,根本可以忽略它;如果实际过程有很强的非线性,DMC肯定抓瞎。那么,Perfecter用了神经元,是不是就所向披靡了呢?也不尽然。Perfecter继承了DMC不问理论、唯实用是问的好传统,但是Perfecter的基本骨架还是线性的MPC,只是用静态的神经元模型时不时地作一个线性化。Perfecter在理论上乏善可陈,在实用上还是管用的。