【电子设计大赛】PID 控制算法整理
2015-10-06 23:07
309 查看
全国电赛结束了,最后拿了省一等奖,冲刺全国失败,去杭州梦想破灭。不管怎么说,这成绩也算对得起我们待在实验室一年的努力了吧。我们四天三夜做的风力摆控制系统最后虽然也没用到PID,但是期间看了好多资料,现在电脑还有好多这种资料。废话不说,简单的总结一下PID吧。
一、算法描述
PID 是一个闭环控制算法。因此要实现 PID 算法,必须在硬件上具有闭环控制,就是得有反馈。比如控制一个电机的转速,就得有一个测量转速的传感器,并将结果反馈到控制路线上。以前对于闭环控制的一个最朴素的想法就只有 P 控制,将当前结果反馈回来,再与目标相减,为正的话,就减速,为负的话就加速。现在知道这只是最简单的闭环控制算法。PID
是比例(P)、积分(I)、微分(D)控制算法。但并不是必须同时具备这三种算法,也可以是 PD,PI,甚至只有 P 算法控制。
比例(P)、积分(I)、微分(D)控制算法各有作用:
比例 :反应系统的基本(当前)偏差 e(t),系数大,可以加快调节,减小误差,但过大的比例使系统稳定性下降,甚至造成系统不稳定;
积分 :反应系统的累计偏差,使系统消除稳态误差,提高无差度,因为有误差,积分调节就进行,直至无误差;
微分 :反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,产生超前的控***用,在偏差还没有形成之前,已被微分调节作用消除,因此可以改善系统的动态性能。但是微分对噪声干扰有放大作用,加强微分对系统抗干扰不利。
积分和微分都不能单独起作用,必须与比例控制配合。
二、算法源码:
一、算法描述
PID 是一个闭环控制算法。因此要实现 PID 算法,必须在硬件上具有闭环控制,就是得有反馈。比如控制一个电机的转速,就得有一个测量转速的传感器,并将结果反馈到控制路线上。以前对于闭环控制的一个最朴素的想法就只有 P 控制,将当前结果反馈回来,再与目标相减,为正的话,就减速,为负的话就加速。现在知道这只是最简单的闭环控制算法。PID
是比例(P)、积分(I)、微分(D)控制算法。但并不是必须同时具备这三种算法,也可以是 PD,PI,甚至只有 P 算法控制。
比例(P)、积分(I)、微分(D)控制算法各有作用:
比例 :反应系统的基本(当前)偏差 e(t),系数大,可以加快调节,减小误差,但过大的比例使系统稳定性下降,甚至造成系统不稳定;
积分 :反应系统的累计偏差,使系统消除稳态误差,提高无差度,因为有误差,积分调节就进行,直至无误差;
微分 :反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,产生超前的控***用,在偏差还没有形成之前,已被微分调节作用消除,因此可以改善系统的动态性能。但是微分对噪声干扰有放大作用,加强微分对系统抗干扰不利。
积分和微分都不能单独起作用,必须与比例控制配合。
二、算法源码:
{ static float e_s=0,sum=0;//e_s 用于保存上一次的误差值,用于计算微分项。Sum 用于计算累加和,计算积分项。 float r; sum+=e;//计算积分累加和 r=kp*e+ki*sum+kd*(e-e_s);//从左至右分别是比例项、积分项、微分项 e_s=e;//保存这一次的误差值用于下一次微分计算 return r; }
相关文章推荐
- CEF使用的几个注意点
- leetcode之Rotate Image
- Wormholes
- keystonejs
- DotNetBar v12.5.0.2 Fully Cracked
- D3DPRESENT_PARAMETERS
- Intent的两种具体实现
- 【超经典】Java多态有什么好处?怎样用?
- struts <html:form>: Module 'null' not found
- C#学习之路,学习笔记 第五章 枚举、结构体和数组
- 第二次作业——四则运算
- WebView加载HTML图片大小自适应与文章自动换行
- 【Visual C++】游戏开发笔记三十七 浅墨DirectX提高班之五 顶点缓存的红颜知己:索引缓存的故事
- hihoCoder 1233 Boxes
- 结对项目博客
- 关于conn交叉关闭造成卡死
- UVa 1587 - Box【水题】
- 结对编程任务总结
- 结对项目——个人博客
- 复习扩展方法 涉及委托,这里我使用自定义委托类型 public delegate bb MyFunc<in T,out bb> (T arg)