1. PID控制原理回顾:比例、积分、微分的作用与数学表达式

各位同学,咱们今天聊点实在的。

PID控制,说白了就是三个字:调偏差。你想想看,任何控制系统,最终目的都是让输出值跟着目标值走。但现实世界哪有那么听话?总有干扰,总有惯性,总有延迟。这时候,PID就派上用场了。

我个人习惯把PID理解成一个「纠错三人组」:

  • 比例(P):看当下,错多少纠多少
  • 积分(I):看过去,把老账算清楚
  • 微分(D):看未来,提前踩刹车

嗯,咱们一个一个拆开讲。

1.1 比例控制(P)—— 最直白的纠错

比例控制的数学表达式很简单:

u(t) = Kp × e(t)

其中:

  • u(t) 是控制输出
  • Kp 是比例增益
  • e(t) 是当前偏差(目标值 - 实际值)

说白了,偏差越大,输出越大。你离目标差10米,我就给10份力;差1米,就给1份力。直觉上完全合理,对吧?

核心特点:

  • 响应快,偏差一出现立刻动作
  • 但永远存在稳态误差—— 因为当偏差很小时,输出也很小,可能不足以推动系统到达目标

我在项目中遇到过这样一个案例:用纯比例控制调一个直流电机转速,目标1000转,结果死活停在980转不动了。为什么?因为那20转的偏差产生的控制力,刚好被负载摩擦力抵消了。这就是典型的稳态误差。

1.2 积分控制(I)—— 算总账的会计

积分控制的数学表达式:

u(t) = Ki × ∫e(t)dt

积分项把过去所有的偏差累加起来。只要偏差还存在,积分值就会一直增长,直到把系统推到目标位置。

你想想看,刚才那个980转的例子,如果加上积分项,那20转的偏差会不断累加,控制力会越来越大,直到把转速推到1000转。这就是积分消除稳态误差的原理。

我的经验:积分项是双刃剑。积分太强,系统容易震荡;积分太弱,消除误差又太慢。我曾经在一个温控项目里,积分系数设大了,温度直接过冲了15度才稳住,差点把加热管烧了。

积分还有一个坑:积分饱和。当执行器已经饱和(比如电机已经全速转了),积分还在累加,等偏差反向时,积分需要先「吐」出来,导致响应严重滞后。这个问题在FPGA实现时尤其要注意,后面咱们会专门讲怎么处理。

1.3 微分控制(D)—— 踩刹车的预言家

微分控制的数学表达式:

u(t) = Kd × de(t)/dt

微分项看的是偏差的变化率。偏差变化越快,微分输出越大。它的作用是抑制超调,让系统更平稳。

举个例子:你开车快到路口了,如果只看比例(距离),你会一直加速直到路口才急刹车。但如果你看微分(速度变化),你会提前减速,平稳停下。微分就是那个让你提前踩刹车的信号。

注意:微分对噪声极其敏感。信号上有一点毛刺,微分就会放大成剧烈的抖动。我在FPGA上做微分时,一定会先做滤波,否则系统会像得了帕金森一样抖个不停。

1.4 完整的PID公式

把三个部分加起来,就是标准的PID公式:

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

在数字系统中,我们用的是离散形式:

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

其中 Ts 是采样周期。这个公式就是咱们在FPGA里要硬化的核心。

1.5 三个系数的调参直觉

参数 增大后的效果 过大的风险
Kp 响应变快,稳态误差减小 系统震荡,甚至发散
Ki 消除稳态误差 积分饱和,过冲严重
Kd 抑制超调,提高稳定性 放大噪声,系统抖动

我个人习惯的调参顺序是:先调Kp让系统动起来,再加Kd抑制震荡,最后加Ki消除静差。别一上来三个参数一起调,那是在碰运气。

1.6 本章知识体系

下面这张图把PID三个分量的关系梳理清楚了:

PID控制原理知识体系 目标值 r(t) 偏差 e(t) 比例 Kp × e(t) 积分 Ki × ∫e dt 微分 Kd × de/dt + 控制量 u(t) 实际值 y(t) 图例 比例路径(当前纠错) 积分路径(历史累加) 微分路径(趋势预测) 反馈回路

本章小结:

  • 比例是「当下」的纠错,积分是「过去」的算账,微分是「未来」的预判
  • 三个分量各有优劣,配合使用才能发挥最大效果
  • 数字PID的离散公式是FPGA实现的基础,务必记牢

避坑指南:我曾经在FPGA里直接用浮点数实现PID,结果资源消耗大得离谱。后来全部改成定点数,速度提升了3倍,资源减少了70%。所以,从本章开始,你就要有「定点化」的意识。

专注资料整理