3. Ziegler-Nichols整定法:临界比例度法、阶跃响应法、参数计算表与工程修正

聊到PID参数整定,很多新手第一反应就是「调参玄学」。其实不然,早在几十年前,工程师们就总结出了一套非常实用的方法——Ziegler-Nichols整定法。我个人习惯把它叫做「Z-N法」,这可以说是PID整定的基本功。

Z-N法主要分两派:临界比例度法和阶跃响应法。说白了,一个是在闭环里折腾,一个是在开环里试探。咱们一个一个说。

3.1 临界比例度法

这个方法我特别喜欢,因为它直观。你想想看,系统震荡到临界点的时候,那个周期和增益就是最原始的特征数据。

操作步骤其实就三步:

  1. 先把PID调成纯P控制(I=0, D=0)
  2. 慢慢增大比例增益Kp,直到系统出现等幅震荡
  3. 记下这时候的临界增益Ku和震荡周期Tu
⚠️ 注意: 我曾经在调试一个大型热床时,Kp加得太猛,结果温度直接冲过50度,差点把热床烧了。所以一定要从小往大慢慢加,每次增加10%-20%就好。

拿到Ku和Tu之后,查表就能算出PID参数。嗯,这里有个经典的计算表:

控制器类型 Kp Ki Kd
P控制器 0.5 × Ku — —
PI控制器 0.45 × Ku 1.2 × Kp / Tu —
PID控制器 0.6 × Ku 2.0 × Kp / Tu Kp × Tu / 8

举个例子,假设你测出来Ku=15,Tu=20秒。那PID参数就是:Kp=9,Ki=0.9,Kd=22.5。直接套公式,简单粗暴。

3.2 阶跃响应法

有些系统不适合让它震荡,比如热床这种大惯性对象。这时候我会用阶跃响应法,也叫开环整定法。

做法是这样的:

  1. 系统开环,给一个阶跃信号(比如突然把PWM开到50%)
  2. 记录温度上升曲线
  3. 找到曲线上拐点处的切线,读出滞后时间L和上升时间T

核心公式:

Kp = 1.2 × T / (K × L)
Ki = 0.5 × Kp / L
Kd = 0.5 × Kp × L

其中K是系统的稳态增益,也就是最终温度变化量除以输入变化量。

我在项目中遇到过一个问题:热床的升温曲线不是完美的S形,拐点不好找。后来我干脆写了个小脚本,用差分法自动找最大斜率点,省事多了。

3.3 参数计算表与工程修正

Z-N法算出来的参数,说实话,直接用的效果往往偏激进。为什么?因为Z-N法是基于理想模型的,实际系统有非线性、有噪声、有延迟。

我常用的修正策略:

  • Kp打八折: 算出来的Kp先乘以0.8,再慢慢往上调
  • Ki加个死区: 温度误差小于0.5度时,积分停止,防止积分饱和
  • Kd加滤波: 微分项对噪声太敏感,我习惯加个一阶低通滤波

💡 小技巧: 如果你发现系统在设定点附近来回抖,八成是Kp太大了。如果响应慢得像蜗牛,那就是Ki太小。我曾经调一个热床,Kp从10降到6,震荡立刻消失,温度稳得像条直线。

下面这张图是我自己整理的Z-N整定流程,你可以照着走一遍:

开始整定 系统允许震荡? 否 是 阶跃响应法 测L、T、K 临界比例度法 测Ku、Tu 查Z-N参数计算表 工程修正:Kp打八折、加死区、加滤波 整定完成

最后说一句,Z-N法给出的参数只是起点,不是终点。我每次调完都会跑一次阶跃响应测试,看看超调量和稳定时间。如果超调超过10%,我就把Kp再降一点。记住,工程上的「够用」比理论上的「最优」更重要。