关于PID控制中积分器两种实现方法的疑问与效率咨询
关于PID积分器两种实现方式的疑问解答
方法2的积分原理与prevError的作用
你能理解的方法1是最基础的矩形积分法——把每个采样周期的误差直接累加,用矩形面积近似误差的积分值。
而方法2采用的是梯形积分法,这是数值积分里精度更高的一种实现:
- 公式里的
0.5f * pid->T * (error + pid->prevError),本质是计算当前采样周期内误差曲线围成的梯形面积:pid->T是采样周期(梯形的高度),当前误差error和上一周期误差pid->prevError是梯形的两个底边,用平均底边长度乘以周期,得到这个周期内的积分增量。 - 再乘以积分系数
pid->Ki后加到积分器中,最终的积分结果更接近真实的积分值。
这里的pid->prevError就是上一个采样周期的误差值,用来和当前误差配合计算梯形的平均高度,相比矩形积分只取当前误差,梯形积分能有效降低积分环节的误差,尤其在误差变化较快时,积分精度提升明显。
两种方法的效率与特性差异
- 计算量:方法1仅需一次加法操作
IntegralError += error,计算开销极小;方法2需要完成加法、乘法、乘法、乘法、加法多步运算,计算量比方法1大,但在常规MCU中这种差异几乎可以忽略,只有极端资源受限的场景才需要优先考虑方法1。 - 精度与控制效果:方法2的梯形积分精度更高,能减少稳态误差,降低积分饱和的概率;方法1的矩形积分在误差波动大时,积分误差会更显著,容易引发积分超调。
- 实现复杂度:方法1无需额外存储变量,实现零额外开销;方法2需要额外保存
prevError,每次计算后还要更新该变量,多了一步状态维护操作。
内容的提问来源于stack exchange,提问作者Varun Rajarangan
相关产品推荐
相关产品推荐

