搜索

看得懂的PID算法

[复制链接]
天地我心 发表于 2019-9-7 12:41 | 显示全部楼层 打印 上一主题 下一主题
PID算法网上不少,往往都是基于数学模型,在实际中导致使用难的问题,而数学模型属于理想的,没有深入本质讲解,本文从控制学的基础讲解。5 ]* U: `# y1 i# `0 H& B% W4 e2tech.cn
7 f" c" M2 V/ o( [2tech.cn
我们看一个生活例子,冬天洗热水澡,需要先放掉一段时间的冷水,因为水管里有一段冷水,热水器也需要一个加热过程,等过了这段时间之后水温有些接近目标值后,开始调节水龙头来调节冷、热水之间的比例及出水量,之后再慢慢的微调,在洗浴过程中感觉温度不合适,再一点点的调节。这个过程,其实就是PID算法过程。我们之所以微调,是因为水温的变化速度与我调节的速度不相匹配,存在一个滞后效应,我们需要调节一点点,等一下再感觉一下温度,不够再条件一点点,再感觉,这个过程就叫PID算法,也可以说,滞后效应是引入PID的原因。
0 g- [- N9 k" d8 c7 u
" s2 I. x; A) a! l* q) z3 I失去的能否找回来?能、只是我找回了纽扣,却发现衣服已经不再了。这个就是滞后效应。! `+ a' ~5 t, N6 n- B2tech.cn

7 o: T) F/ V1 W# L7 n负反馈系统,都有滞后效应,但为什么运放、电源这类的却从来不提PID算法呢?这是因为这类系统的滞后延时时间非常短,若考虑这个延时,负反馈引入180度相位,延时恰好引入180度相位,则完全可能引起振荡。问题在于这个延时时间足够短,它的谐振频率点比较高,以运放为例,加入延时加上负反馈引起的谐振点为10MHz,但这颗运放的频率响应是1MHz,则在10MHz下完全不可能导致振荡,因为这个芯片的频响特性只有1MHz。我们常用的线性电源IC,比如SOT23封装的LDO,假如输出不加电容,就会输出一个振荡的波形,相对来说电源IC的滞后效应比运放要大,但是,因为电源一般后面都要接大电容的,它的频响特性很低,接近直流0Hz,所以当有电容时候,就无法振荡了。
9 T, O1 j7 {) U, d5 G( o
; Y! y* _# p3 D6 y& q$ l2 {: Q6 T而工业控制领域,比如温度等,都是滞后效应很严重的,往往都是mS,甚至是10mS级别的,若直接用负反馈,因为激励与反馈的不同步,必然导致强烈的振荡,所以为了解决这个问题,我们需要引入PID算法,来实现这类滞后效应严重系统的负反馈控制,我们以高频感应加热设备加热工件,从常温25度加热到700度为例做说明:
3 a9 _& ]( _/ a9 H, x8 E9 B5 f$ @- |% }  G8 I- }% z/ I! t0 R7 }2tech.cn
1、25~600度,100%的全功率加热工件,这是因为温差太大,前期要全功率,先加热到靠近目标温度。之所以考虑在600度,是因为滞后效应,若设定太高,当发现接近700度再停下来,但实际上,温度会冲过700度。当然,600度是一个经验值,以下几个温度点都是经验值,根据实际情况而来。; f3 o2 q" M% e% N+ _! Q- L6 j2tech.cn
1 z+ h3 [. ~" `1 H1 d, d$ Z2tech.cn
2、600以上,开启P算法,P就是根据测量值与目标值的误差来决定负反馈的大小。P算法公式:反馈 = P * (当前温度-目标温度)。但因为负反馈是基于存在误差为前提的,所以P算法导致一个问题,永远到不了想要的值:700度。因为到了700度,反馈值就没有了。P算法的开启,进一步逼近了目标温度,假设稳态下可以达到650度,这样就算因为滞后效应导致的延时,也不会超过700度太多。/ X  g0 }$ Q" W/ z- ]! ?2tech.cn

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

9 u2 b0 _2 i, Z/ T4、当I算法把工件温度加热到很接近目标温度后,那么可以调节的范围就很小了,最后一点点的微动,让调节的每一次的变化,不要太大,这就是D算法。D算法本质上讲就是反对剧烈的变化,所以适用于达到目标温度的时候。
( ^9 T( F$ ^. x# G3 y! |
5 P( o$ R; h/ F. u. p' sPID算法其实不复杂,但从目前看,很多人都是因为对这三者的使用条件不了解导致的问题,都是从加热一开始,三个要素都上,结果可想而知。P算法是温度接近目标值的时候用,I算法是在P算法到稳态极限的时候用,D算法是达到目标值附近的时候用。实际项目中,D算法一般不用,效果不大。假如非要找一个现实中对应的实物,那么以开关电源为例,TL431基准电源比较器可以认为是P,输出滤波电容C是I,输出滤波电感是D,两者完全等价。它们各自的应用工作点可以认为:假设目标温度700度,600~800度:P算法;640~760度:I算法;690~710度:D算法。具体值,以实验为准,数据仅供参考。+ `/ g+ Y3 H( J0 g2tech.cn
6 w& q4 j5 G0 y0 v/ v' F& T2tech.cn
最后给出一个PID最通俗的解读:我们设计一样东西,一般都是先打个样,这个样跟我们想要的接近,但细节没到位,这就是P,样有差异,所以就要修改,拟合逼近,这就是I,到了定稿,就不允许随便修改了,就算要修改,也是有限制的修改,这就是D。
& b* ?% m% o, |7 |0 F4 D0 ]( J: U3 T4 l/ X6 P2tech.cn

© 声明:本文仅表作者或发布者个人观点,与环保学社[2TECH.CN]无关。其原创性及陈述文字、内容、数据及图片均未经证实,对本文及其全部或部分内容、图片、文字的真实性、完整性、及时性本站不作任何保证或承诺,仅做参考并自行核实。如有侵权,请联系我们处理,在此深表歉意。

您需要登录后才可以回帖 马上登录 | 中文注册

本版积分规则

技术话题

关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
快速回复返回顶部 返回列表