PID的故事-知识点分享
小明接到这样一个任务:有一个水缸点漏水(而且漏水的速度还不一定固定不变),要求水面高度维持在某个位置,一旦发现水面高度低于要求位置,就要往水缸里加水。
小明接到任务后就一直守在水缸旁边,时间长就觉得无聊,就跑到房里看小说了,每30分钟来检查一次水面高度。水漏得太快,每次小明来检查时,水都快漏完了,离要求的高度相差很远,小明改为每3分钟来检查一次,结果每次来水都没怎么漏,不需要加水,来得太频繁做的是无用功。几次试验后,确定每10分钟来检查一次。这个检查时间就称为采样周期
开始小明用瓢加水,水龙头离水缸有十几米的距离,经常要跑好几趟才加够水,于是小明又改为用桶加,一加就是一桶,跑的次数少了,加水的速度也快了,但好几次将缸给加溢出了,不小心弄湿了几次鞋,小明又动脑筋,我不用瓢也不用桶,老子用盆,几次下来,发现刚刚好,不用跑太多次,也不会让水溢出。这个加水工具的大小就称为比例系数
小明又发现水虽然不会加过量溢出了,有时会高过要求位置比较多,还是有打湿鞋的危险。他又想了个办法,在水缸上装一个漏斗,每次加水不直接倒进水缸,而是倒进漏斗让它慢慢加。这样溢出的问题解决了,但加水的速度又慢了,有时还赶不上漏水的速度。于是他试着变换不同大小口径的漏斗来控制加水的速度,最后终于找到了满意的漏斗。漏斗的时间就称为积分时间
小明终于喘了一口,但任务的要求突然严了,水位控制的及时性要求大大提高,一旦水位过低,必须立即将水加到要求位置,而且不能高出太多,否则不给工钱。小明又为难了!于是他又开努脑筋,终于让它想到一个办法,常放一盆备用水在旁边,一发现水位低了,不经过漏斗就是一盆水下去,这样及时性是保证了,但水位有时会高多了。他又在要求水面位置上面一点将水凿一孔,再接一根管子到下面的备用桶里这样多出的水会从上面的孔里漏出来。这个水漏出的快慢就称为微分时间
看到几个问采样周期的帖子,临时想了这么个故事。微分的比喻一点牵强,不过能帮助理解就行了,呵呵,入门级的,如能帮助新手理解下PID,于愿足矣。故事中小明的试验是一步步独立做,但实际加水工具、漏斗口径、溢水孔的大小同时都会影响加水的速度,水位超调量的大小,做了后面的实验后,往往还要修改改前面实验的结果
楼主最近还看过
温湿度控制中pid参数的整定
DDC控制器中对温湿度等的精确控制多采用PID算法,DDC中虽然对PID的比例、积分、微分系数都有默认设定参数,但是在具体工程中有时需要通过调试才能找到相对比较理想的参数值,调整方法可以根据这些参数在整个PID过程中的作用原理来进行:
1. 加温很迅速就达到目标值,但是温度过冲很大:
1) 比例系数太大,致使在未达到设定温度前加温比例过高,调小Kp值;
2) 微分系数过小,致使对对象反应不敏感,调大Kd值。
2. 加温经常达不到目标值,小于目标值的时间较多:
1) 比例系数过小,加温比例不够,调大Kp值;
2) 积分系数过小,对恒偏差补偿不足,调大Ki值。
3. 基本上能够在控制目标上,但上下偏差偏大,经常波动:
1) 微分系数过小,对即时变化反应不够快,反映措施不力,调大Kd值;
2) 积分系数过大,使微分反应被淹没钝化,调小Ki值;
3) 设定的时间周期过短,加热没有来得及传到测温点,调大T值。
4. 受工作环境影响较大,在稍有变化时就会引起温度的波动:
1) 微分系数过小,对即时变化反应不够快,不能及时反应,调大Kd值;
2) 设定的时间周期过长,不能及时得到修正,调小T值。 选择一个合适的时间周期(连续两次输出之间的时间间隔)很重要,要根据执行器类型来确定,还要根据系统的纯滞后时间来考虑,例如风管长度60米,风速6米/秒,则表冷器电动阀动作后造成房间温度的变化,需要10秒钟以后房间温度传感器才能检测到,所以时间周期最少要为10秒。