4. PID参数整定实战:Ziegler-Nichols法、试凑法、自整定技术
说到PID整定,很多刚入行的朋友总觉得这是门玄学。其实不然。我做了十几年暖通自控,调过的PID回路少说也有上千个。说白了,整定就是找到三个数字——比例增益Kp、积分时间Ti、微分时间Td——让系统跑得稳、跑得快。
今天咱们就聊三种最实用的方法:Ziegler-Nichols法、试凑法、自整定技术。这三种方法我都在项目里用过,各有各的脾气。
4.1 Ziegler-Nichols法:经典的开环整定
Ziegler-Nichols法,圈里人常叫它ZN法。这是1942年两位工程师搞出来的方法,到现在还在用。为什么?因为它简单、有效。
ZN法分两种:开环阶跃响应法和临界比例度法。暖通空调里,我推荐用开环阶跃响应法。
4.1.1 开环阶跃响应法
操作步骤其实就三步:
- 把PID控制器切到手动模式,让系统稳定下来
- 给执行器一个阶跃信号(比如阀门开度从30%跳到50%)
- 记录被控量(比如温度、压力)的变化曲线
拿到曲线后,画一条切线,找到两个关键参数:滞后时间L和时间常数T。然后查表算Kp、Ti、Td。
核心公式:
- P控制器:Kp = T / L
- PI控制器:Kp = 0.9 × T / L,Ti = 3.3 × L
- PID控制器:Kp = 1.2 × T / L,Ti = 2 × L,Td = 0.5 × L
我在一个大型商业综合体的空调项目中用过这个方法。当时新风机组送风温度老是震荡,用ZN法整定后,温度波动从±2℃降到了±0.3℃。嗯,效果立竿见影。
注意:ZN法算出来的参数偏激进。系统容易超调。我建议算完后,把Kp乘以0.6~0.8,Ti乘以1.2~1.5。这是经验,你试试看。
4.1.2 临界比例度法
这个方法适合不允许开环测试的场合。操作是这样的:
- 把积分和微分关掉(Ti=∞,Td=0)
- 慢慢增大Kp,直到系统出现等幅振荡
- 记录临界增益Ku和临界周期Tu
然后查表:
| 控制器类型 | Kp | Ti | Td |
|---|---|---|---|
| P | 0.5 × Ku | — | — |
| PI | 0.45 × Ku | 0.83 × Tu | — |
| PID | 0.6 × Ku | 0.5 × Tu | 0.125 × Tu |
说实话,暖通系统里我很少用临界比例度法。为什么?因为让系统等幅振荡,对设备不太友好。风机、水泵、阀门都受不了。你想想看,温度一会儿高一会儿低,末端用户早就投诉了。
4.2 试凑法:工程师的直觉
试凑法,说白了就是凭经验调。别小看它,很多老工程师就靠这一手吃饭。
我的习惯是这样的:
- 先调P:把I和D关掉,Kp从0开始慢慢加。直到系统出现轻微的振荡,然后把Kp往回退一点,让振荡消失。
- 再加I:加入积分作用,消除静差。Ti从大到小调。Ti太大,消除静差慢;Ti太小,系统容易振荡。
- 最后加D:微分作用能抑制超调,但暖通系统里D要慎用。因为温度、压力信号噪声大,微分会把噪声放大。
我的经验口诀:
- P太小,响应慢;P太大,振荡猛
- I太小,静差消不掉;I太大,系统来回跳
- D能压超调,但噪声受不了
我曾经调试一个恒温恒湿空调系统,试凑法调了整整一个下午。最后发现问题是传感器安装位置不对,离出风口太近。换了位置后,参数基本没动,系统就稳了。所以啊,整定之前先检查硬件,别在错误的方向上使劲。
4.3 自整定技术:让控制器自己干活
现在的DDC控制器和PLC,很多都带自整定功能。说白了,就是控制器自己做个测试,自动算出PID参数。
自整定的原理其实不复杂:
- 控制器给系统一个激励信号(阶跃或脉冲)
- 采集响应数据
- 用算法识别出系统模型
- 根据模型算出最优参数
常见的自整定算法有:
- 继电器法:用继电器代替PID,让系统产生极限环振荡,然后算出Ku和Tu
- 模式识别法:分析系统对阶跃信号的响应,提取特征参数
- 自适应法:在线实时调整参数,系统变了参数也跟着变
实际项目中的建议:
自整定不是万能的。我在一个数据中心项目中用过霍尼韦尔的控制器自整定功能。第一次整定出来的参数,系统跑起来超调量达到了15%。后来我手动微调了一下,才降到5%以内。
所以我的建议是:自整定作为初值,然后手动微调。别完全依赖它。
4.4 三种方法的对比与选择
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| Ziegler-Nichols法 | 有理论依据,可重复 | 参数偏激进,需要开环测试 | 新系统调试,有测试条件 |
| 试凑法 | 灵活,不需要数学模型 | 依赖经验,耗时较长 | 系统微调,现场快速优化 |
| 自整定技术 | 自动化,省时省力 | 结果不一定最优,可能不稳定 | 简单系统,或作为初值 |
我个人习惯是:新项目先用自整定跑一遍,拿到初值。然后用ZN法验证一下,看看差距大不大。最后用试凑法微调。三管齐下,基本不会出大问题。
4.5 实战案例:空调水系统压差控制
讲个真实案例吧。某医院空调水系统,压差控制一直不稳。压差设定值100kPa,实际值在80~120kPa之间来回跳。
我过去一看,PID参数是厂家设的默认值。Kp=2.0,Ti=60s,Td=0。这明显不对。
我的操作步骤:
- 先做开环阶跃测试。阀门开度从40%跳到60%,记录压差变化曲线。
- 画切线,得到L=3s,T=45s。
- 用ZN法计算:Kp=1.2×45/3=18,Ti=2×3=6s,Td=0.5×3=1.5s。
- 考虑到系统惯性大,我把Kp乘以0.7,得到Kp=12.6,取整Kp=12。
- 投入运行,压差稳定在98~102kPa之间。
小技巧:暖通系统的时间常数通常比较大(几十秒到几分钟)。所以Ti和Td的单位是秒,别设成毫秒。我见过有人把Ti设成0.1s,结果系统直接发散。嗯,那场面挺壮观的。
4.6 避坑指南
最后,分享几个我踩过的坑:
- 传感器噪声:我曾经调试一个风系统,微分作用一加上去,执行器就来回动。查了半天,发现是风速传感器噪声太大。后来加了滤波,问题解决。
- 执行器死区:阀门或风阀有死区,小信号变化时执行器不动。这时候PID积分作用会一直累积,产生积分饱和。解决办法是加死区补偿,或者用积分分离算法。
- 系统非线性:暖通系统是非线性的。同样的PID参数,在低负荷和高负荷下表现不一样。我建议做分段PID,或者用增益调度。
- 不要追求完美:暖通系统不是精密仪器。±0.5℃的波动完全可以接受。别为了那0.1℃的精度,把系统调得神经兮兮的。
好了,PID整定就聊到这儿。记住一句话:理论是基础,实践出真知。多调、多试、多总结,你也能成为整定高手。