3、经典PID控制:PID控制原理、位置式与增量式PID、PID参数整定方法(Ziegler-Nichols)

各位工程师朋友,今天我们来聊聊控制领域最经典、也最实用的算法——PID控制。说实话,我入行十几年,从单片机到大型PLC,从温度控制到电机伺服,PID几乎无处不在。你想想看,一个算法能火将近百年,一定有它的道理。

3.1 PID控制原理:为什么它这么能打?

PID,全称比例-积分-微分控制。说白了,就是三个环节各司其职,共同把被控量拉到目标值。

  • 比例(P):看当前偏差有多大,偏差大就猛推,偏差小就轻推。但光有比例,系统容易震荡,而且会有静差——就是永远差那么一点点到不了目标。
  • 积分(I):专门对付静差。它把过去的偏差累积起来,只要还有偏差,积分项就会一直增加,直到把偏差彻底消除。我在做恒温槽项目时,就靠积分项把温度稳定在±0.1℃。
  • 微分(D):预测未来。它看偏差的变化趋势,如果偏差正在快速增大,微分项会提前输出一个反向力,抑制超调。嗯,这里要注意:微分对噪声非常敏感,信号不干净时慎用。

核心公式(连续形式):

u(t) = Kp * e(t) + Ki * ∫e(t)dt + Kd * de(t)/dt

其中 e(t) = 目标值 - 当前值,也就是偏差。

我个人习惯把PID比作一个「老司机开车」:P是看当前离前车多远,I是记住之前一直没追上,D是预判前车会不会急刹。三者配合,才能开得又稳又快。

3.2 位置式PID vs 增量式PID:怎么选?

在实际工程中,我们用的是离散化的PID,也就是每隔一个采样周期计算一次。这里有两种主流实现方式。

位置式PID

直接计算当前时刻应该输出的控制量绝对值。公式如下:

u(k) = Kp * e(k) + Ki * Σe(i) + Kd * [e(k) - e(k-1)]

特点:输出是绝对值,直接对应执行器的位置(比如阀门开度0~100%)。

我曾经踩过的坑:位置式PID的积分项是累加所有历史偏差。如果执行器饱和了(比如阀门已经全开),积分还在累加,就会产生「积分饱和」现象。等偏差反向时,积分需要很长时间才能退回来,导致系统响应迟钝。解决办法是加积分限幅或抗积分饱和算法。

增量式PID

只计算当前时刻相对于上一时刻的控制量增量。公式:

Δu(k) = Kp * [e(k) - e(k-1)] + Ki * e(k) + Kd * [e(k) - 2e(k-1) + e(k-2)]
u(k) = u(k-1) + Δu(k)

特点:输出是增量,适合控制步进电机、伺服电机这类需要「走一步算一步」的执行器。

对比项 位置式PID 增量式PID
输出形式 绝对值 增量
积分饱和风险 高 低(无累加积分项)
执行器类型 阀门、加热器等 步进/伺服电机
手动/自动切换 需做冲击处理 无冲击

我个人建议:如果执行器是比例阀或加热器,用位置式;如果是电机驱动,用增量式更省心。

3.3 PID参数整定方法:Ziegler-Nichols

参数怎么调?这是新手最头疼的问题。Ziegler-Nichols法(简称ZN法)是1942年提出的经典方法,虽然老,但非常实用。我至今在项目初期都用它快速找到一组「能用的参数」。

方法一:阶跃响应法(开环整定)

适用于系统开环阶跃响应呈S形的对象。步骤:

  1. 断开PID,给系统一个阶跃输入,记录响应曲线。
  2. 在曲线上找到拐点,画切线,得到延迟时间L和时间常数T。
  3. 查表计算参数:
控制器类型 Kp Ti Td
P T / L ∞ 0
PI 0.9 * T / L L / 0.3 0
PID 1.2 * T / L 2L 0.5L

我的经验:ZN法给出的参数通常偏激进,系统会有20%~30%的超调。如果对超调敏感,可以把Kp乘以0.6~0.8,再微调。我在调一个温度炉时,ZN法算出来Kp=12,实际用8.5就稳了。

方法二:临界比例度法(闭环整定)

适用于不允许开环测试的系统。步骤:

  1. 只保留比例环节(Ki=0, Kd=0),从小到大增加Kp。
  2. 直到系统输出出现等幅振荡,记录此时的临界增益Ku和振荡周期Tu。
  3. 查表计算:
控制器类型 Kp Ti Td
P 0.5 * Ku ∞ 0
PI 0.45 * Ku Tu / 1.2 0
PID 0.6 * Ku Tu / 2 Tu / 8

注意:临界比例度法会让系统进入等幅振荡,对某些设备(如大型风机、反应釜)可能有危险。我建议先在仿真或小功率设备上试,确认安全再上真机。

3.4 知识体系框架

下面这张图是我自己整理的PID控制知识结构,方便你快速建立全局认知:

PID控制知识体系 经典PID控制 控制原理:P(比例)+ I(积分)+ D(微分) 实现方式:位置式PID vs 增量式PID 参数整定:Ziegler-Nichols法 阶跃响应法(开环) 临界比例度法(闭环) 目标:快速、稳定、无静差

这张图把PID的核心脉络理清了:原理是基础,实现方式看场景,整定方法靠经验加公式。三者缺一不可。

最后说句实在话:PID调参没有「万能公式」,ZN法只是给你一个起点。真正的好参数,是在现场一点一点「磨」出来的。我当年调一个伺服电机,光Kp就试了20多个值,最后发现比ZN法算出来的小一半才最稳。所以,多动手,多记录,慢慢就有感觉了。

可可精品资料库