tbkmcjl 发表于 2012-9-5 12:29:08

翻译了"老外博客PID"的一丁点前言内容

提醒:学习主要是靠自己,其他人只能帮助而不能代替你。
我翻译了前言这里,就是让大家看看这文章强大的地方,让你们决定要不要下狠心去钻研它。前言这里就是描述这文章主要解决了传统PID控制的哪些问题的。
不要推说“不懂英文”,网上有词霸神马的,不懂的人总能将大概意思搞出来,就看你有没有心罢了。如果英文里写的是获取27.8G视频地址的方法,不管英文
再差的人也会拼命理解,哈哈。

后续的内容我翻译了,但不会贴出来。因为翻译的过程也是一个学习、理解的过程,实在不想当“好人”而剥夺了别人的学习机会。翻译过程不但学习的是英文,
而且已经将文章理解了一次,这样翻译出来后再理解一次,问题就迎刃而解了。





  为了配合新Arduino PID库的发布,我决定发出这一系列的帖子。上次的库,

质量是强大鸟,但没有真的给出了任何的代码解释。这次的计划就是要详尽地解

释为啥这代码要这么写。我希望这个工作会让两类群体用户得益。

    那些直接对Arduino PID库内部运行方式有兴趣的人会得到详尽到脚趾头的解

释。

    任何正在写他们自己的PID算法的人可以看看我是怎么做事的,并且进行他们

喜欢的任何方式的借鉴。

    这将会是一个艰难的一击,不过我想我会找到一个不太痛苦的方式来解释我

的代码。我将会从“初学者的PID”开始。接着我将会逐步逐步地改善直到我们剩

下一个高效的、健全的PID算法。


初学者的PID
这是每一个人初学PID时的等式。

            xxxxxxxxxxxxxxxxxxxx
            xxxxxxxxxxxxxxxxxxxx

这引导着大概是每一个人都写出如下的PID控制器。


            xxxxxxxxxxxxxxxxxxxx
            xxxxxxxxxxxxxxxxxxxx
            xxxxxxxxxxxxxxxxxxxx
            xxxxxxxxxxxxxxxxxxxx
            xxxxxxxxxxxxxxxxxxxx

Compute()函数可以经常或不经常调用,而且工作起来不错。不过这系列的(帖子

)并不是为了“不错”。如果我们要将这个代码转换成跟工业PID控制器相似的应

用的东西的时候,我们将要说几个事情。

1、采样时间——PID算法函数最好是在一个定期的间隔下进行评估。如果算法已

经知道这间隔,我们也可以简化一些内部算术。

2、衍生冲击——不是最大的问题,不过很容易除掉,所以我们将要这样做。(译

者注:衍生冲击是指当设置点SP变化的时候,因衍生的误差而出现的不应该有的

控制效果,称为衍生冲击。因为设置点变化的过程中,PID算式一直是在执行的,

所以就会在变化过程中计算出了不应该有的PID输出控制效果,就会叠加到受控物

体上,影响控制精度)

3、运行中的整定变化——一个好的PID算法就是那种当整定参数可以被改变而不

会影响内部工作的。

4、重设震荡的减轻——我们将会了解什么是重设震荡,而且实施一个有额外好处

的解决方案。

5、开/关(自动/手动)——在大多数应用中,有时候需要关闭PID控制器并手动

控制输出,而没有控制器在干涉。

6、初始化——当控制器刚开动,我们想要一个“无碰撞的传递”,即我们不想输

出突然跳到一个新值。

7、控制方向——这么说,最后这一个并不是将鲁棒性的名字改变,它是设计去保

证用户输正确的、带有符号的整定参数。

    当我们弄完这些事项后,我们将有一个坚实的PID算法。而且,我们将凑巧拥

有一个在最新版本的Arduino PID库里正在使用的代码。所以,不管你要常识写你

自己的算法,或者是详细了解PID库,我希望这能帮助你。让我们开始吧。

更新:在所有的代码示范里我使用double型变量。在Arduino,单精度跟float(

单精度)是一样的。真正的精度用在PID上是杀鸡用牛刀了。如果你正在使用的语

言能有真正精度的话,我会建议你将所有的double变量转换为float。

vjcmain 发表于 2012-9-5 12:38:04

get it{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}

mage99 发表于 2012-9-5 12:42:29

受教~了

lisn3188 发表于 2012-9-5 12:57:43

请问楼主,原贴子在哪里?

lisn3188 发表于 2012-9-5 13:00:47

找到了。
http://www.amobbs.com/thread-4872799-1-1.html

McuPlayer 发表于 2012-9-5 16:03:09

PID的所谓位置式和增量式的,从控制算法上看,没有本质区别。
Out = Out + delta;
delta = P*E+I*ξE+D*de
如果看输出的Out值,就是位置式的,如果看delta就是增量式的。

实际应用中有又位置式和增量式,
有的执行有记忆特性,就是增量式的,如步进电机
有的执行机构,没有记忆性,就是位置式的,如加热

jz701209李 发表于 2012-9-7 11:14:21

强帖留名.....

xml2028 发表于 2012-9-7 11:21:59


受教~了,一直有兴趣,不过一直没有去好好静下心来搞过

3050311118 发表于 2012-9-8 10:13:20

谷歌翻译?

tbkmcjl 发表于 2012-9-8 11:52:55

3050311118 发表于 2012-9-8 10:13 static/image/common/back.gif
谷歌翻译?

一看就知道不是了......

mage99 发表于 2012-9-8 12:03:30

受教了,

liding 发表于 2012-11-8 11:37:06

{:smile:}留着以后有用

高鼻子 发表于 2012-11-8 22:28:32

谢谢楼主分享
页: [1]
查看完整版本: 翻译了"老外博客PID"的一丁点前言内容