关于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); //让电机根据得出的值工作
暂时不讨论防止积分饱和的功能,对于积分过程,是不是可以这么理解,比如在设定指下方积累的误差,只能通过在设定值上方的震荡来消除,然后由于反馈时间的关系,又会对积累一些误差,然后又要通过下方的震荡来消除,就这样一直震荡下去然后趋于稳态?
谢谢各位指点,一个人钻研真是很寂寞:'(
|