1701077860
图16.1 祥子拉车的问题
1701077861
1701077862
听罢胖客人的要求,祥子琢磨了一下该怎么拉这个车。如果一味地追求速度,从头到尾使出同样的力道来拉这个车,那么到了前门大街尾这车准停不住,得冲过头,到时候这胖子不给车钱可就白忙活了。于是祥子想,我开始的时候用大一点力,加速快一点;到了接近街尾的时候我就减小力,让车自身的阻力来减速。用数学公式来表示,拉力F=Kp(1-x)。其中x表示某时刻黄包车的位置,Kp称为比例增益(Proportional Gain)。为了谨慎起见,我们替祥子求解了一下运动方程,得到了他的位置随时间的变化的曲线,如图16.2所示(获得图中所示曲线,Kp取为300,胖客人和黄包车的质量一起设定为1)。
1701077863
1701077864
1701077865
1701077866
1701077867
图16.2 仅有比例增益时,祥子的位置与时间的关系
1701077868
1701077869
从图中可见,尽管采取了这样的策略,祥子最终还是会拉过头,只好再往回拉。往回拉的时候还是采用同样的策略,则又会矫枉过正,如此反复,要好几次才能最终停在街尾。有没有什么更好的办法呢?实际上如果真让祥子拉的话,当他快靠近街尾(1位置)的时候,他不仅不会再使劲拉车,反而会身子稍向后仰,给车一个阻力,使得车子在到达街尾时速度减为零。如果用一个简化的数学模型来描述这个过程的话,拉力F=Kp(1-x)-KdV。其中Kd称为微分增益(Differential Gain),V为黄包车的速度。之所以Kd被称作微分增益是因为速度V可以看成是位置关于时间的微分,即V=dx/dt。如果Kp还是取为300,则Kd可以取一个比较小的值,比如30。这样一来,在离街尾比较远的时候,拉力中的第一项Kp(1-x)远大于第二项KdV,所以F是正的,这表示祥子在用很大的力气往前拉;而离街尾比较近,而且车速已经很大时,拉力中的第二项开始比第一项大,所以F是负的,这表示祥子开始身子稍向后仰,阻挡车子向前运动的趋势。我们求解此时的运动方程,画出位置与时间的关系如图16.3所示。你看,这是不是非常完美地达到了胖客人的要求呢!在很短的时间就到达了街尾,更可贵的是,到了那儿车就稳稳地停住了,没有如图16.2所示冲过头的现象。
1701077870
1701077871
1701077872
1701077873
1701077874
图16.3 加入微分增益时,祥子的位置与时间的关系
1701077875
1701077876
你刚刚看到的就是PID控制中的P和D,图16.2和图16.3展示的现象具有广泛的代表性。如果我们只有比例控制(即P),那么最终结果就是会出现过冲现象和围绕着设定值慢慢衰减的振荡,慢慢衰减是因为有地面的阻力。如果阻力大一点,过冲现象就会轻一些,这个振荡也会衰减得快一点;如果没有阻力,那么最终就会围绕设定值持续大幅振荡,祥子的黄包车也永远不可能刚好停在街尾了。而加入微分控制(即D),则有效抑制了过冲和振荡,如果设置得当,还能完全消除这两种现象。
1701077877
1701077878
有读者会问,那么PID中间的I(积分控制)干嘛用的呢?在前面说的例子中的确用不上,但是如果这个死胖子故意使坏,他在车后面与前门城楼上拴了一根巨大的橡皮筋,如图16.4所示。橡皮筋上的张力T=- kx。其中k是弹性系数,负号表示橡皮筋的张力指向左边。
1701077879
1701077880
1701077881
1701077882
1701077883
图16.4 胖子在使坏
1701077884
1701077885
祥子并不知情,但是可以想见,如果祥子还是按照F=Kp(1- x)- KdV的方式来拉这个车的话,他会遇到这么一个情况,那就是在接近街尾的时候,橡皮筋上的力越来越大,而他的拉力则越来越小,总有这么一处橡皮筋的张力与Kp(1- x)相等。过了这一点以后,黄包车所受的橡皮筋的张力就比祥子的拉力还要大,于是车子就会在这个地方附近徘徊,永远也到不了街尾了。解这个过程的运动方程,可得如图16.5所示曲线。
1701077886
1701077887
1701077888
1701077889
1701077890
图16.5 有橡皮筋拉住的黄包车永远也到不了街尾
1701077891
1701077892
1701077893
这个时候,祥子肯定会觉得不对劲,怎么总是到不了街尾呢?于是他在F=Kp ( 1-x )-KdV的基础上加了一项:,这最后一项的Ki就是积分增益(Integral Gain),是一个比Kp和Kd都要小得多的值。当黄包车由于橡皮筋的拖曳怎么也到不了指定位置的时候,(1—x)始终是正的,这一项通过时间的累积就会越来越大,终于祥子的拉力超过了橡皮筋,把车拉向前去。我们把这个运动过程画出图来,如图16.6所示。可以看出它和图16.3几乎一样,黄包车迅速地到达了街尾,并且稳定地停在了那儿。如果没有拴在车后的这根橡皮筋,而是街道有个坡度,街头低街尾高,那么也需要这个积分增益才能到达街尾,否则就只能到Kp(1-x)=mgsinθ的地方了(m是黄包车和乘客的总重量,θ是街道与水平面所形成的角度)。
1701077894
1701077895
1701077896
1701077897
1701077898
图16.6 加入积分增益以后问题解决了
1701077899
1701077900
我敢说,每一位黄包车夫都是PID控制的身体力行者,他们熟练地运用着这种控制方法,穿大街走小巷。其实,最早PID算法的提出就是研究人员通过观察船员控制轮船的方向提炼出来的。了解了它的基本原理,我们来看如何把它运用到实际制作中去吧!
1701077901
1701077902
动手实践
1701077903
1701077904
首先我们可以用非常简单的几个元件搭建一个蕴含着PID控制原理的上拉式磁悬浮,实物如图16.7所示。通过给一个手工绕的电磁铁通电,我们可以对图中的稀土磁铁产生强大的吸引力,以至于平衡其重力。图中的电磁铁是用直径0.255mm的漆包线(图中的红色细线)缠绕在一根一次性塑料注射器上做成的,我用的电磁铁电阻值大约为16Ω,具体数值并不是很重要。但是,注意不能使用铁制品做电磁铁的芯,因为那样稀土磁铁就会直接牢牢地吸附上去,无法通过电磁铁进行调节了。如果我们仅仅是把这个电磁铁接上一个可调电源,增大电流,让它对稀土磁铁产生吸引力平衡其重力,是不足以让稀土磁铁稳定悬浮在空中的(请参考第7章“逆磁悬浮”中的恩绍定律)。读过前面章节的朋友或许还记得,这种情况下稀土磁铁在竖直方向上不具有势能最低点,不能稳定悬浮。这时,我们就需要一个电路来调节电磁铁的强弱,使得当稀土磁铁偏离平衡位置试图奔向电磁铁时,电磁铁中的电流减少;当稀土磁铁偏离平衡位置试图下落时,电磁铁中的电流增加,从而维持一个动态的平衡。
1701077905
1701077906
1701077907
1701077908
1701077909
图16.7 上拉式磁悬浮实物图
[
上一页 ]
[ :1.70107786e+09 ]
[
下一页 ]