4、PID参数整定方法:Ziegler-Nichols法、试凑法、经验公式法

说到PID调参,很多新手第一反应就是「调三个数嘛,有啥难的」。嗯,我当年也是这么想的。直到第一次在产线上调一个温度大滞后系统,三个参数拧来拧去,系统要么震荡得像过山车,要么慢得像蜗牛爬。那次折腾了我整整两天。

后来我才明白,调参不是玄学,是有章可循的。今天我就把三种最常用的方法掰开揉碎了讲给你听。

PID参数整定方法 Ziegler-Nichols法 基于临界增益与临界周期 试凑法 经验+观察+微调 经验公式法 基于模型参数的快速计算 适用场景不同,但核心目标一致: 快速、稳定、无超调

4.1 Ziegler-Nichols法:最经典的「临界震荡法」

Ziegler-Nichols法,圈内人常叫它「ZN法」。说白了,就是先把系统推到震荡边缘,然后根据震荡数据算出参数。这个方法我用了不下百次,尤其适合那些你完全不了解的「黑箱系统」。

核心思想: 先让系统等幅震荡,记录临界增益Ku和临界周期Tu,然后套公式。

操作步骤(我习惯这么干):

  1. 先把I和D干掉:设置Ki=0,Kd=0,只留比例项Kp
  2. 慢慢加大Kp:给系统一个阶跃信号,观察输出。一开始Kp设小点,比如0.5。
  3. 找到临界点:持续增大Kp,直到系统输出出现等幅震荡。这时候的Kp就是Ku
  4. 记录周期:用示波器或仿真工具,量出震荡周期Tu
  5. 套公式
控制器类型 Kp Ti Td
P 0.5 Ku
PI 0.45 Ku 0.85 Tu
PID 0.6 Ku 0.5 Tu 0.125 Tu
⚠️ 我曾经踩过的坑: 有一次在液压伺服系统上用ZN法,临界震荡点找得不准,结果参数一上去系统直接啸叫。后来发现是摩擦力太大,导致震荡波形畸变了。记住:ZN法要求系统是线性的,非线性严重的场合慎用。

4.2 试凑法:工程师的「手感」

试凑法,说白了就是「凭感觉调」。别觉得这方法土,我见过干了二十年的老工程师,闭着眼都能把参数调得服服帖帖。为什么?因为手感是练出来的。

试凑法的核心口诀就四句话:

  • 比例(P):先调P,让系统动起来。P太小反应慢,P太大就震荡。
  • 积分(I):消除静差。I太强系统会「晃」,I太弱误差消不掉。
  • 微分(D):抑制超调。D能「预判」趋势,但噪声敏感。
  • 顺序:先P,再I,最后D。这个顺序别搞反了。
💡 我的个人习惯: 调P的时候,我会把Kp从0开始慢慢加,每次加10%~20%。观察阶跃响应,直到出现4:1衰减比——就是第二个波峰的高度是第一个的1/4。这个状态最理想。

试凑法的「避坑指南」

  • 别一次调太多:每次只改一个参数,改完观察至少3个震荡周期。
  • 注意噪声:如果系统有高频抖动,先别急着调D,检查一下传感器滤波。
  • 记录每次的参数:我习惯用Excel记下每次的Kp、Ki、Kd和响应曲线截图。回头复盘时特别有用。

4.3 经验公式法:快速出活的好帮手

经验公式法,说白了就是「查表法」。你只要知道系统的一些基本特征——比如时间常数、滞后时间、增益——就能快速算出一组差不多的参数。适合项目初期快速验证。

这里我分享两个最常用的经验公式:

4.3.1 Cohen-Coon法(适用于自衡过程)

这个方法基于系统的阶跃响应曲线,提取三个关键参数:

  • K:稳态增益
  • τ:时间常数
  • L:滞后时间

公式如下(以PID为例):

Kp = (1.35 / K) * (τ / L + 0.185)
Ti = 2.5 * L * (τ + 0.185 * L) / (τ + 0.611 * L)
Td = 0.37 * L * τ / (τ + 0.185 * L)
注意: 这个公式对滞后较大的系统效果不错。我在化工行业的温度控制项目中用过,比ZN法更稳。

4.3.2 改进ZN法(适用于有积分环节的系统)

有些系统本身就有积分特性(比如电机位置环),直接用ZN法容易过调。这时候可以用改进版:

Kp = 0.35 * Ku
Ti = 1.2 * Tu
Td = 0.075 * Tu

嗯,这个公式我是在一个伺服驱动器项目里试出来的。当时电机位置环总是超调,用这个公式一算,效果立竿见影。

三种方法怎么选?

我个人的选择逻辑是这样的:

  • 完全不了解系统 → ZN法,先摸清底细
  • 有仿真模型 → 试凑法,慢慢找感觉
  • 项目赶时间 → 经验公式法,先跑起来再说
  • 高精度要求 → ZN法打底,试凑法精调
💡 最后说一句: 不管你用哪种方法,调完参数一定要做鲁棒性测试。把负载变一变,看看系统还能不能稳住。我见过太多「实验室调得好,一上产线就崩」的案例了。

公众号:蓝海资料掘金营,微信deep3321