打印

关于PID的算法的几点疑问,周围实在没人可以请教,故向各

[复制链接]
2617|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
loveme1949|  楼主 | 2013-3-12 21:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
pid, TI, TPU, ST, RS
关于PID算法中的比例、积分、微分相互补充和制约的关系一直没搞清楚,
我的疑问先从单独的问起吧:
1,比例积分有残差?
摘抄网上一段关于比例控制的残差的描述
Output[下次]=P*(Destination-Output[本次])
这样的系统可以满足相当部分的控制要求了,但是有什么不足之处么?从直观上看,似 乎发现不了,应用上述方法,几乎可以保证把图片摆到墙的基本中间位置。但是仔细分 析上面的公式就会发现问题——永远也不可能100%达到指定位置。 因为一旦 Output和 Destination相等,也就是误差为0的时候,公式左侧就等于0,也就是说, 下次的输出是0。但是目标位置Destination不是0,于是下下次就会产生新的误差, 大小为Destination, 于是就会有下下次的新调整……这个过程反复下去。 直到达到某种平衡,
这时 Output=Destination*P/(1+P)
看了之后觉得明显有错误:式中左边的Output是指输出的增加量,右边的Output显然是本次的输出量,因此,一旦本次达到目标值,右边就等于零,下次输出增量就为0,那么输出量就一直与目标量相等,也就是一直精确的稳定下去。所以比例控制的残差到底是如何而来的?

2,积分控制中对误差积分,下面引用一段本论坛网友的程序,出处:https://bbs.21ic.com/forum.php?mod=viewthread&tid=189462
  积分:
                Vnew = GetV();            //获得当前速度
    ErrorSum += (aim - Vnew);      //每一次的误差累计起来
    if(ErrorSum > iMax)ErrorSum = iMax;
    else if(ErrorSum < iMin)ErrorSum = iMin;
    iTerm = ErrorSum *iconst;     //误差和乘上积分常量
    Motor(iTerm);    //让电机根据得出的值工作


暂时不讨论防止积分饱和的功能,对于积分过程,是不是可以这么理解,比如在设定指下方积累的误差,只能通过在设定值上方的震荡来消除,然后由于反馈时间的关系,又会对积累一些误差,然后又要通过下方的震荡来消除,就这样一直震荡下去然后趋于稳态?


谢谢各位指点,一个人钻研真是很寂寞:'(

相关帖子

沙发
在路上的旁观者| | 2013-6-13 20:08 | 只看该作者
看看

使用特权

评论回复
板凳
highgear| | 2013-6-13 22:04 | 只看该作者
如果仅有比例控制, 则会有残差(静差)。静差 Error = Destination-Output, 如果静差为 0 ,输出为0, 因为
      Output[下次]= P*(Destination-Output[本次])  = P* Error.
"那么输出量就一直与目标量相等" 这一论断就是错误的。

比例控制的稳定状态, 输出是
     Output=Destination*P/(1+P)
从公式中可以看出, output 不等于Destination, 因为 P 不可能是无穷大,而且 Output 是一个稳定值,如果实际测量值Destination是一个稳定值

积分控制中对误差积分
积分器的作用在于最终使得Destination = Output, 只要有 Error 存在,那么积分器就会不断的增加或加少, 直至 Destination = Output。

“然后又要通过下方的震荡来消除”, 此论断不妥。震荡是由系统特性造成,当系统震荡时,会某一时刻产生较大的误差,导致一个较大的输出(此时比例在起作用),如果闭环系统是稳定的,那么这个输出会让Destination稳定下来,Destination越趋近Output, 比例控制的作用越小,最终积分器的输出等于Destination,比例控制部分的输出为0, 系统进入稳态。

使用特权

评论回复
地板
lixianghua0428| | 2013-6-15 23:00 | 只看该作者
红色字中说的是位置式PID,而你的理解是增量式的PID,LZ可查阅两者的区别

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

49

帖子

0

粉丝