各种PID算法和优化
1. 经典PID公式
位置式PID公式
增量式PID公式
1.1 离散位置式PID公式
u(t) = P * error_now + I * error_sum + D *(error_now- error_last)
- error_now 当前误差
- error_sum 误差累积
- error_now- error_last 上次误差与当前误差的差值
- 常用于位置环,例如平衡车的角度环
-
三个参数的简单理解
- P 比例项,只有当前误差有关,相位为0,对输出只有增益作用
- I 积分项,误差累积,误差随着时间的积累,具有滞后性,可以减少稳态误差
- D 微分项,误差变化率,反映了系统未来,具有超前性,及其容易受到高频噪声影响
-
三个环节的作用
- P 比例环节:起主要控制作用,使反馈量向目标值靠拢,但可能导致振荡
- I 积分环节:消除稳态误差,但可能会增加超调量
- D 微分环节:产生阻尼效果,抑制振荡和超调,但会降低响应速度
1.2 离散增量式PID公式
∆u(t) = P * [e(t) – e(t-1)] + I * e(t) + D * [e(k) – 2e(k-1) + e(k-2)]
u(t) = u(t – 1) + ∆u(t)
- P 比例项,当前误差差值
- I 积分项,当前误差
- D 微分项,当前误差差值 – 上一次误差差值
- 常用于速度环,例如步进电机速度环控制
1.3 增量式和位置式的区别
- 位置式PID: 直接输出 绝对控制量
- 位置式 PID 适合:需要绝对位置输出、高频响应或复杂动态系统。(角度环)
- 增量式PID: 输出 控制量的增量
- 增量式 PID 适合:执行机构支持增量控制、需避免积分饱和(积分限幅)、资源受限的系统。(例如步进电机)
2. PID的优化或变式
2.1 串级PID
串级PID的参数整定一般遵循从内到外,先整定内环PID的参数,再整定外环PID的参数
2.2 并级PID
2.3PID变式
为了增强PID的控制效果衍生很多的PID,常见的有如下:
- 增量式PID : 无积分作用,适合带积分部件的器件,一般用于速度环
- 积分限幅 : 防止积分值过大
- 积分分离PID : 当偏差达到一定阈值才使用积分项
- 变速PID : 动态改变积分项,偏差越大,积分越慢,反之则越快。
- 不完全微分 : 消除高频干扰
- 微分先行PID: 适合于给定值频繁变化的场合,避免给定值变化时可能引起的振荡
- 带死区PID : 误差到达需要调节的阈值才开始pid计算
2.4滤波
引入反馈时,由于传感器的输出往往带有高频噪声或者温漂导致输出失真,需要对输出值进行滤波
常用的滤波算法有
-
一阶低通滤波(常用于微分项)
-
卡尔曼滤波(常用于IMU)
-
均值滤波
-
等等
3. 参考链接 or up
手撕PID(带死区、积分分离、不完全微分)_pid死区程序-CSDN博客
变速积分PID控制算法-CSDN博客
史上最详细的PID教程——理解PID原理及优化算法_串级pid为什么可以减小稳定时间-CSDN博客
匿名飞控TI版_PID部分,串级PID,微分先行,前馈控制_pid前馈控制量的确定-CSDN博客
干货 | 到底什么是串级PID?-电子头条-EEWORLD电子工程世界
【串级PID】浅谈串级PID作用及意义——快速理解串级PID结构优势(附图)-CSDN博客
10种软件滤波算法及其代码实现(C语言)-CSDN博客
深入浅出理解卡尔曼滤波【实例、公式、代码和图】 – 知乎
- 控制算法up:Dr_can 等角螺线 华南小虎队
来源链接:https://www.cnblogs.com/jiejielin-blogs/p/18813763
没有回复内容