联系热线:0573-86128502
您好,欢迎来到嘉兴奥拓迈讯自动化控制技术有限公司!
资讯分类
联系我们

地址:浙江省海盐县盐北路211号西区1-1

手机:13906834312

座机:0573-86128502

传真:0573-86112502

邮箱:hygongkong@163.com​

⾃动化控制PID讲解
来源:来源互联⽹,侵删 | 作者:降魔神兵 | 发布时间: 2019-12-31 | 463 次浏览 | 分享到:
⾃动化控制PID讲解
啥是PID?

PID , 就 是 “ ⽐ 例 ( proportional ) 、 积 分(integral)、微分(derivative)”,是⼀种很常⻅的控制算法。算法是不可以吃的。
PID已经有107年的历史了。
它并不是什么很神圣的东西,⼤家⼀定都⻅过PID的实际应⽤。
⽐如四轴⻜⾏器,再⽐如平衡⼩⻋......还有汽⻋的定速巡航、3D打印机上的温度控制器....
就是类似于这种:需要将某⼀个物理量“保持稳定 ” 的 场 合 ( ⽐ 如 维 持 平 衡 , 稳 定 温 度 、 转 速等),PID都会派上⼤⽤场。
那么问题来了:
⽐如,我想控制⼀个“热得快”,让⼀锅⽔的温度保持在50℃
这么简单的任务,为啥要⽤到微积分的理论呢。

你⼀定在想:

这不是so easy嘛~ ⼩于50度就让它加热⼤于50度就断电,不就⾏了?⼏⾏代码⽤Arduino分分钟写出来。
没错~ 在要求不⾼的情况下,确实可以这么⼲~But! 如果换⼀种说法,你就知道问题出在哪⾥了:
如果我的控制对象是⼀辆汽⻋呢?
要是希望汽⻋的⻋速保持在50km/h不动,你还敢这样⼲么。
设想⼀下,假如汽⻋的定速巡航电脑在某⼀时间测 到 ⻋ 速 是 45km/h 。 它 ⽴ 刻 命 令 发 动 机 : 加速!
结果,发动机那边突然来了个100%全油⻔,嗡的⼀下,汽⻋急加速到了60km/h。
这时电脑⼜发出命令:刹⻋!
结果,吱...............哇............(乘客吐)

所以,在⼤多数场合中,⽤“开关量”来控制⼀个物理量,就显得⽐较简单粗暴了。有时候,是⽆法保持稳定的。因为单⽚机、传感器不是⽆限快的,采集、控制需要时间。
⽽且,控制对象具有惯性。⽐如你将⼀个加热器拔掉,它的“余热”(即热惯性)可能还会使⽔温继续升⾼⼀⼩会。

这时,就需要⼀种『算法』:
它可以将需要控制的物理量带到⽬标附近
它可以“预⻅”这个量的变化趋势
它也可以消除因为散热、阻⼒等因素造成的静态误差
....

于是,当时的数学家们发明了这⼀历久不衰的算法——这就是PID。
你应该已经知道了,P,I,D是三种不同的调节作⽤,既可以单独使⽤(P,I,D),也可以两个 两 个 ⽤ ( PI , PD ) , 也 可 以 三 个 ⼀ 起 ⽤(PID)。
这三种作⽤有什么区别呢?客官别急,听我慢慢道来
我 们 先 只 说 PID 控 制 器 的 三 个 最 基 本 的 参 数 :
kP,kI,kD。

kP
 
P就是⽐例的意思。它的作⽤最明显,原理也最简单。我们先说这个:
需要控制的量,⽐如⽔温,有它现在的『当前值』,也有我们期望的『⽬标值』。
当两者差距不⼤时,就让加热器“轻轻地”加热⼀下。
要是因为某些原因温度降低了很多就让加热器“稍稍⽤⼒”加热⼀下。
要是当前温度⽐⽬标温度低得多,就让加热器“开⾜⻢⼒”加热,尽快让⽔温到达⽬标附近。
这 就 是 P 的 作 ⽤ , 跟 开 关 控 制 ⽅ 法 相 ⽐ , 是 不是“温⽂尔雅”了很多。
实际写程序时,就让偏差(⽬标减去当前)与调节 装 置 的 “调 节 ⼒ 度 ”, 建 ⽴ ⼀ 个 ⼀ 次 函 数 的 关系,就可以实现最基本的“⽐例”控制了~
kP越⼤,调节作⽤越激进,kP调⼩会让调节作⽤更保守。
要是你正在制作⼀个平衡⻋,有了P的作⽤,你会发现,平衡⻋在平衡⻆度附近来回“狂抖”,⽐较难稳住。
如果已经到了这⼀步——恭喜你!离成功只差⼀⼩步了~

kD
 
D的作⽤更好理解⼀些,所以先说说D,最后说I。
刚才我们有了P的作⽤。你不难发现,只有P好像不能让平衡⻋站起来,⽔温也控制得晃晃悠悠,好像整个系统不是特别稳定,总是在“抖动”。
你⼼⾥设想⼀个弹簧:现在在平衡位置上。拉它⼀下,然后松⼿。这时它会震荡起来。因为阻⼒很⼩,它可能会震荡很⻓时间,才会重新停在平衡位置。
我们需要⼀个控制作⽤,让被控制的物理量的“变化速度”趋于0,即类似于“阻尼”的作⽤。
因为,当⽐较接近⽬标时,P的控制作⽤就⽐较⼩了。越接近⽬标,P的作⽤越温柔。有很多内在的或者外部的因素,使控制量发⽣⼩范围的摆动。
D的作⽤就是让物理量的速度趋于0,只要什么时候 , 这 个 量 具 有 了 速 度 , D 就 向 相 反 的 ⽅ 向 ⽤⼒,尽⼒刹住这个变化。
kD参数越⼤,向速度相反⽅向刹⻋的⼒道就越强。
如果是平衡⼩⻋,加上P和D两种控制作⽤,如果参数调节合适,它应该可以站起来了~欢呼吧。

等等,PID三兄弟好想还有⼀位。看起来PD就可以让物理量保持稳定,那还要I⼲嘛?

因为我们忽视了⼀种重要的情况:

kI
 
还是以热⽔为例。假如有个⼈把我们的加热装置带到了⾮常冷的地⽅,开始烧⽔了。需要烧到50℃。
在P的作⽤下,⽔温慢慢升⾼。直到升⾼到45℃时,他发现了⼀个不好的事情:天⽓太冷,⽔散热的速度,和P控制的加热的速度相等了。
这可怎么办?

P兄这样想:我和⽬标已经很近了,只需要轻轻加热就可以了。
D兄这样想:加热和散热相等,温度没有波动,我好像不⽤调整什么。
于 是 , ⽔ 温 永 远 地 停 留 在 45 ℃ , 永 远 到 不 了50℃。
作为⼀个⼈,根据常识,我们知道,应该进⼀步增加加热的功率。可是增加多少该如何计算呢?
前辈科学家们想到的⽅法是真的巧妙。
设置⼀个积分量。只要偏差存在,就不断地对偏差进⾏积分(累加),并反应在调节⼒度上。
这样⼀来,即使45℃和50℃相差不太⼤,但是随着时间的推移,只要没达到⽬标温度,这个积分量就不断增加。系统就会慢慢意识到:还没有到达⽬标温度,该增加功率啦!
到了⽬标温度后,假设温度没有波动,积分值就不会再变动。这时,加热功率仍然等于散热功率。但是,温度是稳稳的50℃。
kI的值越⼤,积分时乘的系数就越⼤,积分效果越明显。
所以,I的作⽤就是,减⼩静态情况下的误差,让受控物理量尽可能接近⽬标值。
I在使⽤时还有个问题:需要设定积分限制。防⽌在刚开始加热时,就把积分量积得太⼤,难以控制。