关于PID控制时,积分i导致的超调问题的讨论,自己做算法的来看看
PID算法其实很简单,假设目标值是tgt,现值是value,误差err = tgt- value;则控制量为比例、微分、积分三项和:
err = tgt- value;
interr += err;//误差的积分
ctl = kp*err + ki*interr + kd *(err-errlast);//p i d三项
errlast=err;//保存上次的误差值给kd用
很好理解吧?但是现在的遇到积分参数必然导致超调的问题,如下图:
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_640063T31IG8.JPG
(原文件名:未命名2.JPG)
在0到t1时间段,假设现值与目标值完全重合,PID的三项都为0。
在t1到t2时间段,假设外力使四轴有一偏离(抬头),则PID三项都开始增大,开始反向调节,到达顶端时微分项为0进而变为反向,使得反向调节不会太快(防止超调)
在t2到t3时间段,由于积分项interr不为零,必须继续增加,在低头部分持续一段时间后,才能让interr反向累加到0~~
也就是说,interr的积分必然要导致超调,例如风将四轴吹抬头2秒,则“必然”要低头一段时间才能将interr反0,(正反向的面积相等才行)这样是不是不利于控制?(当然对于不怕超调的系统,例如液压管应该没有这个问题)
是否应该在err为0的时候,将interr清零,以达到图中蓝色线的效果? 用增量法计算试试,积分分离,微分前馈等等 回复【1楼】cqfeiyu
用增量法计算试试,积分分离,微分前馈等等
-----------------------------------------------------------------------
汗,查了下,原来到达0附近就把interr清零,这个就叫做积分分离...
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_640116CUFNRN.JPG
(原文件名:未命名2.JPG)
终于把名字对上号了,呵呵 不过不对啊,我是要求不超调,应该是在<e内无积分,
这个积分分离算法是>e外无积分,正好相反嘛
http://wenku.baidu.com/view/5d979610f18583d0496459a4.html 可以考虑积分限制
如,调节输出的是±10V信号,把积分输出的效果限制在±1V <e积分可以减少误差比较大时,积分容易饱和,从而导致出现退饱和时出现过冲和振荡
误差比较小时,积分起到消除静差的作用
超调可以通过减小积分项系数或者增加微分项减弱 你这个其实没有考虑到当误差减小时,比例项同时也在减小的,积分项可以补偿这个减小的控制量,如果不积分,到达设定值时,输出就是0!!!!! 回复【6楼】fm007 一叶流水
你这个其实没有考虑到当误差减小时,比例项同时也在减小的,积分项可以补偿这个减小的控制量,如果不积分,到达设定值时,输出就是0!!!!!
-----------------------------------------------------------------------
也就是说Ki的结果必然会产生超调,大概懂了,也就是ki应该如此,不想超调的话只好别用它 PID我看了很多文章,没用啊;自己做东西时还不知所措。最近又要调PID,表示鸭梨很大 回复【8楼】lindabell 欧海
-----------------------------------------------------------------------
先调P ,再调D,效果就差不多了 要想无超调太难了感觉 回复【10楼】eaglelpx
-----------------------------------------------------------------------
没有I的时候很容易无超调嘛。。。把kp,kd降低点 回复【9楼】Ian11122840船儿舟
回复【8楼】lindabell 欧海
-----------------------------------------------------------------------
先调p ,再调d,效果就差不多了
-----------------------------------------------------------------------
说的容易做难,我很怀疑我上次给那个女生讲PID算法比我的老师讲的好;但是一直整不出来 回复【7楼】Ian11122840 船儿舟
-----------------------------------------------------------------------
但是没有KI的话是有静态误差的。就是你给定10V,但是输出的时候说不定到8V就平衡了。 回复【13楼】ahuang227
-----------------------------------------------------------------------
老大,我知道Ki是消除静态误差用的,感觉咋没听懂我的意思啊
我的意思是,在正向积分造成变量interr增加,必须要在反向达到同样的“面积”才能抵消,也就是图中“红线”与目标值围成的“面积”,
这样的话,抬头2秒意味着必须低头1秒,变量interr才能积分为0. 找了这么多PID算法的资料,还是楼主几句代码受用,受教了. 回复【15楼】autopass
找了这么多pid算法的资料,还是楼主几句代码受用,受教了.
-----------------------------------------------------------------------
有些东西其实都很简单,前两天在搞卡尔曼滤波,什么“线性化渐进”,“最优贝叶斯决策”,“特殊状态估计器”讲得人头晕
最后看代码,30多句就能实现,也不难 很怕看那些东西,动不动就一本书的,看的人头都晕,绕啊绕的最后出来也就几条公式。还是直接给几个公式,复杂点的给点推理过程,这样就好了! 求解个..
页:
[1]