3、PID控制基础:比例、积分、微分的作用、数字PID实现、采样时间影响

聊到速度环整定,PID 是绕不开的核心。很多新手觉得 PID 就是调三个参数,没什么技术含量。说实话,我刚开始也这么想。直到有一次在高速主轴项目上,电机在 3000 RPM 附近来回震荡,怎么调都稳不住,我才意识到——不理解 PID 的本质,你连问题出在哪都找不到。

这一章,咱们把 PID 掰开揉碎了讲。不搞复杂的数学推导,重点说清楚三个环节到底在干什么,以及数字实现时有哪些坑。

3.1 比例、积分、微分——三个角色的分工

我把 PID 比作一个团队:比例是“现在”的纠偏员,积分是“过去”的记账员,微分是“未来”的预言家。你想想看,一个系统要稳定,是不是既要看当前偏差,又要消除历史累积,还得提前刹车防止超调?

3.1.1 比例控制(P)——最直接的响应

比例控制说白了就是:偏差越大,输出越猛。公式很简单:u(t) = Kp * e(t)。Kp 越大,系统响应越快,但容易过头。

我在项目中遇到过一个问题:客户要求启动响应时间小于 50ms,我直接把 Kp 拉高了一倍。结果电机“嗖”地冲过目标转速,然后开始来回震荡。这就是典型的比例过大导致的超调和振荡。

关键点:纯比例控制必然存在静差。因为要维持输出,就必须有偏差存在。想消除静差?得靠积分。

3.1.2 积分控制(I)——消除历史欠账

积分的作用是把过去所有的偏差累加起来,然后乘以 Ki 输出。只要还有静差,积分项就会一直增长,直到把偏差推回零。

但积分有个大问题——积分饱和。我记得刚入行时调一个风机,启动时积分项疯狂累积,等转速到了目标值,积分项还憋着一大股劲没释放,结果转速直接冲过头,过了好一会儿才拉回来。

避坑指南:我曾经在积分饱和上吃过亏。后来养成了习惯——所有速度环都加积分限幅,并且做条件积分(偏差大时停止积分)。这个后面会细讲。

3.1.3 微分控制(D)——提前踩刹车

微分看的是偏差的变化趋势。偏差在快速增大?微分项输出负向力,阻止它继续恶化。偏差在快速减小?微分项提前收力,防止超调。

微分对噪声极其敏感。你想想看,霍尔传感器本身就有换相噪声,再求微分,噪声会被放大。所以我一般建议:速度环慎用微分,或者加一个低通滤波器再微分。

环节 作用 优点 缺点
比例(P) 快速响应当前偏差 响应快,简单直接 存在静差,过大易振荡
积分(I) 消除稳态误差 无静差,精度高 积分饱和,响应变慢
微分(D) 预测趋势,抑制超调 改善动态响应 对噪声敏感,易引入抖动

3.2 数字PID的实现——从连续到离散

模拟 PID 是连续的,但咱们的 MCU 是离散的。每隔一个采样周期算一次,这就是数字 PID。

常用的有两种形式:位置式 PID 和 增量式 PID。我个人的习惯是:速度环用增量式,位置环用位置式。为什么?往下看。

3.2.1 位置式PID

直接模拟连续 PID 的公式,每次计算都输出一个完整的控制量:

u(k) = Kp * e(k) + Ki * sum(e(i)) + Kd * (e(k) - e(k-1))

这个公式直观,但有个问题——积分项 sum(e(i)) 需要累加所有历史偏差。一旦积分饱和,处理起来比较麻烦。

3.2.2 增量式PID

增量式只计算本次控制量的增量:

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

实际输出:u(k) = u(k-1) + Δu(k)

增量式的优势很明显:

  • 没有积分累积问题——输出只跟最近几次偏差有关
  • 手动/自动切换无冲击——因为输出是增量叠加
  • 计算量小——适合在中断里快速执行

我的建议:霍尔传感器速度环,优先用增量式 PID。我在多个项目里验证过,增量式配合限幅处理,比位置式稳定得多。

3.3 采样时间的影响——被很多人忽略的关键参数

采样时间 Ts 是数字 PID 的“时钟节拍”。很多人只调 Kp、Ki、Kd,却忽略了 Ts 的影响。其实,Ts 变了,整组参数都得重新调。

3.3.1 采样时间对各个环节的影响

环节 采样时间变大 采样时间变小
比例 响应变慢,系统变“迟钝” 响应更快,但计算负担加重
积分 积分效果变弱,需要增大 Ki 积分累积过快,容易饱和
微分 微分作用变弱,噪声抑制变差 微分更敏感,容易引入抖动

为什么会这样?因为数字 PID 的系数实际上是 Kp、Ki*Ts、Kd/Ts 的组合。Ts 变了,等效的 Ki 和 Kd 也跟着变。

3.3.2 霍尔传感器的采样时间选择

霍尔传感器的速度更新频率取决于换相频率。低速时换相慢,速度更新也慢;高速时换相快,速度更新也快。这就导致了一个问题——采样时间不固定。

我遇到过最头疼的情况:电机在 100 RPM 时,速度更新周期是 50ms;到了 3000 RPM,更新周期变成了 1.6ms。同样的 PID 参数,低速时积分太弱,高速时积分又太强。

解决方案:我个人习惯的做法是——固定一个基频采样时间(比如 1ms),霍尔速度更新时做插值或过采样。或者干脆用 M/T 法测速,保证低速时也有足够的更新频率。这个后面章节会详细讲。

3.4 知识体系总览

下面这张图把本章的核心逻辑串起来了。你可以看到,从 PID 的三个环节,到数字实现方式,再到采样时间的影响,环环相扣。

PID控制基础——知识体系 PID控制核心 比例(P)— 当前纠偏 积分(I)— 消除静差 微分(D)— 预测趋势 数字PID实现方式 位置式PID(全量输出) 增量式PID(增量输出) 采样时间 Ts 的影响 Ts 变化 → 参数需重调 霍尔测速周期不固定

3.5 本章小结

这一章咱们把 PID 的三个环节拆开看了:比例管现在,积分管过去,微分管未来。数字实现上,我推荐速度环用增量式 PID,省心又稳定。采样时间这个参数,千万别忽视——它变了,整组参数都得跟着变。