半夜三点,阀门自己跳了起来:自动化控制系统的隐形坑
那是个夏天。凌晨三点,手机响了。操作工在电话里喊:“反应釜温度压不住了,阀门跟抽风一样,一会儿全开一会儿全关。”我爬起来往厂里赶,路上脑子里已经把PID参数过了三遍。到了现场一看趋势曲线——好家伙,温度像锯齿,周期大概二十秒。阀门开度从10%跳到90%,再跳回来。这不是典型的参数振荡。参数振荡一般更密,而且有规律。这个,像是有人在背后按开关。
我先调出PLC的程序监控。扫描周期?5毫秒,正常。PID块调用周期?100毫秒,也正常。那问题在哪?查通讯。上位机每500毫秒读一次数据,模拟量输入模块的滤波时间设了200毫秒。再加上阀门定位器的响应时间……我心里大概有数了。
说白了,自动化控制系统不是在“实时”看世界,它是在“抽样”看世界。你以为它每时每刻都盯着温度,其实它每隔一段时间才睁一次眼。这中间的间隔里,世界已经变了。
先别急着调参数,先看看它在“什么时候”看世界
很多现场工程师有个习惯:控制不稳,先调P,再调I,再调D,跟拧收音机旋钮似的。调三天,参数记了一本子,问题还在。为什么?因为你调的是“反应快慢”,但问题可能出在“看见的时间”上。
PLC这东西,本质是个循环扫描的机器。它读输入、执行程序、写输出,一圈一圈转。每一圈叫一个扫描周期。模拟量信号进来,还得经过滤波、量程转换,才变成PID能用的数字。PID算完了,输出给阀门,阀门再动。这一整条链,每一环都有延迟。
工业PLC扫描周期与PID采样时序示意图
我见过一个液位控制,采样周期设了2秒,积分时间设了5秒。听起来没问题对吧?但那个罐子很小,进水阀一大,液位两秒能涨10%。等PID看见的时候,已经超了。然后积分项猛加,阀门大开;下一周期又看见低了,猛关。来回荡。这不是PID笨,是它拿到的信息太旧了。
类比一下。你戴着一副延迟两秒的VR眼镜开车。看见前面有弯,你打方向。等眼镜里的画面转过来,车已经出去了。你只能拼命修正,画龙。自动化控制系统里的“采样周期”和“通讯延迟”,就是这副眼镜。
不过话说回来,也不是越快越好。采样太快,噪声全进来了,阀门跟着抖,密封圈半年就废。这里有个平衡点。我的经验是:采样周期至少要比过程的时间常数小五到十倍,但又不能小到把噪声当信号。具体数字看现场,别抄手册。
那个“稳”字,在控制系统里是个时间函数
我们常说“这个回路很稳”。稳是什么?在控制工程里,稳不是“不动”,是“扰动来了能回去,而且不来回荡”。这跟时间强相关。
举个洗澡的例子。你拧龙头,等热水过来。这中间有十几秒管道延迟。你嫌水凉,又拧大。热水到了,烫得跳起来。你又猛关。这就是典型的纯滞后环节加过度反应。自动化控制系统里,很多温度、流量、料位控制都有这个“死区时间”。你调PID,调得再花哨,也消不掉管道长度带来的延迟。
有人抬杠:那上预测控制啊,上史密斯预估器啊。对,理论上可以。但现场很多小系统,PLC里跑个PID就不错了,哪有功夫上模型预测。而且模型不准的时候,预测控制比PID还疯。所以边界很重要:不是所有回路都值得上高级算法。
还有个误区:很多人觉得响应越快越好。阀门动作快,显得系统灵敏。但阀门是机械件,一天动作几千次,阀杆磨损、填料泄漏,维护工得骂娘。我见过一个蒸汽阀,因为PID输出太激进,阀芯三个月就振裂了。后来把微分关掉,积分放慢,寿命上去了,温度波动反而小了那么一点点。你说气不气人。
自动化的“自动”,有时候是反人性的
说个真事。某水厂加药系统,自动投加。白天好好的,夜班经常跳手动。我问操作工为什么。他说:“自动的时候,药量一波动,泵就猛加。我看着害怕。”你看,不是系统不自动,是人不信任。
自动化控制系统的设计,很多时候只考虑了“逻辑正确”,没考虑“人怎么理解”。趋势图刷新慢、报警一股脑弹出来、手自动切换有扰动……这些细节,决定了操作工愿不愿意把旋钮放在“自动”上。
化工厂反应釜温度控制柜现场接线与手自动切换旋钮
手自动切换的“无扰”是个技术活。手动时输出50%,切自动瞬间,PID的输出得从50%开始算,不能跳。很多PLC的PID块有 bumpless transfer 功能,但前提是你得把手动输出值喂给积分项。没做这个,一切换就跳,阀门猛动一下。操作工被吓两次,就再也不切了。
还有报警疲劳。一个系统里几百个报警点,声音都一样。夜班工人困得要命,报警响了就按掉,根本不看是啥。后来我们把报警分了级,关键联锁用独立蜂鸣器,一般报警只闪灯。情况好转。但说实话,自动化控制系统越复杂,隐式状态越多,人越难排查。一个中间变量没复位,泵就起不来。查半天,发现是个看不见的“软点”。这种事,干过的都懂。
别把系统当黑箱,留一个“手动呼吸口”
我现在的习惯:不管多小的自动化控制系统,关键回路一定留手动旁路。不是不信任自动,是给异常留条路。趋势记录至少存一个月,报警别搞洪水式。还有,别把所有逻辑都藏在梯形图深处,画一张简版流程图贴在柜门上。维修工半夜来了,能看懂。
回到那个半夜跳阀门的反应釜。最后怎么解决的?没调PID。把上位机通讯周期从500毫秒缩到100毫秒,模拟量滤波从200毫秒降到50毫秒,重新整定了一下积分时间。温度稳了。操作工说:“早该这样。”我心里想,这行干久了,越来越觉得自动化控制系统像养猫。你以为你在控制它,其实你只是给它搭了个环境。它什么时候伸爪子,你得看着。
风险也说一句。现在很多系统上了云、接了远程,方便是真方便。但网络一抖,控制回路可能就懵。我见过因为交换机重启,导致PID块连续几个周期没执行,输出保持旧值,罐子差点溢了。远程监控可以,远程直接控制,得留硬件联锁兜底。这不是保守,是底线。
所以你看,自动化控制系统这事,参数只是一层皮。底下是时间、是延迟、是人的信任、是机械的寿命。调参数之前,先问问:它到底在什么时候看世界?看完了,再动手。