传感器知识-自动控制的故事

发布时间:2010-03-05

自动控制的故事
自动控制的科普综述文章少之又少,这一篇是难得好文章。甚至高于科普了。自
动化的学生,能够把自己学的道理理解到这种程度的,又能占到比例
呢?
写完聚乙烯的故事,就有写自动控制的故事的念头,但一直没有动笔。这个题目
太大了,大得都不知道从何说起。既然大家看聚乙烯的故事还有一点意思,四一
在催,马鹿要“一”什么的,那就接着写自动控制的故事吧。反正是故事,别太当
真,看着好玩就接着看,看着枯燥就拍桌子,看着有错就提个醒,看着糊涂的尽
管问,看着不耐烦了呢,也言语一声,我好闭上嘴不再烦人。哈哈。
(一)
小时候喜欢看杂书,没什么东西看,不正在文化大革命嘛?不过看进去了两个
“化”:机械化和自动化。打小就没有弄明白,这机械化和自动化到底有什么差别,
机器不是自己就会动的吗?长大了,算稍微明白了一点,这机械化是力气活,
用机器代替人的体力劳动,但还是要人管着的,不然机器是不知道该干什么不该
干什么的;这自动化嘛,就是代替人的重复脑力劳动,是用来管机器的。也就是
说,自动化是管着机械化的,或者说学自动化的是管着学机械的……啊,不对,
不对,哪是哪啊!
有人考证古代就有自动化的实例,但现代意义上的自动控制开始于瓦特的蒸汽
机。据说纽考门比瓦特先发明蒸汽机,但是蒸汽机的转速控制问题没有解决,弄
不好转速飞升,机器损坏不说,还可能说大事故。瓦特在蒸汽机的转轴上安了一
个小棍,棍的一端和放汽阀连着,放气阀松开来就关闭,转速增加;按下去阀就
打开,转速降低;棍的另一端是一个小重锤,棍中间某个地方通过支点和转轴连
接。转轴转起来的时候,小棍由于离心力的缘故挥起来。转速太高了,小棍挥会
挥得很高,放汽阀就被按下去打开,转速下降;转速太低了,小棍挥不起来,放
汽阀就被松开来关闭,转速回升。这样,蒸汽机可以自动保持稳定的转速,即保
证安全,又方便使用。也就是因为这个小小的转速调节器,瓦特的名字和工业革
命连在一起,而纽考门的名字就要到历史书里去找了。
类似的例子在机械系统里很多,家居的抽水马桶是另一个例子。放水冲刷后,
水箱里水位降低,浮子随水面下降,进水阀打开。随着水位的升高,进水阀逐渐
关闭,直到水位达到规定高度,进水阀完全关闭,水箱的水正好准备下一次使用。
这是一个非常简单但非常巧妙的水位控制系统,是一个经典的设计,但不容易用
经典的控制理论来分析,不过这是题外话了.
这些机械系统设计巧妙,工作可靠,实在是巧夺天工。但是在实用中,如果每次
都需要这样的创造性思维,那太累,好有一个系统的方法,可以解决“所有”
的自动控制问题,这就是控制理论的由来。
从小大人就教我们,走路要看路。为什么呢?要是不看着路,走路走歪了也不知
道,结果就是东撞西撞的。要是看着路呢?走歪了,马上就看到,赶紧调整脚步,
走回到正道上来。这里有自动控制里的个重要概念:反馈(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,因为早这种控制方式是用继电器或电磁开关来实现的)就足够了。
但是很多时候,这种“毛估估”的控制满足不了要求。汽车在高速公路上行驶,速
度设在定速巡航控制,速度飘下去几公里,心里觉得吃亏了,但要是飘上去几公
里,被警察抓下来吃一个罚单,这算谁的?
开关控制是不连续控制,控制作用一加就是“全剂量”的,一减也是“全剂量”的,
没有中间的过渡。如果空调机的制冷量有三个设定,:小、中、大,根据室温和
设定的差别来决定到底是用小还是中还是大,那室温的控制精度就可以大大提
高,换句话说,温度的“晃荡”幅度将大幅度减小。那么,如果空调机有更多的设
定,从小小到小中到……到大大,那控制精度是不是更高呢?是的。既然如此,
何不用无级可调的空调机呢?那岂不可以更地控制室温了吗?是的。
无级可调或连续可调的空调机可以控制温度,但开关控制不能再用了。家用
空调机中,连续可调的不占多数,但冲热水淋浴是一个典型的连续控制问题,因
为水可以连续调节水的流量。冲淋浴时,假定冷水不变,只调节热水。
那温度高了,热水关小一点;温度低了,热水开打一点。换句话说,控制作用应
该向减少控制偏差的方向变化,也就是所谓负负反馈。控制方向对了,还有一个
控制量的问题。温度高了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),思路倒是满有意思的。他
用增益作自变量,将系统的根(不管实的虚的)在复平面上画出轨迹来,要是轨
迹在左半平面打转转,那就是实根为负,就是稳定的。再深究下去,系统响应的
临界频率之类也可以计算出来。大的好处是,对于常见的系统,可以给出一套
作图规则来,熟练的大牛、小牛、公牛、母牛们,眼睛一瞄,随手就可以画出根
轨迹来,然后就可以告诉你,增益变化多,系统开始振荡,再增加,系
统会不稳定,云云。
根轨迹还是比较客气的,还有更变态的奈奎斯特、伯德和尼科尔斯法,想想脑子
都大。都是叫那帮电工分子害的。时至,计算机分析已经很普及了,但是古
典的图示分析还是有经久不衰的魅力,就是因为图示分析不光告诉你系统是稳定
还是不稳定,以及其他一些动态响应的参数,图示分析还可以定性地告诉你增益
变化甚至系统参数变化引起的闭环性能变化。咦,刚才还不是在说人家变态吗?
呃,变态也有变态的魅力不是?哈哈。
以频率分析(也称频域分析)为特色的控制理论称为经典控制理论。经典控制理
论可以把系统的稳定性分析得天花乱坠,但有两个前提:一、要已知被控对象的
数学模型,这在实际中不容易得到;二、被控对象的数学模型不会改变或漂移,
这在实际中更难做到。对简单过程建立微分方程是可能的,但简单过程的控制不
麻烦,经验法参数整定就搞定了,不需要费那个麻烦,而真正需要理论计算帮忙
的回路,建立模型太困难,或者模型本身的不确定性很高,使得理论分析失去意
义。经典控制理论在机械、航空、电机中还是有的应用,毕竟从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 难以解决的问题,常常可以通过更
巧妙的回路结构来解决。
单一的PID 回路当然可以实现扰动抑制,但要是主要扰动在回路中,而且是明确
的,加一个内回路作帮手是一个很不错的主意。还记得洗热水澡的例子吗?要是
热水压力不稳定,老是要为这个而调整热水,那很麻烦。要是有一个人专门
负责根据热水压力调节热水流量,把热水压力稳定下来,而且稳定在值,那
洗澡的时候,水温就容易控制多了,只要告诉那个人现在需要热水流量,而
不必烦心热水压力对热水流量的影响。这个负责热水流量的控制回路就是内回
路,也叫副回路,而洗澡的温度就是外回路,也叫主回路,当然是主回路指挥副
回路,就像自动化指挥机械化、学自控的人指挥学机电的人……打住打住,再扯
远了要挨鹿踹了,或者马踹、牛踹、驴踹……。这种主回路套副回路的结构叫串
级控制(cascade control),曾经是单回路PID 后工业上种“过程控
制”,现在串级已经用得很多了,也不再有人叫它“过程控制”了。串级控制
主要的功用是抑制回路内的扰动,增强体控制性能。不过串级也不能乱用。
如果主回路和副回路的相应速度差不多,或者主回路的相应速度甚至慢于副回路
(通过变态的调试是可以做到的),这样的串级要出问题。理论上可以用共振频
率什么的分析,但是不用费那个事,用膝盖想想就知道,一个急性子的头儿把一
个温吞水的下属指挥得团团转,结果只能是大家都精疲力竭,事情还办砸了。相
反,一个镇定自若的头儿指挥一个手脚麻利的下属,那事情肯定办得好。
如果主要扰动在回路以外,但是可以预知,那就要用另一个办法,就是马鹿前面
说到的前馈了。还是用洗热水澡的例子。如果冷水管和同一个水房的抽水马桶功
用,你在洗澡,别人一抽水,那你就变煮熟的龙虾了(本想说猴子PP 的,但是
那个不雅,我们要五讲四美不是?)。这个时候,要使那个人在抽水的同时告诉
你一声,你算好时间,算好量,猛减热水,那温度还是可以大体不变的。这就是
所谓前馈控制(feed-forward 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 fusi
on)吧。
除了卡尔曼滤波器外,卡尔曼的理论在实际中用得不多,但是卡尔曼的理论在理
论上建立了一个的框架,对理解和研究控制问题有极大的作用。
顺便说一句,卡尔曼的理论基本局限于线形系统,也就是说,十块大洋买一袋米,
二十块大洋就买两袋米,都是成比例的。实际系统中有很多非线性的,两千块大
洋还能买两百袋米,但两千万大洋就要看米仓有没有货了,市场涨不涨价了,不
是钱越多,买的米越多,有一个非线性的问题。非线性的问题研究起来要复杂得
多。实际系统还有其他特性,有的是所谓时变系统,像宇宙火箭,其质量随时间
和燃料的消耗而变,系统特性当然也就变了。很多问题都是多变量的,像汽车转
弯,不光方向盘是一个输入,油门和刹车也是输入变量。但是,状态空间的理论
在数学表述上为线性、非线性、单变量、多变量、时变、时不变系统提供了一个
统一的框架,这是卡尔曼大的贡献。

自动控制的故事

德国HBM电子测量技术

北京诺信天正科技有限公司

王杰:

电话:

上一篇:传感器知识-自动控制的故事二
下一篇:传感器知识