pid控制原理及编程方法 pid控制原理( 二 )


u=kp*error+ ki?∫ error
还是用上面的例子来说明 , 第一次的误差error是0.8,第二次的误差是0.4,至此 , 误差的积分(离散情况下积分其实就是做累加),∫error=0.8+0.4=1.2. 这个时候的控制量,除了比例的那一部分,还有一部分就是一个系数ki乘以这个积分项 。由于这个积分项会将前面若干次的误差进行累计,所以可以很好的消除稳态误差(假设在仅有比例项的情况下,系统卡在稳态误差了,即上例中的0.8 , 由于加入了积分项的存在,会让输入增大,从而使得水缸的水位可以大于0.8 , 渐渐到达目标的1.0.)这就是积分项的作用 。
微分控制算法
换一个另外的例子,考虑刹车情况 。平稳的驾驶车辆,当发现前面有红灯时,为了使得行车平稳,基本上提前几十米就放松油门并踩刹车了 。当车辆离停车线非常近的时候 , 则使劲踩刹车,使车辆停下来 。整个过程可以看做一个加入微分的控制策略 。
微分,说白了在离散情况下 , 就是error的差值,就是t时刻和t-1时刻error的差 , 即u=kd*(error(t)-error(t-1)),其中的kd是一个系数项 。可以看到,在刹车过程中 , 因为error是越来越小的,所以这个微分控制项一定是负数,在控制中加入一个负数项,他存在的作用就是为了防止汽车由于刹车不及时而闯过了线 。从常识上可以理解,越是靠近停车线,越是应该注意踩刹车 , 不能让车过线,所以这个微分项的作用,就可以理解为刹车 , 当车离停车线很近并且车速还很快时,这个微分项的绝对值(实际上是一个负数)就会很大,从而表示应该用力踩刹车才能让车停下来 。
切换到上面给水缸加水的例子 , 就是当发现水缸里的水快要接近1的时候,加入微分项,可以防止给水缸里的水加到超过1米的高度 , 说白了就是减少控制过程中的震荡 。
现在再回头看这个公式,就很清楚了

pid控制原理及编程方法 pid控制原理



括号内第一项是比例项 , 第二项是积分项,第三项是微分项 , 前面仅仅是一个系数 。很多情况下,仅仅需要在离散的时候使用,则控制可以化为

pid控制原理及编程方法 pid控制原理



每一项前面都有系数 , 这些系数都是需要实验中去尝试然后确定的,为了方便起见,将这些系数进行统一一下:

pid控制原理及编程方法 pid控制原理



这样看就清晰很多了,且比例,微分,积分每个项前面都有一个系数,且离散化的公式,很适合编程实现 。
讲到这里,PID的原理和方法就说完了,剩下的就是实践了 。在真正的工程实践中,最难的是如果确定三个项的系数 , 这就需要大量的实验以及经验来决定了 。通过不断的尝试和正确的思考,就能选取合适的系数,实现优良的控制器 。

推荐阅读