前面说到,搞控制有三拨人:电工出身的,化工出身的,和应用数学出身的。在卡尔曼之前,电工出身的占主导地位,数学家们好在象牙塔里打转转,化工出身则还对控制理论懵里懵懂,还在“实干”呢。卡尔曼之后,一大批数学出身的人,利用对数学工具的熟悉,转攻控制理论。一时间,控制理论的数学化似乎成了“天下大势,顺我者昌,逆我者亡”了。在状态空间的框架下,多变量没有太多的问题好研究,于是最优化成为控制理论的新时尚。
对于一根给定的曲线,求一阶导数为零的点,就是这个曲线的极点;在对这一极点球二阶导数,大于零就是最小点,小于零就是最大点。这时牛顿老爷子就整明白的东东,现在高中或大一人人都学过的东西。但是动态系统是一个微分方程,对微分方程求一阶导数为零,就导致变分法和所谓欧拉方程。但这个东西用起来不方便。实际的最优控制不大直接使用变分。
俄罗斯是一个奇怪的地方。老毛子们要么蔫蔫的,要么疯狂的。俄罗斯的悲剧电影看得你也郁闷得想去自杀。但是老毛子要是搭错筋整出一个喜剧呢?那你要么跟着疯狂,要么被逼疯狂。就是这么一个地方,除了无数托尔斯泰、柴可夫斯基、普希金、屠格涅夫等文艺巨璧外,俄罗斯也盛产数学家,其中两个是庞特里亚京和河里学控制的人老惦记着的李亚普诺夫。
庞特里亚京的极大值原理听起来吓人,其实说白了很简单。看见那山吗?山顶就是最高点(切,这还用你说吗?);看见那山坡吗?要是在山腰划一道线,从山下往上爬,尽管山坡还在继续往上延伸,但是到线为止,不得逾越,那山腰上那道三八线就是最高点(切,这还用说?)。这就是庞特里亚京的极大值原理。当然啦,庞特里亚京是用精巧、深奥的数学语言表述的,要不然他在数学界里也别混了。不过呢,意思就是这么一个意思。
庞特里亚京极大值原理的一个典型应用就是所谓最速控制问题,或者叫时间最优控制 (time optimal control)问题,简单地说,就是给定最大马力和最大刹车功率,怎么开汽车能够最快地从A点开到B点(什么转弯、上下坡、红绿灯,这种琐碎的事情也要拿来烦人?一点品味都没有!)。你可以用优美但繁琐的数学求证,或者用膝盖想想,最快的方法,就是一上来就加足马力,全速前进;然后在不到终点的某一地点,全力刹车,使慢下来的汽车在到达终点时正好停下来。这时最快的方法,不可能比这更快了。稍微发挥一点想象力,可以想象“梆”的一下,控制量的油门板一脚到底,再是“梆”的一下,刹车板一脚到底,控制任务就完成了。所以最速控制也叫“梆-梆”控制(Bang-Bang control)。
最速控制在理论上是一个很有趣的问题,解法也是简洁、优美,但在实际中直接使用的例子实在是凤毛麟角,一般都是开始时用“梆-梆”,或者匀速上升到最大控制,以缓和控制的冲击力;到终点附近时,改用PID作闭环微调,以克服“梆-梆”的系统模型误差十分敏感的缺点。电梯控制就是这样一个例子。从一楼到四楼,电动机很快匀速上升到最高转速,一过三楼,电动机就匀速下降到较低的转速,然后根据电梯实际位置和楼面之差,有控制地减速,直至停下来。要是控制参数调得好的话,一下子就稳稳当当地停下来;要是调的不够好,会在停下来之前上下晃荡几下。
最速控制问题是较早的最优控制问题,它提供了一个很有趣的思路,但这颗树上开花结果不多。相比之下,最优控制的另外一支枝繁叶茂,有生气得多了。这一支就是线型二次型最优控制(linear quadratic control)。数学是有趣的,但数学也是盲目的。在数学上,最优化问题就是一个在曲面上寻找凸点的问题,只要你能把一个物理问题表述成一个曲面,数学是不理会姓无姓资的。既然如此,控制偏差的平方在时间上的累积就是很自然的选择,二次型就是平方在线性代数里的说法。线型系统的偏差平方有很好的性质,这山峰是一个馒头山,没有悬崖峭壁,没有沟坎,容易爬;一山只有一峰,不用担心找错地方。不过这山峰不能只包含控制偏差,还要包含控制量,原因有三个:
1、如果不包括控制量,那最优控制的解是没有意义的,因为无穷大的控制量可以使累计平方偏差为最小,但无穷大的控制量是不现实的。
2、控制量的大小通常和能量、物料的消耗连在一起,实际控制问题一般是“在最小能量、物料消耗小达到最高的控制精度”,所以在“山峰”中同时包含控制偏差和控制量是很自然的
3、系统模型总是有误差的,误差“总是”在高频、大幅度控制作用下最突出,所以为了减低系统对模型误差的敏感性,也有必要限制控制量的大小。
所以线性二次型最优控制的“目标函数”(也就是定义山峰形状的数学表述)是一个控制偏差和控制量各自平方的加权和的积分。积分当然就是“在时间上的累积” 了,加权和其实就是在控制偏差的平方项和控制量的平方相前分别乘以比例因子,然后再相加。两个比例因子的相对大小决定了谁更重要。运用矩阵微分和线型代数工具,不难导出线性二次型控制律—一个基本的状态反馈控制律!只是反馈增益矩阵是按最优化的要求计算出来的。
线型二次型最优控制开创了一整个新的控制领域,很快从状态空间走出来,进入其他领域,子孙繁衍,人丁兴旺。这一支是当今最优控制在应用中的主体。
线性二次型控制具有各种各样的优点,但是,线性二次型没有回答一个最基本的控制问题:这个闭环系统是不是稳定。这里,我们的饱受牵记的李亚普诺夫同志出场了。李亚普诺夫也是一个脑子搭错筋的人,一百多年前,玩微分方程玩出了瘾,整出两个稳定性(或者叫收敛性)的定理,前一个没有什么太了不起的,把非线性系统线性化,就是把一根曲线用很多一小段、一小段的直线近似,然后按直线来分析。后一个就有点邪门了。老李琢磨出一个定理,说是对于任意一个系统,如果能找到一个自我耗散的能量函数(数学说法是正定函数),也就是其数值永远为正,但随时间渐进地趋向零,或者说这个能量函数对时间的导数永远为负,那这个系统就是稳定的。据说定理的证明是一个天才的杰作,我等凡人只有频频点头的份。不过想想也对,系统的能量耗散没了,系统不也就安分下来了吗?当然就稳定喽。
李亚普诺夫比卡尔曼还要数学家,他的定理只给出“如果存在……就……”,怎么找这个自我耗散的能量函数他没说,这个函数一般是什么样他也没说。这难不倒搞自动控制的广大革命群众。不是要正定函数吗?不是没有限制什么形式的正定函数吗?那就用控制偏差的平方吧。说干就干,但是干着干着,好玩的事情出现了,对偏差平方(或二次型)的求导,导出了和线性二次型最优控制推导过程中同样出现的一个所谓黎卡蒂方程(Riccati equation),感情这是殊途同归呀。换句话说,线性二次型控制总是稳定的。这是线性二次型控制的一个重要贡献:把最优性和稳定性连到一起。
再扯一句李亚普诺夫,他的第二个定理非常威猛,但是有点像一个奇形怪状的大锤,到现在人们还在找合适的钉子,好用这把大锤砸几下。线性二次型控制是已知的仅有的几个钉子之一,另一个是变结构控制,也可以用李亚普诺夫方法,这是题外话了。
都说瓦特的蒸汽机后,计算机是影响人类进程最大的发明,计算机当然也对自动控制带来深刻的影响。如前所述,控制理论基本上都是围绕微分方程转的,所以在“本质”上是连续的。但是数字计算机是离散的,也就是说,数字控制器的眼睛不是一直盯着被控对象看的,而是一眨一眨的。数字控制器的“手脚”也不是一刻不停地连续动作的,而是一顿一顿的。这是数字计算机的天性使然。于是,传统的控制理论全部“翻译”到离散时间领域,微分方程变成了差分方程,所有方法、结论都有了连续、离散两套,不尽相同,但是大同小异。
要是数字控制就是简单的连续系统离散化,计算机控制也就没有什么了不起。离散控制带来了一些连续控制所不可能具备的新特点,这就是:差分方程用清晰界定的时刻之间的关系来描述动态过程。回到洗热水澡的例子,如果热水龙头不在跟前,而是在村外一里地的小锅炉房里,你只能用电话遥控,那水温可以表示为
下一分钟水温=0.7*现在水温+0.2*上一分钟水温+0.1*再上一分钟水温+0.4*(5分钟前锅炉房龙头开度-6分钟前锅炉房龙头开度)
显然,下一分钟的水温受现在水温的影响比上一分钟和再上一分钟的水温的影响要大,但锅炉房龙头开度要是不变,现在、上一分钟、再上一分钟水温都一样的话,下一分钟的水温也应该和现在的水温一样。为什么用5分钟前锅炉房的龙头开度呢?那是因为热水从村外流到洗澡房要有一定的时间,这个时间就是滞后。要是把时间向前推,那现在的龙头开度就会影响5分钟后的水温。这说明了离散模型的一个重要特质:预估能力。所有预报模型都是建立在离散模型的这个预估能力上,不管是天气预报,还是经济预测,还是自动控制里对有滞后的过程的控制。
数字控制的另一特质是可以实施一些不可能在连续时间实现的控制规律。工业上常有控制量的变化需要和当前的实际值有关的情况。比如对于不同的产品,反应器的转化率总是大体在88-92%之间,没有太大的变化,但是催化剂可以在 0.5到35ppm之间变化,采用常规的PID的话,增益就非常难设,对一个情况合适了,对另一个情况就不合适。所以催化剂需要按百分比变化率调整,而不是简单地按偏差比例调整。比如说,转化率偏离1%时,催化剂要是在0.5ppm,应该调整0.05ppm;但是在15ppm的时候,就应该是 1.5ppm。这样,控制律就可以表示为:
当前的控制量=上一步的控制量*(设定值/当前的测量值)
也就是说,在被控变量高于设定值10%的情况下,控制量也增加10%;测量值和设定值一样时,控制量不再变化。实际使用时,谁除以谁要根据测量值上升你是要控制量上升还是下降来决定,控制律也要稍微修改一下,成为
当前的控制量=上一步的控制量*(当前的测量值/设定值)^k
k 次方是用来调整控制律对“偏差”(这是已经不是差值,而是比值了,严格地说,应该叫“偏比”?)的灵敏度,相当于比例增益。这个控制律实际上相当于对数空间的纯积分控制,要是有兴趣,对很多常见的非线性过程有相当不错的效果,实现也简单。然而,这是一个本质离散的控制律,在连续时间里无法实现。
离散控制可以“看一步、走一步”的特性,是连续控制很难模仿的,也是在实际中极其有用的。
形形色色的控制理论再牛,没有被控过程的数学模型,照样抓瞎。前面的洗澡水温就是一个数学模型。这个模型是杜撰的,当然可以很容易地给它所有模型参数。但在实际中,模型参数不会从天上掉下来。多少科学家毕生致力于建立某一特定的物理、生物、化学或别的学科的数学模型,基本机制已经清楚的模型都不容易建立,更不用说很多过程的基本机制或深层机制并不清楚。所以靠机理推导被控过程的数学模型是可能的,但对日常的控制问题来说,并不实际。这就是控制理论的另一个分支—辨识—一显身手的地方了。
如果给定一个模型,也就是一个数学公式,给它一组输入数据,模型就可以计算出对应的输出数据。比如说,给定模型y=2*x+1,再给出x=1,2,3,4,那y就等于3,5,7,9,就这么很简单。辨识的问题反过来,先给定一个模型结构,在这里就是y=a*x +b,已知输入-输出数据是x=1,2时y=3,5,要求计算出a和b。显然,这是一个二元一次方程,谁都会解。在实际中,输入-输出的观察数据含有测量噪声,这对参数估计的精度不利;但通常积累观察的数据量远远超过未知参数的个数,不说数学,感觉上这就应该对克服测量噪声有利,关键是怎么利用这“多余” 的数据。一个办法是把数据组两两配对,借众多的二元一次方程,然后对解出来的a和b作平均。还有一个办法就是有名的最小二乘法了,说穿了,就是以a和b为最优化的“控制量”,使模型输出和实际观测值之间的累积平方误差为最小。
实际工业过程大多有多年的运行经验,大量的数据不成问题。对于大多数常见过程,模型的基本结构和定性性质也可以猜一个八九不离十,有了如此有力的数学“大锤”,那么应该可以砸开一切建模的硬核桃啦。且慢,世上没有真正的“神奇子弹”,一个问题解决了,另一个同等难度的问题又会出现。对于辨识来说,问题有好几个。
第一个问题是工业数据的闭环性。大多数重要参数都有闭环回路控制。如果没有闭环回路控制,那要么就是过程特性实在太复杂,简单回路控制不了;要么就是这个参数其实不重要,飘移一点没人在乎。然而,一旦闭环,系统地输入和输出就是相关的了。这一相关不要紧,输入-输出数据之间的因果性就全乱了:输出通过被控过程本身和输入相关(这是好的,辨识就是要测算出这个相关关系,输出要是和输入不相关,也没有控制或辨识什么事了),输入通过反馈和输出相关;输入-输出成为一个闭合系统,你可以用任意多条定理或方法证明同样的事:由于因果不分,闭环辨识是不可能的,除非另外加入“新鲜”的激励,比如使劲变设定值,或者在闭环回路里额外施加独立于输入、输出的激励信号,比如“莫名其妙” 地把阀门动几下。弄到最后,工业数据到底能用多少,就不是一个简单的回答。有的过程常年稳定操作,像乙烯装置,只有小范围的微调。这倒不是人家懒或者不求上进,而是这些装置早已高度优化,常年操作的极其接近极限的位置,但原料和产品单一,所以工艺状况不怎么大变。这种系统的闭环数据用起来很吃力,常常必须做一定的开环试验。有的过程经常在不同的状态之间转换(transition),或者由于不同的原料,如“吃”得很杂的炼油厂,或者由于不同的产品,如聚乙烯装置,这实际上就是“使劲变设定值”,是新鲜的激励。这种系统的闭环数据比较好用,但又别的问题,下面要谈到。
第二个问题是动态和稳态。动态模型的作用有两个:一是描述需要多少时间输出才能达到某一数值;二是输出最终能够达到什么数值。用股票市场举一个例子,你需要知道两件事:一是这支股票最后会升到多少,二是需要多少时间才能升到那里,只知道其中一个对你并没有太大的用处。当然为了简化,这里假定这支股票一路飙升,不来忽升忽降火跌买涨卖的名堂。这就要求输入-输出数据必须包含充分的动态和稳态信息,过于偏颇其中一方面对另一方面会不利。所以,长期稳定运行的过程中可能包含足够的稳态数据,但动态不足;常年不怎么稳定的过程可能包含足够的动态数据,但稳态不足。用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在理论上乏善可陈,在实用上还是管用的。
前面说到PID在当今过程控制中占至少85%,那MPC就要占14.5%了。
计算机对自动控制的影响要是只局限在离散控制理论上,那也就不是计算机控制了。事实上,80年代以后新建的化工厂,基本都采用计算机控制。说是可以采用比 PID更先进的技术,实际上,绝大多数还是在用PID,加上顺序控制,按部就班地执行一系列动作。那计算机控制的好处到底在什么地方呢?
过程控制的实际装置最初全是直接安装在现场的,后来出现气动单元仪表,可以把压缩空气的信号管线从现场拉到中心控制室,操作工可以在中控观察、控制全厂了。电动单元仪表防爆问题解决后,中控的使用更加广泛。操作工坐在仪表板前,对所辖工段的情况一目了然。但是随着工厂的增大和过程的复杂,仪表板越来越长,一个大型化工厂随随便便就可以有上千个基本控制回路和上万个各种监控、报警点,仪表板非有几百米长不可,这显然是不可能的。生产过程的高度整合,使一两个人控制整个工厂不光满足削减人工的需要,也对减少通讯环节、综合掌控全局有利。所以,计算机显示屏就不光是酷,而是必须的了。另外,计算机控制使现场仪表(阀门、测量变送器等)的自检成为可能,大大提高了系统的可靠性。于是,计算机控制就是不花没人性了。
计算机控制从一开始的集中控制(用 IBM的大型机)到现在的分散控制(所谓Distributed Control System,DCS)走过一个螺旋形上升的过程。集中控制的要害在于风险集中,要是大型机挂了,全厂都要失控。分散控制将全厂划分为若干条条块块,用以微处理器为基础的一个控制用局部网来分散控制,主要子系统都是实时冗余的,故障时在第一时间内切换到备用系统,主系统和备用系统在平时定期互相自检、切换,以保证可靠。分散控制显然大大提高由于计算机本身引起的可靠性。但是现场仪表和接线终端(field terminal assembly,FTA)不是冗余的,整个可靠性链还是有漏洞。另外,控制局部网的同轴电缆长度有物理限制,FTA到DCS的长度也有物理限制,所以最后分散控制还是不怎么分散,全是集中在中控室附近或地下室里。不过DCS在地理上的集中,并不妨碍其在逻辑上的分散,只要不是一把火把 DCS的机房烧掉,部件可靠性的问题还是可以很好地隔离在小范围。
既然DCS是一个局部网,那就有一个通信协议的问题。DCS基本上用两大类型的通信协议:轮询(polling)和中断。轮询由中心控制单元轮流查询所有子系统,不管有没有数据更新,到时候就来问一遍,所以不管什么时候,系统地通信流量都很高,但是恒定。中断方式正好相反,子系统自己先检查一下,如果数据没有变化,就不上网更新;直到数据有变化,再上网“打一个招呼”。这个方式的平时通信流量较低,所以网路带宽要求较低。但是生产过程发生异常时,大量警报数据蜂拥而来,如果带宽不够,就会发生通信阻塞的问题。所以,中断和轮询到最后对带宽的要求是一样的,因为谁也不能承担生产过程异常时通信阻塞的后果。
二十年前,Honeywell是第一个吃DCS这个螃蟹的公司,今天Honeywell仍然是行业里的老大,尽管其设备昂贵,被戏称为Moneywell。当年的DCS全是量身度造的硬件、软件。今天在“开放系统”(open architecture)的大潮里,DCS的制造厂家都纷纷将控制台和计算、网络控制单元转向通用的WINTEL或UNIX平台,自己专注于工控专用装置(如基本控制装置,包括I/O)和系统的软件整合。但是这带来了新的问题。通用/商用硬件、软件的可靠性常常不能满足24小时、365天的连续运转要求。对于大多数IT来说,机子坏了,两小时内换上就是很快的了。但是对于生产过程来说,这是不可容忍的。开放结构容许将DCS和经营、管理、办公网络相连接,极大地提高了信息交流速度和深度、广度,但也带来了网络安全问题,紧接着就是DCS前面竖起一道又一道的防火墙,把数据分享和远程操控压缩到最低。另外就是WINTEL夜以继日的不断更新换代,使硬件、软件的稳定性十分糟糕,没有过多少时间,又要升级,又是头疼。这是DCS的第二个螺旋形上升,只是现在还是盘旋多于上升。
计算机控制的领地也在扩大,类似USB那样的技术也开始用于数字化的仪表。过去的仪表都必须把信号线拉到接线板 (marshalling panel)上,然后再连到FTA上,这样同样远在百把米外的10台仪表,需要并行拉线,很浪费。用了类似USB的现场总线(field bus),各个仪表可以“挂”在总线上,然后一根总线连到DCS就可以了,大大节约拉线费用和时间,对系统(如加一个测量用的变送器或控制阀)的扩展也极为方便。
DCS的最大优越性是可编程。这不是简单的像PLC(programmable logic controller,可编程序逻辑控制器,多用于机电控制)的梯形逻辑那样编程,而是可以像C、FORTRAN那样“正规”的编程。没有在IT干过,只能和学校里计算机语言课程和大作业的程序相比。DCS编程和平常的编程相比,还是有一些特点的。首先,DCS的程序属于“再入”式,也就是定时反复运行的,而不是一次从头到底运行就完事的。所以DCS程序可以在运行完毕时在内存里存放数据,到下次运行时再调用,形成所谓“递归”运算。这既是优点,也是缺点,要是别人在你两次运算中间把那个中间数据更改了,你就惨了,找债主都不容易。
DCS程序的特色是实时,所以其执行非常取决于一系列事件在时间上的顺序。时序上要是搞岔了,老母鸡也就变鸭了。问题是,分散控制要求越分散越好,不光是可靠性,在系统资源的调度上,分散了也容易使系统的计算负荷均匀。这样一来,一个应用程序包常常将一个巨大的程序打散成很多小程序,各自的时序和衔接就要非常小心。
和学术型控制计算程序最大的不同,或许还在于对异常情况的处理。一个多变量控制问题在实际上常常会有部分变量处于手动控制,而其余变量处于自动控制的情况。这在理论上是一个麻烦,在实际上是一个噩梦。不光要考虑所有的排列、组合,还要考虑所有情况平顺的切入、切出,不同模式之间的切换。还有就是要考虑异常情况下如何安全、自动地退出自动控制,交还手动控制。有时操作规程上的一句话,程序写写就是一页。如果操作规程上来一句“视情处理”,那就更惨了。在所有控制程序中,控制计算通常不超过30%,20%为人机接口功能,而50%为异常情况处理。
计算机控制不是因为更先进、更有效的人机界面才开始的。从一开始,人机界面 就面临一个管中窥豹的问题。计算机的CRT显屏只有这么大,不可能 “一言以蔽之”,在一瞥之中把所有的过程信息尽收眼底。计算机可以不断地换屏,分段显示其他装置、工段的信息,但是把所有的工段、装置分别用各自的画幅表示,如果没有有效的组织,找都不容易找到,就像在同一个目录里杂乱无章地放上百把个文件一样。分级的菜单是传统的解决办法,但是要逐级上去再逐级下来,很费时间,情急之中,往往来不及更换。大键盘上short cut键可以“一键调出”,但需要死记硬背,这可不是几个、十几个画幅,而是上百个甚至更多。很长时间以来,如何有效地在画幅之间导航,可以在最短时间和最少点击内,不需要死记硬背,就可以直观地找到所需要的画幅,一直是一个令人头疼的问题。
人机界面设计的另一个问题是色彩。还记得DOS 2.0时代的WordStar吗?那是黑底绿字的。那时候,CRT亮度不足,寿命也糟糕,黑底可以延长寿命,绿字可以增加反差,帮助阅读,反正机房是暗暗的,黑底并不伤眼睛。到了WordPerfect 5.0的时候,就是蓝底白字了,字和背景之间的反差大大减小,蓝底也比较适宜于在明亮的房间内使用。到了Word的时代,没有昏暗的机房了,基本上都用像纸上写字一样的白底黑字了,再用黑底绿字,太伤眼睛。
中控室计算机显示也经历了类似的旅程。早期DCS的显示都是黑底绿字的,到了用 WINTEL或UNIX的时代,很多人出于习惯,仍然采用黑底绿字,但是现代人机工程研究表明,浅色背景大大减低眼睛的疲劳,在明亮室内的灯光对屏幕的反光也小,所以控制室的显示开始向浅灰背景进化了。人机工程研究同时发现,色彩可以作为过程信息的一部分,天下太平的时候,应该用最不显眼的灰色,所有的图形、数据都用不同深浅的灰色来表示,只有在过程参数越限或报警时,才采用彩色显示,这样可以一下子就把操作工的注意力吸引到需要的地方。但是,出于习惯思维,很多地方还是大量采用各种色彩表示不同的设备状态和参数,即使是正常状态也是一样。这样在平日里色彩缤纷很好看,但在异常情况时,不容易在万马军中找到上将的首级,实际上是舍本逐末。
显示器的布置也很有讲究,少了当然不行,也不是越多越好,一个操作工的视界的上下左右有一定的范围,控制台的色彩、构造、照明都不能想当然的。这不是助长修正主义,而是保持操作工最有效地控制生产过程的要求。
传统上,如果操作工不抱怨,控制回路的性能就是可以接受的,除非你想精益求精,一般不会去没事找事,重新整定参数。在对经济效益斤斤计较的今天,生产过程的工艺条件被推到极端,对控制性能提出极大的挑战,控制回路必需时时、处处都在最优状态。随着控制回路数的迅速增长,单靠人工观察,已经难于随时掌握所有控制回路的性能状况了。控制回路性能评估技术应运而生。
理论上,对一个过程可以设计一个最优控制,其中一种就叫最小方差控制。这其实是线性二次型最优控制的一种,控制作用比较猛,但是这是理论上的极限,控制方差不可能再小了。90年代时,理论界提出一个方法,可以用闭环辨识的方法,不辨识模型,而是直接确定理论上的最小方差,然后将实际方差和理论上的最小方差相比,判别控制回路是否需要重新整定。这个方法开创了控制回路性能评估的先河,但是在实用上不容易排除不利影响,应用不多。
然而,不和理论上的最优值比较,而是和实际上的理想值比较,就可以绕过很多麻烦的理论问题。比如说,流量回路应该在1分钟内安定下来,那理想值就是1分钟。通过快速富利叶变换和频域分析,可以将理论性能和实际性能相比较,迅速确定回路的当前性能状况。最要紧的是,这可以用计算机自动采集数据,自动计算,每天早上(或随便什么时候)给出报表,控制工程师可以一目了然,哪些回路需要重新整定,哪些没有问题,可以有的放矢。实时频域分析还可以将所有以相近频率振荡的回路罗列出来,接下来控制工程师就可以按图索骥,找出害群之马了。
控制回路性能评估的下一步当然就是自动整定。这实际上是一个简化的、断续运行的自校正PID控制器,在理论上已经没有问题,但实用上还有很多可靠性问题没有完全解决,现在产品不少,但实用的还是不多。
对控制回路性能评估的更进一步,当然就是对生产过程的故障诊断了。故障就是异常情况,异常就是和正常不一样。所以故障诊断的核心在于如何探测这“不一样”。
故 障总是有蛛丝马迹的,问题在于工业过程的数据量太大,在大海里捞针,等捞到的时候,常常已经时过境迁了。在数据分析中,PLS(其实是 Peojection to Latent Structure,而不是一般所认为的Partial Least Square)和主元分析(Principal Component Analysis,PCA)是很流行的方法。PLS和PCA将众多相关的变量归拢到少数几个“合成”的变量,这样一个有大量变量的复杂大系统就可以简化为一个小系统,就从大海捞针变为碗里捞针了。捞出来的针不再是单个的变量,而是变量的组合。这和实际是相符的,故障的早期征兆常常是若干变量的组合,而不能单从一两个变量上看出来。
PLS和PCA还可以和图形方法结合起来使用。比如说,将那些合成变量标称化,就是除以正常值,那所有合成变量的标称值就是1。把所有变量画成“蜘蛛图”(spider chart),每一个蜘蛛脚代表一个合成变量,由于合成变量的标称值都是1,蜘蛛图就是大体为圆的。如果哪一个脚出现变化,蜘蛛就不圆了,非常容易看出异常来,接下来就可以有的放矢地寻找故障的早期迹象了。
图形数据分析的另一个路子是所谓co-linear分析。这是IBM早年琢磨出来的一个东西,理论上简直没有东西,但要求换一个思路,正所谓退一步海阔天空。平常的数据点,三维以上就没法画了。但是如果把三维空间的所有数轴画成平行线,而不是常见的直角坐标,那三维空间里的一个点,就是连接三根平行线的一根折线。如果仅此而已,那也就是一个简单但愚蠢的数学游戏。平行坐标系的妙处在于,平行线可以尽着画,所以5维、20维、3千维,只要纸足够大,都可以画,而且可以看见,而不是只能想像。平行坐标只有一个缺点,就是只能表述离散的点,而难以表述连续的线或面,但这对计算机采集的数据来说,不是问题,计算机采集的数据本来就是离散的点。这样,用平行坐标把大量的数据点画成折线簇,可以很直观地看出数据中的模式来。
故障诊断的另一个思路是对整个过程进行辨识。辨识出来的模型表述系统的行为,故障当然就是行为的改变,所以将实时辨识出来的模型和正常模型相比较,就可以判断系统是否出现异常或故障。
计算机和模型的另一个用处就是仿真。仿真(simulation)也叫模拟,但是模拟容易和模拟电路(analog circuit)搞混,所以现在叫仿真多了。只要对实际过程有一个足够精确的模型,计算机是可以相当精确地模仿实际系统的行为的。
仿真有静态仿真和动态仿真。静态仿真基本上就是解一个巨大的非线性联立方程组,描述空间分布的微分方程也被有限元方法分解了。现代静态仿真已经可以做得相当精确,但这也是在多年结合实际过程数据“磨合”模型的基础上才能做到的。静态仿真大量用于工艺设备设计计算,但是对研究实际过程的真实行为的作用有限,因为对整个生产过程和工艺的仿真要考虑进各个设备动作的时间和控制回路的影响,这些静态仿真是无法体现的。动态仿真要解同样巨大的联立微分方程组,由于要达到实时或更快,一般只能大大简化,否则计算速度跟不上。希望有朝一日,动态仿真可以达到静态仿真同等的精度,而不必担心损失计算速度。
仿真在工业上十分有用。现代化工厂越来越稳定,越来越安全,很多操作工一辈子也没有遇到过真正危险的情况。但没有遇到过不等于不会遇到,操作工必须接受足够的训练,只有这样,才能当遇到危险情况时,首先能及时、正确地识别故障,然后才能及时、正确地作出反应。这就要靠仿真训练了。现代化工厂也在不断地拓展工艺参数的极限,经常需要做各种各样的试验。有了仿真,就可以预先验证试验的构思,和验证对紧急情况的处理。
仿真更是控制工程师的好帮手,新的控制回路先放到仿真上试一下,得出初始整定参数,验证异常情况的处理能力,然后再放到真家伙上,可以避免很多不必要的惊讶。
仿 真的一个远亲是实时最优化(real time optimization,RTO)。对于斤斤计较的现代制造业,实时最优化当然是求之不得的。实时最优化就是把整个生产过程当一个大的实时仿真来运算,实时(实际上是每小时)计算出最优工况。想法是好的,困难是多的。首先,那么大一个方程组收敛不容易,要划成很多条条块块,分别求解,然后拼起来。问题就出在“拼”上,边界条件碰不拢怎么办?模型总是有相当的简化,其中有些参数必须和实际测量值符合,有些就没有实际测量值对应,就是“经验系数” (fudge factor)了。这些经验系数就是承担收拾烂账的,边界碰不拢,就调整经验系数,使他们对齐。问题是,好多时候,这一招也不灵,所以实时最优化的喇叭吹得很响,真正用起来的很少,花了大钱最后放弃的也不在少数。
和打仗一样,赢得战斗的是武士,不是武器。控制工程师是控制回路成功与否的关键,而不是价值千金的计算机,或者“放之四海而皆准”的数学控制理论。
在加拿大,化工系的控制“专业”要选满所有化工学分,然后再加选控制学分,所以要求比一般的化学工程师还要高一点。选满化工学分是很重要的一点,如果没有对化工的话语权,那化工控制也别混了,这一点是国内(至少是二十多年前我读大学的时候)所欠缺的。这就像医生一样,只有对生理、病理有深刻的了解,对病人的具体情况有深刻的了解,才有可能可靠地判断病情,才能可靠地开方治病。只会看单抓药,这就不是医生,而是药剂师了。在实际中,控制工程师对工艺过程的动态行为的理解至少应该和工艺工程师同等,和操作工相当。事实上,很多时候,控制工程师的使命就是将工艺工程师和操作工的经验和知识具体化、自动化了,如果你不能深刻理解,那如何实现呢?一个优秀的控制工程师可以在操作工不在的时候,当班操作;可以在工艺工程师不在的时候,做出工艺决定。
但是控制工程师毕竟不是工艺工程师,也不是操作工。控制工程师应该掌握前面说到的所有领域,从数学控制理论,到计算机网络,到人机工程,到工艺和仪表知识。这个要求很高,但不是不切实际的。这些是搅这个瓷器活所必需的金刚钻。这也是为什么现在工业界热衷于招雇具有硕士学位的控制毕业生,因为本科的几年已经很难学习必须的知识了。至于博士,那还是有眼高手低的嫌疑,呵呵。
专业知识只是成功的一面,控制工程师必须善于与人打交道。工艺工程师比较好说,毕竟有类似的背景,但操作工是控制系统成败的关键,如果无法取得操作工对你个人和你的控制系统的信任和合作,那控制系统很可能就是永久性地被关闭,操作工宁愿手工控制,出了问题还是因为控制系统不可靠,你就等着里外不是人吧。但是取得操作工的信任和合作后,事情会向相反的方向发展。操作工会主动向你提出改进建议,或新的想法,主动找机会帮你试验新的功能,主动拓展控制系统的性能极限。如果说顾客是上帝的话,操作工而不是部门主管才是控制工程师的上帝。
控制工程师也要善于和头儿打交道,毕竟搞项目、要钱的时候,还是要找头儿的。打报告、作报告、项目控制和管理、和供应商打交道,这些都是必备的技能。
工艺工程师也是工程师,但用军队的比方来说,他们人多势众,更像常规部队,习惯大兵团协同作战。控制工程师则像特种部队,人数少,行止怪癖(至少对工艺的人来说,他们永远弄不明白控制的人到底在做什么,怎么做出来的),从规划到实施到维修,全一手包办。
控制理论的发展历程就是一个寻找“放之四海而皆准”的“神奇子弹”的历程,终极目标是可以用一个统一的数学控制工具去“套”任何一个具体的控制问题,而不必对具体过程的物理、化学等特性有深入的理解。控制理论的每一次重大进展,都给人们带来希望,“这一次终于找到了”。但每一次希望都带来了新的失望,新方法、新工具解决了老问题,但带来了新的局限,有的时候甚至转了一圈兜回去了。新的局限往往比老问题更棘手,需要对过程的理解是更多而不是更少。矛和盾就是这么着在螺旋形上升中斗法。
但是现实常常和人们的认识背道而驰。在商业化的大潮中,推销先进控制算法的公司拍胸脯担保可以如何如何用“万能”的数学控制工具解决一切控制问题,那些绚烂的老虎皮也确实照得不明就里的人眼花缭乱,心旌飘荡;公司的头儿也一口吃进,毕竟“技术万能论”不仅在美军中盛行,在北美的公司文化中也是大行其道。直到有一天,人们发现永动机依然是神话,人还是不能在水上步行,方才想起来,原来世上是没有这等好事的。不过这是题外话了。
本来就知道这个系列会又臭又长,但是既然写了,就写完吧,希望没有占用太多的带宽,希望没有浪费大家的时间,希望给对自动控制有兴趣的朋友提供一点入门的知识,希望给同好提供一些从实际中得到的经验,错误的地方肯定很多,敬请原谅,同时谢谢阅读。
1楼
0
0
回复
对于一根给定的曲线,求一阶导数为零的点,就是这个曲线的极点;在对这一极点球二阶导数,大于零就是最小点,小于零就是最大点。这时牛顿老爷子就整明白的东东,现在高中或大一人人都学过的东西。但是动态系统是一个微分方程,对微分方程求一阶导数为零,就导致变分法和所谓欧拉方程。但这个东西用起来不方便。实际的最优控制不大直接使用变分。
俄罗斯是一个奇怪的地方。老毛子们要么蔫蔫的,要么疯狂的。俄罗斯的悲剧电影看得你也郁闷得想去自杀。但是老毛子要是搭错筋整出一个喜剧呢?那你要么跟着疯狂,要么被逼疯狂。就是这么一个地方,除了无数托尔斯泰、柴可夫斯基、普希金、屠格涅夫等文艺巨璧外,俄罗斯也盛产数学家,其中两个是庞特里亚京和河里学控制的人老惦记着的李亚普诺夫。
庞特里亚京的极大值原理听起来吓人,其实说白了很简单。看见那山吗?山顶就是最高点(切,这还用你说吗?);看见那山坡吗?要是在山腰划一道线,从山下往上爬,尽管山坡还在继续往上延伸,但是到线为止,不得逾越,那山腰上那道三八线就是最高点(切,这还用说?)。这就是庞特里亚京的极大值原理。当然啦,庞特里亚京是用精巧、深奥的数学语言表述的,要不然他在数学界里也别混了。不过呢,意思就是这么一个意思。
庞特里亚京极大值原理的一个典型应用就是所谓最速控制问题,或者叫时间最优控制 (time optimal control)问题,简单地说,就是给定最大马力和最大刹车功率,怎么开汽车能够最快地从A点开到B点(什么转弯、上下坡、红绿灯,这种琐碎的事情也要拿来烦人?一点品味都没有!)。你可以用优美但繁琐的数学求证,或者用膝盖想想,最快的方法,就是一上来就加足马力,全速前进;然后在不到终点的某一地点,全力刹车,使慢下来的汽车在到达终点时正好停下来。这时最快的方法,不可能比这更快了。稍微发挥一点想象力,可以想象“梆”的一下,控制量的油门板一脚到底,再是“梆”的一下,刹车板一脚到底,控制任务就完成了。所以最速控制也叫“梆-梆”控制(Bang-Bang control)。
最速控制在理论上是一个很有趣的问题,解法也是简洁、优美,但在实际中直接使用的例子实在是凤毛麟角,一般都是开始时用“梆-梆”,或者匀速上升到最大控制,以缓和控制的冲击力;到终点附近时,改用PID作闭环微调,以克服“梆-梆”的系统模型误差十分敏感的缺点。电梯控制就是这样一个例子。从一楼到四楼,电动机很快匀速上升到最高转速,一过三楼,电动机就匀速下降到较低的转速,然后根据电梯实际位置和楼面之差,有控制地减速,直至停下来。要是控制参数调得好的话,一下子就稳稳当当地停下来;要是调的不够好,会在停下来之前上下晃荡几下。
最速控制问题是较早的最优控制问题,它提供了一个很有趣的思路,但这颗树上开花结果不多。相比之下,最优控制的另外一支枝繁叶茂,有生气得多了。这一支就是线型二次型最优控制(linear quadratic control)。数学是有趣的,但数学也是盲目的。在数学上,最优化问题就是一个在曲面上寻找凸点的问题,只要你能把一个物理问题表述成一个曲面,数学是不理会姓无姓资的。既然如此,控制偏差的平方在时间上的累积就是很自然的选择,二次型就是平方在线性代数里的说法。线型系统的偏差平方有很好的性质,这山峰是一个馒头山,没有悬崖峭壁,没有沟坎,容易爬;一山只有一峰,不用担心找错地方。不过这山峰不能只包含控制偏差,还要包含控制量,原因有三个:
1、如果不包括控制量,那最优控制的解是没有意义的,因为无穷大的控制量可以使累计平方偏差为最小,但无穷大的控制量是不现实的。
2、控制量的大小通常和能量、物料的消耗连在一起,实际控制问题一般是“在最小能量、物料消耗小达到最高的控制精度”,所以在“山峰”中同时包含控制偏差和控制量是很自然的
3、系统模型总是有误差的,误差“总是”在高频、大幅度控制作用下最突出,所以为了减低系统对模型误差的敏感性,也有必要限制控制量的大小。
所以线性二次型最优控制的“目标函数”(也就是定义山峰形状的数学表述)是一个控制偏差和控制量各自平方的加权和的积分。积分当然就是“在时间上的累积” 了,加权和其实就是在控制偏差的平方项和控制量的平方相前分别乘以比例因子,然后再相加。两个比例因子的相对大小决定了谁更重要。运用矩阵微分和线型代数工具,不难导出线性二次型控制律—一个基本的状态反馈控制律!只是反馈增益矩阵是按最优化的要求计算出来的。
线型二次型最优控制开创了一整个新的控制领域,很快从状态空间走出来,进入其他领域,子孙繁衍,人丁兴旺。这一支是当今最优控制在应用中的主体。
线性二次型控制具有各种各样的优点,但是,线性二次型没有回答一个最基本的控制问题:这个闭环系统是不是稳定。这里,我们的饱受牵记的李亚普诺夫同志出场了。李亚普诺夫也是一个脑子搭错筋的人,一百多年前,玩微分方程玩出了瘾,整出两个稳定性(或者叫收敛性)的定理,前一个没有什么太了不起的,把非线性系统线性化,就是把一根曲线用很多一小段、一小段的直线近似,然后按直线来分析。后一个就有点邪门了。老李琢磨出一个定理,说是对于任意一个系统,如果能找到一个自我耗散的能量函数(数学说法是正定函数),也就是其数值永远为正,但随时间渐进地趋向零,或者说这个能量函数对时间的导数永远为负,那这个系统就是稳定的。据说定理的证明是一个天才的杰作,我等凡人只有频频点头的份。不过想想也对,系统的能量耗散没了,系统不也就安分下来了吗?当然就稳定喽。
李亚普诺夫比卡尔曼还要数学家,他的定理只给出“如果存在……就……”,怎么找这个自我耗散的能量函数他没说,这个函数一般是什么样他也没说。这难不倒搞自动控制的广大革命群众。不是要正定函数吗?不是没有限制什么形式的正定函数吗?那就用控制偏差的平方吧。说干就干,但是干着干着,好玩的事情出现了,对偏差平方(或二次型)的求导,导出了和线性二次型最优控制推导过程中同样出现的一个所谓黎卡蒂方程(Riccati equation),感情这是殊途同归呀。换句话说,线性二次型控制总是稳定的。这是线性二次型控制的一个重要贡献:把最优性和稳定性连到一起。
再扯一句李亚普诺夫,他的第二个定理非常威猛,但是有点像一个奇形怪状的大锤,到现在人们还在找合适的钉子,好用这把大锤砸几下。线性二次型控制是已知的仅有的几个钉子之一,另一个是变结构控制,也可以用李亚普诺夫方法,这是题外话了。
都说瓦特的蒸汽机后,计算机是影响人类进程最大的发明,计算机当然也对自动控制带来深刻的影响。如前所述,控制理论基本上都是围绕微分方程转的,所以在“本质”上是连续的。但是数字计算机是离散的,也就是说,数字控制器的眼睛不是一直盯着被控对象看的,而是一眨一眨的。数字控制器的“手脚”也不是一刻不停地连续动作的,而是一顿一顿的。这是数字计算机的天性使然。于是,传统的控制理论全部“翻译”到离散时间领域,微分方程变成了差分方程,所有方法、结论都有了连续、离散两套,不尽相同,但是大同小异。
要是数字控制就是简单的连续系统离散化,计算机控制也就没有什么了不起。离散控制带来了一些连续控制所不可能具备的新特点,这就是:差分方程用清晰界定的时刻之间的关系来描述动态过程。回到洗热水澡的例子,如果热水龙头不在跟前,而是在村外一里地的小锅炉房里,你只能用电话遥控,那水温可以表示为
下一分钟水温=0.7*现在水温+0.2*上一分钟水温+0.1*再上一分钟水温+0.4*(5分钟前锅炉房龙头开度-6分钟前锅炉房龙头开度)
显然,下一分钟的水温受现在水温的影响比上一分钟和再上一分钟的水温的影响要大,但锅炉房龙头开度要是不变,现在、上一分钟、再上一分钟水温都一样的话,下一分钟的水温也应该和现在的水温一样。为什么用5分钟前锅炉房的龙头开度呢?那是因为热水从村外流到洗澡房要有一定的时间,这个时间就是滞后。要是把时间向前推,那现在的龙头开度就会影响5分钟后的水温。这说明了离散模型的一个重要特质:预估能力。所有预报模型都是建立在离散模型的这个预估能力上,不管是天气预报,还是经济预测,还是自动控制里对有滞后的过程的控制。
数字控制的另一特质是可以实施一些不可能在连续时间实现的控制规律。工业上常有控制量的变化需要和当前的实际值有关的情况。比如对于不同的产品,反应器的转化率总是大体在88-92%之间,没有太大的变化,但是催化剂可以在 0.5到35ppm之间变化,采用常规的PID的话,增益就非常难设,对一个情况合适了,对另一个情况就不合适。所以催化剂需要按百分比变化率调整,而不是简单地按偏差比例调整。比如说,转化率偏离1%时,催化剂要是在0.5ppm,应该调整0.05ppm;但是在15ppm的时候,就应该是 1.5ppm。这样,控制律就可以表示为:
当前的控制量=上一步的控制量*(设定值/当前的测量值)
也就是说,在被控变量高于设定值10%的情况下,控制量也增加10%;测量值和设定值一样时,控制量不再变化。实际使用时,谁除以谁要根据测量值上升你是要控制量上升还是下降来决定,控制律也要稍微修改一下,成为
当前的控制量=上一步的控制量*(当前的测量值/设定值)^k
k 次方是用来调整控制律对“偏差”(这是已经不是差值,而是比值了,严格地说,应该叫“偏比”?)的灵敏度,相当于比例增益。这个控制律实际上相当于对数空间的纯积分控制,要是有兴趣,对很多常见的非线性过程有相当不错的效果,实现也简单。然而,这是一个本质离散的控制律,在连续时间里无法实现。
离散控制可以“看一步、走一步”的特性,是连续控制很难模仿的,也是在实际中极其有用的。
形形色色的控制理论再牛,没有被控过程的数学模型,照样抓瞎。前面的洗澡水温就是一个数学模型。这个模型是杜撰的,当然可以很容易地给它所有模型参数。但在实际中,模型参数不会从天上掉下来。多少科学家毕生致力于建立某一特定的物理、生物、化学或别的学科的数学模型,基本机制已经清楚的模型都不容易建立,更不用说很多过程的基本机制或深层机制并不清楚。所以靠机理推导被控过程的数学模型是可能的,但对日常的控制问题来说,并不实际。这就是控制理论的另一个分支—辨识—一显身手的地方了。
如果给定一个模型,也就是一个数学公式,给它一组输入数据,模型就可以计算出对应的输出数据。比如说,给定模型y=2*x+1,再给出x=1,2,3,4,那y就等于3,5,7,9,就这么很简单。辨识的问题反过来,先给定一个模型结构,在这里就是y=a*x +b,已知输入-输出数据是x=1,2时y=3,5,要求计算出a和b。显然,这是一个二元一次方程,谁都会解。在实际中,输入-输出的观察数据含有测量噪声,这对参数估计的精度不利;但通常积累观察的数据量远远超过未知参数的个数,不说数学,感觉上这就应该对克服测量噪声有利,关键是怎么利用这“多余” 的数据。一个办法是把数据组两两配对,借众多的二元一次方程,然后对解出来的a和b作平均。还有一个办法就是有名的最小二乘法了,说穿了,就是以a和b为最优化的“控制量”,使模型输出和实际观测值之间的累积平方误差为最小。
实际工业过程大多有多年的运行经验,大量的数据不成问题。对于大多数常见过程,模型的基本结构和定性性质也可以猜一个八九不离十,有了如此有力的数学“大锤”,那么应该可以砸开一切建模的硬核桃啦。且慢,世上没有真正的“神奇子弹”,一个问题解决了,另一个同等难度的问题又会出现。对于辨识来说,问题有好几个。
第一个问题是工业数据的闭环性。大多数重要参数都有闭环回路控制。如果没有闭环回路控制,那要么就是过程特性实在太复杂,简单回路控制不了;要么就是这个参数其实不重要,飘移一点没人在乎。然而,一旦闭环,系统地输入和输出就是相关的了。这一相关不要紧,输入-输出数据之间的因果性就全乱了:输出通过被控过程本身和输入相关(这是好的,辨识就是要测算出这个相关关系,输出要是和输入不相关,也没有控制或辨识什么事了),输入通过反馈和输出相关;输入-输出成为一个闭合系统,你可以用任意多条定理或方法证明同样的事:由于因果不分,闭环辨识是不可能的,除非另外加入“新鲜”的激励,比如使劲变设定值,或者在闭环回路里额外施加独立于输入、输出的激励信号,比如“莫名其妙” 地把阀门动几下。弄到最后,工业数据到底能用多少,就不是一个简单的回答。有的过程常年稳定操作,像乙烯装置,只有小范围的微调。这倒不是人家懒或者不求上进,而是这些装置早已高度优化,常年操作的极其接近极限的位置,但原料和产品单一,所以工艺状况不怎么大变。这种系统的闭环数据用起来很吃力,常常必须做一定的开环试验。有的过程经常在不同的状态之间转换(transition),或者由于不同的原料,如“吃”得很杂的炼油厂,或者由于不同的产品,如聚乙烯装置,这实际上就是“使劲变设定值”,是新鲜的激励。这种系统的闭环数据比较好用,但又别的问题,下面要谈到。
第二个问题是动态和稳态。动态模型的作用有两个:一是描述需要多少时间输出才能达到某一数值;二是输出最终能够达到什么数值。用股票市场举一个例子,你需要知道两件事:一是这支股票最后会升到多少,二是需要多少时间才能升到那里,只知道其中一个对你并没有太大的用处。当然为了简化,这里假定这支股票一路飙升,不来忽升忽降火跌买涨卖的名堂。这就要求输入-输出数据必须包含充分的动态和稳态信息,过于偏颇其中一方面对另一方面会不利。所以,长期稳定运行的过程中可能包含足够的稳态数据,但动态不足;常年不怎么稳定的过程可能包含足够的动态数据,但稳态不足。用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在理论上乏善可陈,在实用上还是管用的。
前面说到PID在当今过程控制中占至少85%,那MPC就要占14.5%了。
计算机对自动控制的影响要是只局限在离散控制理论上,那也就不是计算机控制了。事实上,80年代以后新建的化工厂,基本都采用计算机控制。说是可以采用比 PID更先进的技术,实际上,绝大多数还是在用PID,加上顺序控制,按部就班地执行一系列动作。那计算机控制的好处到底在什么地方呢?
过程控制的实际装置最初全是直接安装在现场的,后来出现气动单元仪表,可以把压缩空气的信号管线从现场拉到中心控制室,操作工可以在中控观察、控制全厂了。电动单元仪表防爆问题解决后,中控的使用更加广泛。操作工坐在仪表板前,对所辖工段的情况一目了然。但是随着工厂的增大和过程的复杂,仪表板越来越长,一个大型化工厂随随便便就可以有上千个基本控制回路和上万个各种监控、报警点,仪表板非有几百米长不可,这显然是不可能的。生产过程的高度整合,使一两个人控制整个工厂不光满足削减人工的需要,也对减少通讯环节、综合掌控全局有利。所以,计算机显示屏就不光是酷,而是必须的了。另外,计算机控制使现场仪表(阀门、测量变送器等)的自检成为可能,大大提高了系统的可靠性。于是,计算机控制就是不花没人性了。
计算机控制从一开始的集中控制(用 IBM的大型机)到现在的分散控制(所谓Distributed Control System,DCS)走过一个螺旋形上升的过程。集中控制的要害在于风险集中,要是大型机挂了,全厂都要失控。分散控制将全厂划分为若干条条块块,用以微处理器为基础的一个控制用局部网来分散控制,主要子系统都是实时冗余的,故障时在第一时间内切换到备用系统,主系统和备用系统在平时定期互相自检、切换,以保证可靠。分散控制显然大大提高由于计算机本身引起的可靠性。但是现场仪表和接线终端(field terminal assembly,FTA)不是冗余的,整个可靠性链还是有漏洞。另外,控制局部网的同轴电缆长度有物理限制,FTA到DCS的长度也有物理限制,所以最后分散控制还是不怎么分散,全是集中在中控室附近或地下室里。不过DCS在地理上的集中,并不妨碍其在逻辑上的分散,只要不是一把火把 DCS的机房烧掉,部件可靠性的问题还是可以很好地隔离在小范围。
既然DCS是一个局部网,那就有一个通信协议的问题。DCS基本上用两大类型的通信协议:轮询(polling)和中断。轮询由中心控制单元轮流查询所有子系统,不管有没有数据更新,到时候就来问一遍,所以不管什么时候,系统地通信流量都很高,但是恒定。中断方式正好相反,子系统自己先检查一下,如果数据没有变化,就不上网更新;直到数据有变化,再上网“打一个招呼”。这个方式的平时通信流量较低,所以网路带宽要求较低。但是生产过程发生异常时,大量警报数据蜂拥而来,如果带宽不够,就会发生通信阻塞的问题。所以,中断和轮询到最后对带宽的要求是一样的,因为谁也不能承担生产过程异常时通信阻塞的后果。
二十年前,Honeywell是第一个吃DCS这个螃蟹的公司,今天Honeywell仍然是行业里的老大,尽管其设备昂贵,被戏称为Moneywell。当年的DCS全是量身度造的硬件、软件。今天在“开放系统”(open architecture)的大潮里,DCS的制造厂家都纷纷将控制台和计算、网络控制单元转向通用的WINTEL或UNIX平台,自己专注于工控专用装置(如基本控制装置,包括I/O)和系统的软件整合。但是这带来了新的问题。通用/商用硬件、软件的可靠性常常不能满足24小时、365天的连续运转要求。对于大多数IT来说,机子坏了,两小时内换上就是很快的了。但是对于生产过程来说,这是不可容忍的。开放结构容许将DCS和经营、管理、办公网络相连接,极大地提高了信息交流速度和深度、广度,但也带来了网络安全问题,紧接着就是DCS前面竖起一道又一道的防火墙,把数据分享和远程操控压缩到最低。另外就是WINTEL夜以继日的不断更新换代,使硬件、软件的稳定性十分糟糕,没有过多少时间,又要升级,又是头疼。这是DCS的第二个螺旋形上升,只是现在还是盘旋多于上升。
计算机控制的领地也在扩大,类似USB那样的技术也开始用于数字化的仪表。过去的仪表都必须把信号线拉到接线板 (marshalling panel)上,然后再连到FTA上,这样同样远在百把米外的10台仪表,需要并行拉线,很浪费。用了类似USB的现场总线(field bus),各个仪表可以“挂”在总线上,然后一根总线连到DCS就可以了,大大节约拉线费用和时间,对系统(如加一个测量用的变送器或控制阀)的扩展也极为方便。
DCS的最大优越性是可编程。这不是简单的像PLC(programmable logic controller,可编程序逻辑控制器,多用于机电控制)的梯形逻辑那样编程,而是可以像C、FORTRAN那样“正规”的编程。没有在IT干过,只能和学校里计算机语言课程和大作业的程序相比。DCS编程和平常的编程相比,还是有一些特点的。首先,DCS的程序属于“再入”式,也就是定时反复运行的,而不是一次从头到底运行就完事的。所以DCS程序可以在运行完毕时在内存里存放数据,到下次运行时再调用,形成所谓“递归”运算。这既是优点,也是缺点,要是别人在你两次运算中间把那个中间数据更改了,你就惨了,找债主都不容易。
DCS程序的特色是实时,所以其执行非常取决于一系列事件在时间上的顺序。时序上要是搞岔了,老母鸡也就变鸭了。问题是,分散控制要求越分散越好,不光是可靠性,在系统资源的调度上,分散了也容易使系统的计算负荷均匀。这样一来,一个应用程序包常常将一个巨大的程序打散成很多小程序,各自的时序和衔接就要非常小心。
和学术型控制计算程序最大的不同,或许还在于对异常情况的处理。一个多变量控制问题在实际上常常会有部分变量处于手动控制,而其余变量处于自动控制的情况。这在理论上是一个麻烦,在实际上是一个噩梦。不光要考虑所有的排列、组合,还要考虑所有情况平顺的切入、切出,不同模式之间的切换。还有就是要考虑异常情况下如何安全、自动地退出自动控制,交还手动控制。有时操作规程上的一句话,程序写写就是一页。如果操作规程上来一句“视情处理”,那就更惨了。在所有控制程序中,控制计算通常不超过30%,20%为人机接口功能,而50%为异常情况处理。
计算机控制不是因为更先进、更有效的人机界面才开始的。从一开始,人机界面 就面临一个管中窥豹的问题。计算机的CRT显屏只有这么大,不可能 “一言以蔽之”,在一瞥之中把所有的过程信息尽收眼底。计算机可以不断地换屏,分段显示其他装置、工段的信息,但是把所有的工段、装置分别用各自的画幅表示,如果没有有效的组织,找都不容易找到,就像在同一个目录里杂乱无章地放上百把个文件一样。分级的菜单是传统的解决办法,但是要逐级上去再逐级下来,很费时间,情急之中,往往来不及更换。大键盘上short cut键可以“一键调出”,但需要死记硬背,这可不是几个、十几个画幅,而是上百个甚至更多。很长时间以来,如何有效地在画幅之间导航,可以在最短时间和最少点击内,不需要死记硬背,就可以直观地找到所需要的画幅,一直是一个令人头疼的问题。
人机界面设计的另一个问题是色彩。还记得DOS 2.0时代的WordStar吗?那是黑底绿字的。那时候,CRT亮度不足,寿命也糟糕,黑底可以延长寿命,绿字可以增加反差,帮助阅读,反正机房是暗暗的,黑底并不伤眼睛。到了WordPerfect 5.0的时候,就是蓝底白字了,字和背景之间的反差大大减小,蓝底也比较适宜于在明亮的房间内使用。到了Word的时代,没有昏暗的机房了,基本上都用像纸上写字一样的白底黑字了,再用黑底绿字,太伤眼睛。
中控室计算机显示也经历了类似的旅程。早期DCS的显示都是黑底绿字的,到了用 WINTEL或UNIX的时代,很多人出于习惯,仍然采用黑底绿字,但是现代人机工程研究表明,浅色背景大大减低眼睛的疲劳,在明亮室内的灯光对屏幕的反光也小,所以控制室的显示开始向浅灰背景进化了。人机工程研究同时发现,色彩可以作为过程信息的一部分,天下太平的时候,应该用最不显眼的灰色,所有的图形、数据都用不同深浅的灰色来表示,只有在过程参数越限或报警时,才采用彩色显示,这样可以一下子就把操作工的注意力吸引到需要的地方。但是,出于习惯思维,很多地方还是大量采用各种色彩表示不同的设备状态和参数,即使是正常状态也是一样。这样在平日里色彩缤纷很好看,但在异常情况时,不容易在万马军中找到上将的首级,实际上是舍本逐末。
显示器的布置也很有讲究,少了当然不行,也不是越多越好,一个操作工的视界的上下左右有一定的范围,控制台的色彩、构造、照明都不能想当然的。这不是助长修正主义,而是保持操作工最有效地控制生产过程的要求。
传统上,如果操作工不抱怨,控制回路的性能就是可以接受的,除非你想精益求精,一般不会去没事找事,重新整定参数。在对经济效益斤斤计较的今天,生产过程的工艺条件被推到极端,对控制性能提出极大的挑战,控制回路必需时时、处处都在最优状态。随着控制回路数的迅速增长,单靠人工观察,已经难于随时掌握所有控制回路的性能状况了。控制回路性能评估技术应运而生。
理论上,对一个过程可以设计一个最优控制,其中一种就叫最小方差控制。这其实是线性二次型最优控制的一种,控制作用比较猛,但是这是理论上的极限,控制方差不可能再小了。90年代时,理论界提出一个方法,可以用闭环辨识的方法,不辨识模型,而是直接确定理论上的最小方差,然后将实际方差和理论上的最小方差相比,判别控制回路是否需要重新整定。这个方法开创了控制回路性能评估的先河,但是在实用上不容易排除不利影响,应用不多。
然而,不和理论上的最优值比较,而是和实际上的理想值比较,就可以绕过很多麻烦的理论问题。比如说,流量回路应该在1分钟内安定下来,那理想值就是1分钟。通过快速富利叶变换和频域分析,可以将理论性能和实际性能相比较,迅速确定回路的当前性能状况。最要紧的是,这可以用计算机自动采集数据,自动计算,每天早上(或随便什么时候)给出报表,控制工程师可以一目了然,哪些回路需要重新整定,哪些没有问题,可以有的放矢。实时频域分析还可以将所有以相近频率振荡的回路罗列出来,接下来控制工程师就可以按图索骥,找出害群之马了。
控制回路性能评估的下一步当然就是自动整定。这实际上是一个简化的、断续运行的自校正PID控制器,在理论上已经没有问题,但实用上还有很多可靠性问题没有完全解决,现在产品不少,但实用的还是不多。
对控制回路性能评估的更进一步,当然就是对生产过程的故障诊断了。故障就是异常情况,异常就是和正常不一样。所以故障诊断的核心在于如何探测这“不一样”。
故 障总是有蛛丝马迹的,问题在于工业过程的数据量太大,在大海里捞针,等捞到的时候,常常已经时过境迁了。在数据分析中,PLS(其实是 Peojection to Latent Structure,而不是一般所认为的Partial Least Square)和主元分析(Principal Component Analysis,PCA)是很流行的方法。PLS和PCA将众多相关的变量归拢到少数几个“合成”的变量,这样一个有大量变量的复杂大系统就可以简化为一个小系统,就从大海捞针变为碗里捞针了。捞出来的针不再是单个的变量,而是变量的组合。这和实际是相符的,故障的早期征兆常常是若干变量的组合,而不能单从一两个变量上看出来。
PLS和PCA还可以和图形方法结合起来使用。比如说,将那些合成变量标称化,就是除以正常值,那所有合成变量的标称值就是1。把所有变量画成“蜘蛛图”(spider chart),每一个蜘蛛脚代表一个合成变量,由于合成变量的标称值都是1,蜘蛛图就是大体为圆的。如果哪一个脚出现变化,蜘蛛就不圆了,非常容易看出异常来,接下来就可以有的放矢地寻找故障的早期迹象了。
图形数据分析的另一个路子是所谓co-linear分析。这是IBM早年琢磨出来的一个东西,理论上简直没有东西,但要求换一个思路,正所谓退一步海阔天空。平常的数据点,三维以上就没法画了。但是如果把三维空间的所有数轴画成平行线,而不是常见的直角坐标,那三维空间里的一个点,就是连接三根平行线的一根折线。如果仅此而已,那也就是一个简单但愚蠢的数学游戏。平行坐标系的妙处在于,平行线可以尽着画,所以5维、20维、3千维,只要纸足够大,都可以画,而且可以看见,而不是只能想像。平行坐标只有一个缺点,就是只能表述离散的点,而难以表述连续的线或面,但这对计算机采集的数据来说,不是问题,计算机采集的数据本来就是离散的点。这样,用平行坐标把大量的数据点画成折线簇,可以很直观地看出数据中的模式来。
故障诊断的另一个思路是对整个过程进行辨识。辨识出来的模型表述系统的行为,故障当然就是行为的改变,所以将实时辨识出来的模型和正常模型相比较,就可以判断系统是否出现异常或故障。
计算机和模型的另一个用处就是仿真。仿真(simulation)也叫模拟,但是模拟容易和模拟电路(analog circuit)搞混,所以现在叫仿真多了。只要对实际过程有一个足够精确的模型,计算机是可以相当精确地模仿实际系统的行为的。
仿真有静态仿真和动态仿真。静态仿真基本上就是解一个巨大的非线性联立方程组,描述空间分布的微分方程也被有限元方法分解了。现代静态仿真已经可以做得相当精确,但这也是在多年结合实际过程数据“磨合”模型的基础上才能做到的。静态仿真大量用于工艺设备设计计算,但是对研究实际过程的真实行为的作用有限,因为对整个生产过程和工艺的仿真要考虑进各个设备动作的时间和控制回路的影响,这些静态仿真是无法体现的。动态仿真要解同样巨大的联立微分方程组,由于要达到实时或更快,一般只能大大简化,否则计算速度跟不上。希望有朝一日,动态仿真可以达到静态仿真同等的精度,而不必担心损失计算速度。
仿真在工业上十分有用。现代化工厂越来越稳定,越来越安全,很多操作工一辈子也没有遇到过真正危险的情况。但没有遇到过不等于不会遇到,操作工必须接受足够的训练,只有这样,才能当遇到危险情况时,首先能及时、正确地识别故障,然后才能及时、正确地作出反应。这就要靠仿真训练了。现代化工厂也在不断地拓展工艺参数的极限,经常需要做各种各样的试验。有了仿真,就可以预先验证试验的构思,和验证对紧急情况的处理。
仿真更是控制工程师的好帮手,新的控制回路先放到仿真上试一下,得出初始整定参数,验证异常情况的处理能力,然后再放到真家伙上,可以避免很多不必要的惊讶。
仿 真的一个远亲是实时最优化(real time optimization,RTO)。对于斤斤计较的现代制造业,实时最优化当然是求之不得的。实时最优化就是把整个生产过程当一个大的实时仿真来运算,实时(实际上是每小时)计算出最优工况。想法是好的,困难是多的。首先,那么大一个方程组收敛不容易,要划成很多条条块块,分别求解,然后拼起来。问题就出在“拼”上,边界条件碰不拢怎么办?模型总是有相当的简化,其中有些参数必须和实际测量值符合,有些就没有实际测量值对应,就是“经验系数” (fudge factor)了。这些经验系数就是承担收拾烂账的,边界碰不拢,就调整经验系数,使他们对齐。问题是,好多时候,这一招也不灵,所以实时最优化的喇叭吹得很响,真正用起来的很少,花了大钱最后放弃的也不在少数。
和打仗一样,赢得战斗的是武士,不是武器。控制工程师是控制回路成功与否的关键,而不是价值千金的计算机,或者“放之四海而皆准”的数学控制理论。
在加拿大,化工系的控制“专业”要选满所有化工学分,然后再加选控制学分,所以要求比一般的化学工程师还要高一点。选满化工学分是很重要的一点,如果没有对化工的话语权,那化工控制也别混了,这一点是国内(至少是二十多年前我读大学的时候)所欠缺的。这就像医生一样,只有对生理、病理有深刻的了解,对病人的具体情况有深刻的了解,才有可能可靠地判断病情,才能可靠地开方治病。只会看单抓药,这就不是医生,而是药剂师了。在实际中,控制工程师对工艺过程的动态行为的理解至少应该和工艺工程师同等,和操作工相当。事实上,很多时候,控制工程师的使命就是将工艺工程师和操作工的经验和知识具体化、自动化了,如果你不能深刻理解,那如何实现呢?一个优秀的控制工程师可以在操作工不在的时候,当班操作;可以在工艺工程师不在的时候,做出工艺决定。
但是控制工程师毕竟不是工艺工程师,也不是操作工。控制工程师应该掌握前面说到的所有领域,从数学控制理论,到计算机网络,到人机工程,到工艺和仪表知识。这个要求很高,但不是不切实际的。这些是搅这个瓷器活所必需的金刚钻。这也是为什么现在工业界热衷于招雇具有硕士学位的控制毕业生,因为本科的几年已经很难学习必须的知识了。至于博士,那还是有眼高手低的嫌疑,呵呵。
专业知识只是成功的一面,控制工程师必须善于与人打交道。工艺工程师比较好说,毕竟有类似的背景,但操作工是控制系统成败的关键,如果无法取得操作工对你个人和你的控制系统的信任和合作,那控制系统很可能就是永久性地被关闭,操作工宁愿手工控制,出了问题还是因为控制系统不可靠,你就等着里外不是人吧。但是取得操作工的信任和合作后,事情会向相反的方向发展。操作工会主动向你提出改进建议,或新的想法,主动找机会帮你试验新的功能,主动拓展控制系统的性能极限。如果说顾客是上帝的话,操作工而不是部门主管才是控制工程师的上帝。
控制工程师也要善于和头儿打交道,毕竟搞项目、要钱的时候,还是要找头儿的。打报告、作报告、项目控制和管理、和供应商打交道,这些都是必备的技能。
工艺工程师也是工程师,但用军队的比方来说,他们人多势众,更像常规部队,习惯大兵团协同作战。控制工程师则像特种部队,人数少,行止怪癖(至少对工艺的人来说,他们永远弄不明白控制的人到底在做什么,怎么做出来的),从规划到实施到维修,全一手包办。
控制理论的发展历程就是一个寻找“放之四海而皆准”的“神奇子弹”的历程,终极目标是可以用一个统一的数学控制工具去“套”任何一个具体的控制问题,而不必对具体过程的物理、化学等特性有深入的理解。控制理论的每一次重大进展,都给人们带来希望,“这一次终于找到了”。但每一次希望都带来了新的失望,新方法、新工具解决了老问题,但带来了新的局限,有的时候甚至转了一圈兜回去了。新的局限往往比老问题更棘手,需要对过程的理解是更多而不是更少。矛和盾就是这么着在螺旋形上升中斗法。
但是现实常常和人们的认识背道而驰。在商业化的大潮中,推销先进控制算法的公司拍胸脯担保可以如何如何用“万能”的数学控制工具解决一切控制问题,那些绚烂的老虎皮也确实照得不明就里的人眼花缭乱,心旌飘荡;公司的头儿也一口吃进,毕竟“技术万能论”不仅在美军中盛行,在北美的公司文化中也是大行其道。直到有一天,人们发现永动机依然是神话,人还是不能在水上步行,方才想起来,原来世上是没有这等好事的。不过这是题外话了。
本来就知道这个系列会又臭又长,但是既然写了,就写完吧,希望没有占用太多的带宽,希望没有浪费大家的时间,希望给对自动控制有兴趣的朋友提供一点入门的知识,希望给同好提供一些从实际中得到的经验,错误的地方肯定很多,敬请原谅,同时谢谢阅读。