主题:【原创】自动控制的故事(一)(完) -- 晨枫
都说瓦特的蒸汽机后,计算机是影响人类进程最大的发明,计算机当然也对自动控制带来深刻的影响。如前所述,控制理论基本上都是围绕微分方程转的,所以在“本质”上是连续的。但是数字计算机是离散的,也就是说,数字控制器的眼睛不是一直盯着被控对象看的,而是一眨一眨的。数字控制器的“手脚”也不是一刻不停地连续动作的,而是一顿一顿的。这是数字计算机的天性使然。于是,传统的控制理论全部“翻译”到离散时间领域,微分方程变成了差分方程,所有方法、结论都有了连续、离散两套,不尽相同,但是大同小异。
要是数字控制就是简单的连续系统离散化,计算机控制也就没有什么了不起。离散控制带来了一些连续控制所不可能具备的新特点,这就是:差分方程用清晰界定的时刻之间的关系来描述动态过程。回到洗热水澡的例子,如果热水龙头不在跟前,而是在村外一里地的小锅炉房里,你只能用电话遥控,那水温可以表示为
下一分钟水温=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次方是用来调整控制律对“偏差”(这是已经不是差值,而是比值了,严格地说,应该叫“偏比”?)的灵敏度,相当于比例增益。这个控制律实际上相当于对数空间的纯积分控制,要是有兴趣,对很多常见的非线性过程有相当不错的效果,实现也简单。然而,这是一个本质离散的控制律,在连续时间里无法实现。
离散控制可以“看一步、走一步”的特性,是连续控制很难模仿的,也是在实际中极其有用的。
要不说搞控制的要强调行业背景呢,像俺这样搞机电控制系统设计而不搞实时过程控制的净关心具体控制实现手段装置特征,具体逻辑运算,实时通讯总线和人机界面的文章了,也就在涉及一些特殊控制算法的PLC的SFC和Function Block什么的时候还能用上点(像一些什么温控双PID环节,Web Control,安全逻辑互锁什么的),也就On-site Commission的时候还能学到点,可现在的职位又基本没机会去出差调试了,那些控制理论也就快连本带利地全还给吴启迪了,说起来实在惭愧得很,承蒙晨枫老师的经典文章带领,又重新回顾,着实受益非浅.只是不知道怎么献花,遗憾!期待下文中...呵呵.
哈哈,再献花!
周末感冒,蔫头搭脑的,干什么都没劲,今天才打起精神来码字。灌水辛苦啊……
==========================
形形色色的控制理论再牛,没有被控过程的数学模型,照样抓瞎。前面的洗澡水温就是一个数学模型。这个模型是杜撰的,当然可以很容易地给它所有模型参数。但在实际中,模型参数不会从天上掉下来。多少科学家毕生致力于建立某一特定的物理、生物、化学或别的学科的数学模型,基本机制已经清楚的模型都不容易建立,更不用说很多过程的基本机制或深层机制并不清楚。所以靠机理推导被控过程的数学模型是可能的,但对日常的控制问题来说,并不实际。这就是控制理论的另一个分支—辨识—一显身手的地方了。
如果给定一个模型,也就是一个数学公式,给它一组输入数据,模型就可以计算出对应的输出数据。比如说,给定模型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),或者由于不同的原料,如“吃”得很杂的炼油厂,或者由于不同的产品,如聚乙烯装置,这实际上就是“使劲变设定值”,是新鲜的激励。这种系统的闭环数据比较好用,但又别的问题,下面要谈到。
在化工,冶金过程中,要命的是工艺参数条件特别多,影响的程度和范围各不相同,因此建模之前要将数据进行相关分析。如果机理上能够说得过去,可以把对性能指标影响明确的几个条件参数拿来辨识建模,当然要确定相应的输入输出时间对应关系。如果将机理模型和数据辨识模型联合起来,有可能在模型泛化能力和精确性之间取得一个较好的平衡。
明天再扯黑箱、白箱和灰箱的事……
可惜他不认识俺,555。
交待个糗事:那次开会的时候,把他和东大的柴天佑老师弄混了,叫错名字,挺尴尬的,他俩我一直觉得有点象,唉。
我闪两天先。
花花
我就在做控制的项目,还没见过这么深入浅出的,形象的描述最优控制。