获取更多好文章:

原来PID是在老王头和老司机的斗争中诞生的

30年前,老王头在国内某十八线小县城的水泥厂做锅炉工。由于水泥厂的环境比较差,工人们工作完都是满身的水泥灰尘,回家前都要在厂子里洗个澡。老王头就是负责烧澡堂子的洗澡水的。烧水的设备也很简单,来自俄罗斯的天然气经过手动阀进入锅炉燃烧室。手动阀开口越大,进入燃烧室的燃气越多,火越旺,水温上升也越快。开口越小,升温越慢。老王头虽然不是什么领导,但是厂子里的人都很尊敬他。和老王头聊天时都要敬上一根烟。为啥?后面你就知道了。厂子领导会赶在工人下班前先进去洗个澡,50-55度的水温最适合人们泡澡了。老王头技术娴熟,只需要看着温度计然后根据自己的经验调大或者调小手动阀的开口就可以保证输出的水温被 50-55度之间,领导甚是满意。·等领导走了,澡堂需要换上新水,工人们也该下班洗澡了。本来老王头要负责再烧一次水的,可是最近来了一个小学徒,老王头就让小学徒负责给工人们烧水,自己点跟烟躲到一个角落抽烟去了。小学徒没经验,一看温度计还没到50度,就直接把阀口开到最大,瞬间温度就到50度了,然后小学徒就赶紧减小阀口,不过火这玩意可不会立马熄灭,它还在燃烧,一会水温就到70度了。澡堂里的工人烫的汗毛都掉了,纷纷光着屁股跳出澡堂子向小学徒喊话。小学徒赶紧把手动阀全部关死,不一会水温就下去了,后来的工人在澡堂子冻得直哆嗦。这也是为啥工人都巴结老王头,希望他能亲自上阵。

老王头烧水的过程,就是一个反馈控制过程。老王头根据温度计反馈的水温经过自己的大脑(控制器)计算后,操作手动阀(驱动器)控制执行器(锅炉)从而达到控制水温的目的。

1996年,老王工作的第三十个年头,厂子里效益不好,领导为了提升工厂的管理水平从美国找来一个俄罗斯裔的美国人尼古拉斯·米诺斯基来做顾问。这个老外的办公室正对着公司锅炉房,每次“司机” (我对尼古拉斯·米诺斯基的简称)站在窗前思考问题时都正好看到老王头和小学徒蹲在墙角抽烟。司机很不高兴,他心想正好我正在酝酿裁员以节省开支。那就拿老王头和小学徒开刀吧。但是,炒掉老王头和小学徒谁来烧水呢?工人们不得起义了?别说,这斯基不亏是个老司机,他先是对老王烧水的过程做了详细的记录,比如温度到什么时候阀口开到多大等等。3个月后,老司机改造了澡堂子烧水系统,变成了自动系统,如图所示。

老司机主要做了如下变动:

  1. 安装电子温度测量装置。
  2. 通过在气阀上添加一个执行器(比如电磁阀)来实现气阀的自动化,从而实现电子驱动。
  3. 安装控制器(本例中为P控制器),并将其连接至电子温度测量和自动控制阀。

老司机牌P控制器有一个设定点(绿色数字),任何人都可以设置目标温度,只需要输入数字即可。控制器的输出设置控制阀的位置。测量的温度也被称为过程变量为控制器提供了急需的反馈。当控制器启动并运行时,老司机牌P控制器将实测的温度与其设定值进行比较,并计算两个信号之间的差值,也称为误差(E)。然后,根据误差和P控制器的调整常数,控制器计算适当的控制器输出,将控制阀打开到正确的位置,以将温度保持在设定点。如果温度上升到设定点以上,控制器将降低阀门位置,反之亦然。

老司机引入这套系统后很是嚣张,马上给厂长说开出老王头和小学徒。厂长念在老王头给厂里干了这么多年了,舍不得。就给老司机说,先观察一下你这设备行不行再开出他也不迟。这其实是厂长的缓兵之计。

果不其然,在试运行一段时间后,老王头就发现了老司机牌控制器的BUG。原来除了控制锅炉内水温外,厂子里的操作规范还规定了锅炉内的水位要求>50cm。老司机对水位的控制也进行了自动化改造,如图所示。

老王头发现,虽然设定了目标水位50cm,正常情况下老司机的破玩意也能稳定在50cm位置。当把出水管的阀门增大时,进水管也自动打开,开始进水。老王一生气,使劲拧出水管的阀门,让锅炉内的水快速下降后停止操作出水阀门。但是,他发现,虽然进水管也跟着增加了进水量,但是当进水量和出水量再次平衡的时候,水位已经下降到40cm,并且维持在40cm无法回到50cm的位置。这不满足厂子的规定啊!!!老王头终于露出笑容,嘴里面蹦出几个字“什么破垃圾玩意”。然后就去找厂长汇报去了。

老王头的工作暂时保住了,这回该老司机抓狂了。老司机在厂里刚刚建立的神一样的威信瞬间被摧毁,人们对他的自动控制系统开始怀疑。

老司机亲自去做了老王头的试验,发现还真有这么个BUG。他灰头土脸的回来后,拿出一张纸,开始分析原因。

我的P控制器是模仿老王头的大脑,把实测的温度或者水位与目标值做差,根据差值的正负决定阀开大还是关小,根据差值的大小乘以KC系数来决定阀动作的幅度或者位置。最后,我还加上了基值偏差,这也是模仿老王头在水温或者水位达到目标值后保留一定的输入,以保持水温和水位在规定值范围内。P控制器的计算如下:

我把P再加上Bias作为P控制器的输出:

感觉没问题啊?为什么会出现这种问题?一定是哪里没有考虑!!!

这老王头故意去放水,还把放水管开那么大后又不管了。那么大的放水量,肯定会导致误差增加,误差增加我的P控制器就会输出一个很大的值,这个值会导致进水管开口越来越大去追赶出水管的出水量。这是个算数题,我在小学四年级就算过了!!!当进水量再次和出水量相等时(老王头停止操作出水阀),液位不再下降,误差变为恒定的值,我的P控制器也输出恒定的数值保持进水管的进水量恒定,但是这个时候水位已经下降到40cm,我的控制器得到恒定的误差,所以它不再去增加输出量,这就导致水位无法回到50cm。如果画个图的话应该是这样的:

我的娘啊,这还真是个BUG!蓝色的线可能无法回到目标值,P控制存在稳态误差!不得不佩服老王头的试验精神!

怎么解决这个问题呢?老司机又开始分析。。。。

如果是老王头操作,他肯定是看到水位平衡在40cm的时候继续增加进水量。

这样行不行?

“出一个操作说明书,当出现这种问题时,让操作员手动改变控制器输出上的偏移量以消除偏移量。也就是将控制器置于手动模式,手动更改其输出,直到误差为零,然后将其重新置于自动控制。据说操作员手动“重置”控制器。”

但是!!!这不还是需要老王头一直盯着吗?还是达不到开除老王头的目的。

不行,继续找办法。。。。

不能手动调整,那怎么让控制器自动调整呢?此时误差恒定,控制器不再增加输出,我怎么让他继续增加输出呢?看来中学的知识已经无法解决问题了,看看我上大学的知识用不用的到?一想到大学,老司机就浑身疼!那真是不堪回首啊!大学挂了4科,差一点没拿到毕业证和学位证(挂5科就拿不到了,其实他会挂5科的,只是最后老师心软了,给他提了提分)。最可恶的就是微积分,补考了2次才勉强通过。那些难记的积分公式真是让人头疼,我就记住个常数的积分公式。不,等等。。。我记得常数的积分结果是常数乘以积分变量。如果积分变量是时间,那就是常数乘以时间。随着时间的增加,这个积分结果会不断增大。现在我的问题是误差是恒定值,使用P控制器输出变为恒定值,即使时间再长也无法增加输出量。那我再增加一个积分不就解决问题了吗?即使误差为恒定值,积分还是会其作用,让水位从40cm回到50cm。

老司机说干就干,他在原来的P控制器上增加了积分控制,得到了PI控制器:

这下子解决了P控制存在稳态误差的问题,如果画个图,PI控制的输入输出以及控制器的输出应该是这样的:

反馈值最终会和目标值一致。

就这样,PI控制上岗了。大家纷纷给PI控制器点赞。老王头又被冷落了,厂长最近对老王头的态度也变得冷了一些。老王头不服气,我一定要和这自动系统比一比。于是,老王头天天蹲在这PI控制系统前,来回拧出水阀开关,每次系统都能自动回到目标值。但是,老王头也不是吃干饭的,他发现当他急快速开出水管时,这个自动系统需要较长的时间才能回到目标值,这远远比老王头手动操作时慢啊。老王头心想:如果是我来操作,当出水量变换很急时,会更加激进的调整进水量,这样才能快速恢复到目标水位。也就是说你不能老看着实际水位和目标水位的差值,你也要观察这个差值变化的快慢情况,这才能更高效的控制水位。

老王头就此写了一份报告给厂长。厂长把事情说给了老司机。老司机心想急速变化不就是变化率吗?我把变化率也考虑进来不就更接近老王头的智慧大脑了吗?这时迟那时快,老司机立刻就更新了他的控制器,如下图:

顺便他又对P控制器PI控制器和PID控制器在急速变化情况下的反应情况做了个测试,结果如下:

结果稍好了一些。至此,在老王头和老司机的斗智斗勇中,PID控制器介绍完了。

原来PID是在老王头和老斯基的斗争中诞生的相关推荐

  1. 狗蛋(驱动小白)和老王(硬件老司机)关于硬件那点事儿的一次密谈

    引子 "老王,有个bug啊,很紧急啊?" QA急忙反馈到. "什么问题? 老王心里咯噔了下,心想,NND,被QA缠住,看来今晚又得和我的躺椅相依为伴了." &q ...

  2. 用佛系的心老王软件Android,老王佛系2.2.19蓝奏云苹果最新版

    老王佛系2.2.19蓝奏云苹果最新版是一款有着超多漫画阅读资源的手机追番软件,这里收录了所有的最新人气漫画,除了国产的优质漫画以外,还包含了美漫.韩漫.日漫等等优秀的漫画资源,不论哪个地区的漫画都是可 ...

  3. Java 的锁-老王女儿的爱情

    对象锁: new一个对象,都会给这个实例创建一把锁,对象中的方法必须在实例创建后,通过调用方法获取锁,一个线程进去这个方法之前拿到对象的锁,才能调用方法,否则被阻塞,举个例子,老王有个如花似玉的女儿, ...

  4. 老王python培训全套教程

    京广源莹都科贸有限公司 北京加动能培训学校 北京加动能培训学校是一家拥有自主知识产权的中小学培训机构. 前台 任职要求: 1.女性,形象气质佳. 2.有相关前台工作经验者优先录取. 3.有良好的沟通能 ...

  5. 一个老王开枪案例带你一步一步领略程序开发的魅力

    一.前言 我身边的很多同学都认为学计算机专业的人,代码写的好很正常,认为自己不是学计算机专业的,不会写代码很正常,或者这么说,觉得会写代码是一种天赋.其实不然,我们现在必须要清楚当代社会的局势,当代社 ...

  6. java 的23种设计模式 之单身狗和隔壁老王的故事

    2019独角兽企业重金招聘Python工程师标准>>> 觉得代码写的别扭了,回头翻翻java 的23种设计模式. today,额,这么晚了,困了.就弄个最简单的单例模式吧. 单例模式 ...

  7. java 从入门到单身狗_java 的23种设计模式 之单身狗和隔壁老王的故事

    觉得代码写的别扭了,回头翻翻java 的23种设计模式. today,额,这么晚了,困了.就弄个最简单的单例模式吧. 单例模式:俗称单身狗 package singleton; public clas ...

  8. 我做了开颅实验:从胼胝体切开术和额叶前部脑白质切断术聊一聊大分子编码说和老王谬论

    感谢大家对老王的脑洞谬论<人类记忆系统之谜,也许就是这么回事儿>下文简称"老王谬论"的关注和讨论,也感谢CSDN对此文的大力推荐,短短几天就有了数万的点击量.在[老王的 ...

  9. 老王开店和支付路由管理

    老王开店和支付路由管理(王晓憨) 在上大学学金融的第一堂课上,老师说"金融是什么?金融就是放在冰箱里的一块肉,从冰箱拿出来,再放回去,你没做什么,但是手上已经沾满了油."后来阅历再 ...

最新文章

  1. 深入理解padding_idx(nn.Embedding、nn.Embedding.from_pretrained)
  2. 借势春晚 百度内容生态“后来居上”
  3. 《Android应用开发入门经典(第3版)》——导读
  4. Enumeration接口
  5. android digest 认证,探究 Android 签名机制和原理
  6. 【树莓派】如何设置树莓派 VNC 的分辨率
  7. django 1.8 官方文档翻译:9-2 本地特色附加功能
  8. pta 是否完全二叉搜索树_23.二叉搜索树的后序遍历序列
  9. 使用EqualsBuilder和HashCodeBuilder生成hashcode和equal方法
  10. 做自由职业者是怎样的体验
  11. 功能最强大的编辑器——vi
  12. Word转为PDF,并在线预览。
  13. 周鸿祎的“花房上市”执念
  14. 【华为OJ】【042-矩阵乘法】
  15. SprintBoot:Post请求的参数多一个逗号的解决方法
  16. 中俄蒙三国六方签订白鹤研究与保护合作备忘录
  17. 开店经验|如何开一家精品咖啡馆
  18. 计算机基本办公用法哪里学,使用电脑办公必须学会的七大办公技巧!
  19. FPGA开发——图像处理(包括MT9V034等摄像头学习笔记)
  20. 黑人是晒黑的吗_Indibiome是新的黑人

热门文章

  1. MFC/C++调用易语言的整数型+文本型与VS2010互动
  2. 算法学习:图的深度优先遍历(DFS)
  3. code online-线上码-随时随地在线写代码,支持主流语言 go lua luajit php perl python ruby woo dotnet
  4. CSU2104: Extra Judicial Operation-Tarjan边双联通分量缩点两种方法-难受的bug
  5. 快来直播:仓库是时候实施物联网了吗
  6. CookieSession会话技术
  7. 内江求是中学计算机应用有哪些,内江市求是职业技术学校(内江市求是中学)官网/招生网2020网址...
  8. IAR集成开发环境---ewdewpeww文件介绍
  9. 「镁客·请讲」易瞳科技梁剑泓艾韬:未来MR会把VR和AR融合在一起
  10. .h文件和.cpp文件组织结构