第二节 PI控制器原理:比例与积分的作用

各位同学好,今天我们聊聊PI控制器的核心原理。说实话,我在做电流环调试的头两年,对PI参数的理解也就是停留在「P大了震荡,I大了超调」这种口诀层面。直到有一次在伺服驱动器项目上,电机低速爬行怎么也调不好,我才真正沉下心把比例和积分的作用吃透。

今天的内容,我尽量用大白话讲清楚三个问题:比例Kp到底在干什么?积分Ki又有什么用?它们俩合在一起怎么工作的?

2.1 比例环节Kp的作用

比例环节,说白了就是「看偏差,给力度」。

你想想看,如果电流目标值是10A,实际只有8A,偏差就是2A。比例环节做的事情很简单:把偏差乘以Kp,直接输出一个控制量。偏差越大,输出越大。

核心公式: u_p(t) = Kp × e(t)

其中 e(t) 是当前偏差,Kp 是比例增益

我在项目中遇到过这样一个情况:某次调试直流电机电流环,Kp设得太小,电机响应慢得像老牛拉车。我习惯先给一个阶跃指令,看电流跟踪速度。当时Kp=0.5,电流从0爬到目标值用了将近200ms——这在伺服系统里完全不可接受。

后来我把Kp逐步加大到5.0,响应时间缩短到20ms以内。但问题来了:Kp太大,电流开始震荡。示波器上能看到明显的过冲和衰减振荡。

我的经验: Kp的调整有个「黄金区间」。太小了响应慢,太大了系统不稳。我一般从0.1倍的理论值开始试,每次增加50%,直到出现轻微震荡,然后退回80%。

比例环节有个天生的缺陷——稳态误差。什么意思呢?假设系统有摩擦力或者负载阻力,比例控制最终会停在某个接近目标值但差一点的位置。比如目标10A,实际可能停在9.8A,那0.2A的误差就是稳态误差。比例系数再大也消除不了,因为误差小了,比例输出也小了,刚好被阻力抵消。

嗯,这里要注意:纯比例控制一定存在稳态误差。这是数学上决定的,不是调参能解决的。

2.2 积分环节Ki的作用

积分环节就是来解决上面那个问题的。它的思路很巧妙:把过去的误差累积起来,用累积量去推动输出

公式是这样的:

核心公式: u_i(t) = Ki × ∫e(τ)dτ

从0时刻到当前时刻,把每一瞬间的误差都加起来

你想想看,只要有稳态误差存在,积分项就会一直累积。累积到一定程度,输出的控制量就会增加,直到把误差推回到零。这就是积分消除稳态误差的原理。

我曾经犯过一个错误:在某次张力控制项目中,Ki设得太大。结果积分项累积过快,系统出现了「积分饱和」——电机一下子冲过头,然后积分又开始反向累积,来回震荡了好几次才稳定下来。那次调试花了我整整一个下午。

避坑指南: 我曾经因为Ki设置过大,导致电机在启动时出现明显的「积分饱和」现象。具体表现就是:启动瞬间电流冲得很高,然后掉下来,再冲上去,像打摆子一样。后来我加了积分限幅和抗饱和处理,问题才解决。

积分环节的副作用也很明显:它会降低系统的响应速度。因为积分需要时间累积,所以加入积分后,系统的相位会滞后。这也是为什么有些场合只用比例控制,不用积分——比如对响应速度要求极高、且可以容忍微小稳态误差的场景。

2.3 PI控制器的数学模型

把比例和积分加起来,就是标准的PI控制器:

时域表达式: u(t) = Kp × e(t) + Ki × ∫e(τ)dτ

频域表达式(拉普拉斯变换后): G(s) = Kp + Ki/s

这个模型看起来简单,但实际工程中要注意几个细节。

第一,离散化问题。我们在单片机里实现的是数字PI,不是模拟PI。常用的离散化方法有后向差分法和双线性变换法。我习惯用后向差分,简单可靠:

// 位置式PI实现
float error = target - actual;
integral += error * dt;
output = Kp * error + Ki * integral;

// 限幅处理
if(output > max_output) output = max_output;
if(output < -max_output) output = -max_output;

第二,积分分离。我建议在偏差较大时,暂时关闭积分作用。等偏差缩小到一定范围内,再开启积分。这样可以避免积分饱和,同时保留积分消除稳态误差的能力。

第三,梯形积分 vs 矩形积分。上面代码用的是矩形积分(最简单的累加)。如果采样周期不稳定,可以考虑用梯形积分,精度更高一些。

积分方式 精度 计算量 适用场景
矩形积分 一般 采样周期稳定、精度要求不高
梯形积分 较高 采样周期波动、需要较高精度
辛普森积分 极少用于实时控制

我个人习惯在电流环中使用矩形积分,因为电流环的采样周期非常稳定(通常是PWM周期同步),矩形积分完全够用。但在速度环或位置环中,如果采样周期不稳定,我会改用梯形积分。

2.4 PI控制器的直观理解

为了帮助大家理解,我画了一张图来说明PI控制器的工作逻辑:

PI控制器结构框图 目标值 r(t) - 实际值 y(t) 偏差 e(t) 比例 Kp 积分 Ki + 控制量 u(t) 比例路径:u_p = Kp × e(t) —— 快速响应,但有稳态误差 积分路径:u_i = Ki × ∫e(τ)dτ —— 消除稳态误差,但响应慢 总输出:u(t) = u_p + u_i

从这张图可以看得很清楚:偏差信号分成两路,一路走比例,一路走积分,最后加起来输出。比例负责「快」,积分负责「准」。

实际调试时,我一般先调Kp,让系统响应速度基本满足要求,然后加入Ki消除稳态误差。Ki从很小的值开始加,比如0.01倍的理论值,观察稳态误差是否在减小。如果出现积分震荡,说明Ki太大了。

调试口诀(我自己总结的):

  • Kp调响应,快了就停手
  • Ki消误差,小了就加码
  • 震荡是信号,退一步海阔天空

好了,关于PI控制器的原理,今天就讲到这里。比例和积分这两个环节,看似简单,但真正用好需要大量的实践积累。下一节我们会聊到电流环的数学模型,那是整定参数的理论基础。


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