这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 让门外汉也能理解P I D

共16条 1/2 1 2 跳转至

让门外汉也能理解P I D

高工
2014-03-12 17:40:48     打赏

学过自控的同学恐怕都知道PID调节的口诀:

参数整定找最佳,从小到大顺序查,先是比例后积分,最后再把微分加,曲线振荡很频繁,比例度盘要放大,

曲线漂浮绕大湾,比例度盘往小扳,曲线偏离回复慢,积分时间往下降,曲线波动周期长,积分时间再加长,

曲线振荡频率快,先把微分降下来,动差大来波动慢,微分时间应加长,理想曲线两个波,前高后低4比1 ,  

 一看二调多分析,调节质量不会低。

    关于PID的算法网上不少,但大都是基于数学模型,在实际中导致使用难的问题,而数学模型属于理想的,没有深入本质讲解,我认为最好的老师是拿身边的例子来讲解的老师,举例说明,形象简洁,易于接受。

以下为摘自某老师的高见:

   我们看一个生活例子,冬天洗热水澡,需要先放掉一段时间的冷水,因为水管里有一段冷水,热水器也需要一个加热过程,等过了这段时间之后水温有些接近目标值后,开始调节水龙头来调节冷、热水之间的比例及出水量,之后再慢慢的微调,在洗浴过程中感觉温度不合适,再一点点的调节。这个过程,其实就是PID算法过程。我们之所以微调,是因为水温的变化速度与我调节的速度不相匹配,存在一个滞后效应,我们需要调节一点点,等一下再感觉一下温度,不够再条件一点点,再感觉,这个过程就叫PID算法,也可以说,滞后效应是引入PID的原因。

   失去的能否找回来?能、只是我找回了纽扣,却发现衣服已经不再了。这个就是滞后效应。

   负反馈系统,都有滞后效应,但为什么运放、电源这类的却从来不提PID算法呢?这是因为这类系统的滞后延时时间非常短,若考虑这个延时,负反馈引入180度相位,延时恰好引入180度相位,则完全可能引起振荡。问题在于这个延时时间足够短,它的谐振频率点比较高,以运放为例,加入延时加上负反馈引起的谐振点为10MHz,但这颗运放的频率响应是1MHz,则在10MHz下完全不可能导致振荡,因为这个芯片的频响特性只有1MHz。我们常用的线性电源IC,比如SOT23封装的LDO,假如输出不加电容,就会输出一个振荡的波形,相对来说电源IC的滞后效应比运放要大,但是,因为电源一般后面都要接大电容的,它的频响特性很低,接近直流0Hz,所以当有电容时候,就无法振荡了。

   而工业控制领域,比如温度等,都是滞后效应很严重的,往往都是mS,甚至是10mS级别的,若直接用负反馈,因为激励与反馈的不同步,必然导致强烈的振荡,所以为了解决这个问题,我们需要引入PID算法,来实现这类滞后效应严重系统的负反馈控制,我们以高频感应加热设备加热工件,从常温25度加热到700度为例做说明:

1、25~600度,100%的全功率加热工件,这是因为温差太大,前期要全功率,先加热到靠近目标温度。之所以考虑在600度,是因为滞后效应,若设定太高,当发现接近700度再停下来,但实际上,温度会冲过700度。当然,600度是一个经验值,以下几个温度点都是经验值,根据实际情况而来。

2、600以上,开启P算法,P就是根据测量值与目标值的误差来决定负反馈的大小。P算法公式:反馈 = P * (当前温度-目标温度)。但因为负反馈是基于存在误差为前提的,所以P算法导致一个问题,永远到不了想要的值:700度。因为到了700度,反馈值就没有了。P算法的开启,进一步逼近了目标温度,假设稳态下可以达到650度,这样就算因为滞后效应导致的延时,也不会超过700度太多。

3、当达到P算法的稳态极限650度附近的时候,比如640度,就应该开启另外一个算法解决P算法引起的极限误差,那就是I算法。I算法就是为了消除这个P算法导致的误差值,毕竟我们想要的是700度,而不是650度。I算法,本质上讲就是获取一个700度下对应的一个驱动值,之后用这个驱动值来取代P算法,那么我们怎么得到这个驱动值呢,唯一的手段就是把之前的误差都累加起来,最后得到一个期望值,这个期望值就是我们想要的驱动值。因为只要与目标值存在误差,那么把这些误差值积累起来再去反馈控制,就能一步步的逼近目标值,这如同水温不够高,再加一点点热水,不够高再加,这样总能达到想要的水温。值得注意的是,I算法不能接入太高,必须要在P算法的后期介入,不然很容易积累过大。这个时候可以引入一个误差门限,比如误差为60,当作6来处理,误差为50,当作5来处理,消除大的误差值,具体根据项目情况决定。

4、当I算法把工件温度加热到很接近目标温度后,那么可以调节的范围就很小了,最后一点点的微动,让调节的每一次的变化,不要太大,这就是D算法。D算法本质上讲就是反对剧烈的变化,所以适用于达到目标温度的时候。

   PID算法其实不复杂,但从目前看,很多人都是因为对这三者的使用条件不了解导致的问题,都是从加热一开始,三个要素都上,结果可想而知。P算法是温度接近目标值的时候用,I算法是在P算法到稳态极限的时候用,D算法是达到目标值附近的时候用。实际项目中,D算法一般不用,效果不大。假如非要找一个现实中对应的实物,那么以开关电源为例,TL431基准电源比较器可以认为是P,输出滤波电容C是I,输出滤波电感是D,两者完全等价。它们各自的应用工作点可以认为:假设目标温度700度,600~800度:P算法;640~760度:I算法;690~710度:D算法。具体值,以实验为准,数据仅供参考。

   最后给出一个PID最通俗的解读:我们设计一样东西,一般都是先打个样,这个样跟我们想要的接近,但细节没到位,这就是P,样有差异,所以就要修改,拟合逼近,这就是I,到了定稿,就不允许随便修改了,就算要修改,也是有限制的修改,这就是D。




关键词: PID     PID口诀    

院士
2014-03-12 21:24:35     打赏
2楼

好多的字啊~~

看来PID算法是必学的了!


助工
2014-03-12 21:28:20     打赏
3楼
学习了,真不错!

工程师
2014-03-12 22:11:27     打赏
4楼
通俗易懂,好!

高工
2014-03-12 22:34:07     打赏
5楼
模糊PID效果会更好些,一起模糊吧  

高工
2014-03-12 22:34:46     打赏
6楼
还有很多好资源等着大家分享呢

高工
2014-03-12 22:35:10     打赏
7楼
多谢推荐

院士
2014-03-12 23:33:10     打赏
8楼
总结的嘿好,我的“自控”是自己慢慢啃的,没见到这般顺口溜式的归纳,谢谢你的分享,重读了帖子说所的内容,我好像复习了一堂课。

高工
2014-03-12 23:48:58     打赏
9楼

嘿,不错

PID算不算是自控的经典


院士
2014-03-13 09:02:15     打赏
10楼
应二楼要求,弄个手抄本吧

共16条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]