搜索
bottom↓
回复: 43

用更通俗的语言解释什么是 PID

  [复制链接]

出85入4汤圆

发表于 2019-3-20 10:52:43 | 显示全部楼层 |阅读模式

论坛上见过N个版本对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在使用时还有个问题:需要设定积分限制。防止在刚开始加热时,就把积分量积得太大,难以控制。

End

作者:virtualwiz

来源:DF创客社区

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2019-3-20 10:59:29 | 显示全部楼层
关键在实现,再通俗的解释还是比不过理论的全面分析和描述。
在控制系统中都在讲控制原理,却忽略了信号的获取和处理才是重点。

出235入235汤圆

发表于 2019-3-20 11:11:05 | 显示全部楼层
图做的挺好的。

出0入98汤圆

发表于 2019-3-20 11:15:59 | 显示全部楼层

上面那张曲线变化的图是wikipedia上的

出0入12汤圆

发表于 2019-3-20 11:21:58 | 显示全部楼层
讲得不错

出0入0汤圆

发表于 2019-3-20 11:28:09 | 显示全部楼层
动图很不错

出0入0汤圆

发表于 2019-3-20 11:45:46 | 显示全部楼层
讲的很好,非常感谢

出0入0汤圆

发表于 2019-3-20 11:47:27 | 显示全部楼层
通俗易懂

出0入0汤圆

发表于 2019-3-20 11:58:28 | 显示全部楼层
好文章,有空学习

出0入0汤圆

发表于 2019-3-20 12:41:51 | 显示全部楼层
不错
不错

出0入0汤圆

发表于 2019-3-20 12:55:40 | 显示全部楼层
njhying 发表于 2019-3-20 10:59
关键在实现,再通俗的解释还是比不过理论的全面分析和描述。
在控制系统中都在讲控制原理,却忽略了信号的 ...
却忽略了信号的获取和处理才是重点


一针见血! 纵观目前所有学科都有此类似的问题。

出0入0汤圆

发表于 2019-3-20 13:02:56 | 显示全部楼层
讲的很好,非常感谢.

出0入0汤圆

发表于 2019-3-20 13:08:37 来自手机 | 显示全部楼层
njhying 发表于 2019-3-20 10:59
关键在实现,再通俗的解释还是比不过理论的全面分析和描述。
在控制系统中都在讲控制原理,却忽略了信号的 ...

PID就几行代码,其实很多人就是搞不懂那几个参数的定义。搞懂了在去看专业的推论会简单很多。

出0入0汤圆

发表于 2019-3-20 13:35:35 | 显示全部楼层
顶一下 , 我也最近才搞懂原理 , 但是和实际运用起来还是有差距 。 比如说 kp ki kd 应该如何取值

出50入10汤圆

发表于 2019-3-20 13:39:12 | 显示全部楼层
主要是不懂微积分的原理吧!

出0入0汤圆

发表于 2019-3-20 14:29:44 | 显示全部楼层
通俗易懂+1

出0入0汤圆

发表于 2019-3-20 14:32:07 | 显示全部楼层
有没有自整定的资料

出0入0汤圆

发表于 2019-3-20 14:37:44 | 显示全部楼层
多谢分享

出0入8汤圆

发表于 2019-3-20 14:38:07 | 显示全部楼层
懂是懂,调PID还是累。

出90入0汤圆

发表于 2019-3-20 14:45:53 | 显示全部楼层
PID,主要是那3个参数这样得到。

出0入0汤圆

发表于 2019-3-20 15:08:19 | 显示全部楼层
一直搞不懂自整定

出0入0汤圆

发表于 2019-3-20 16:14:31 | 显示全部楼层
我听懂了。

出1310入193汤圆

发表于 2019-3-20 16:22:35 | 显示全部楼层
解释什么是 PID  这篇最通俗易懂了

出0入0汤圆

发表于 2019-3-20 20:44:26 来自手机 | 显示全部楼层
通俗是够通俗,美中不足1、P I D 三个参数的选择要点 2、 系统滞后响应与pid执行周期与pid参数的关系

出10入10汤圆

发表于 2019-3-20 21:04:13 | 显示全部楼层
学习了,支持一下

出0入0汤圆

发表于 2019-3-20 23:31:59 | 显示全部楼层
不错,学习了

出0入0汤圆

发表于 2019-3-21 07:00:12 | 显示全部楼层
有图就形象多了

出0入0汤圆

发表于 2019-3-21 08:24:41 | 显示全部楼层
不错,感谢!

出0入0汤圆

发表于 2019-3-21 08:38:28 | 显示全部楼层
讲的很好!谢谢!

出0入0汤圆

发表于 2019-3-21 08:42:55 | 显示全部楼层
分析得很好!

出0入10汤圆

发表于 2019-8-31 17:17:38 | 显示全部楼层
mark  慢慢看

出0入0汤圆

发表于 2019-8-31 17:45:18 来自手机 | 显示全部楼层
好文章,但再深入,难于上青天。

出0入0汤圆

发表于 2019-8-31 17:47:14 | 显示全部楼层
通俗易懂+1

出0入0汤圆

发表于 2019-8-31 21:11:42 来自手机 | 显示全部楼层
通俗易懂+1

出0入0汤圆

发表于 2019-8-31 22:16:34 | 显示全部楼层
通俗易懂,不错,收藏下

出10入12汤圆

发表于 2019-8-31 22:32:16 | 显示全部楼层
一直认为类似通信、放大器那种系统零极点分析+补偿才是正途
PID还是太原始了……

出0入8汤圆

发表于 2019-8-31 23:27:48 | 显示全部楼层
见得灰常好!

出0入0汤圆

发表于 2019-8-31 23:43:19 | 显示全部楼层

讲的很好,通俗易懂.

出0入0汤圆

发表于 2019-9-1 08:00:25 来自手机 | 显示全部楼层
通俗易懂,这个讲解真的很好。

出0入0汤圆

发表于 2019-9-1 16:33:47 来自手机 | 显示全部楼层
讲的真好

出0入0汤圆

发表于 2019-9-3 16:40:27 | 显示全部楼层
用简单的方法讲述复杂的问题,这是艺术

出0入0汤圆

发表于 2019-9-19 07:38:15 来自手机 | 显示全部楼层
通俗易懂,至少解释清楚这三个概念了,能对后续深入了解打下基础。

出0入0汤圆

发表于 2019-9-19 09:03:41 | 显示全部楼层
感谢分享!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 09:51

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表