Ian11122840 发表于 2011-5-16 09:05:05

关于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清零,以达到图中蓝色线的效果?

cqfeiyu 发表于 2011-5-16 09:15:51

用增量法计算试试,积分分离,微分前馈等等

Ian11122840 发表于 2011-5-16 10:44:31

回复【1楼】cqfeiyu
用增量法计算试试,积分分离,微分前馈等等
-----------------------------------------------------------------------

汗,查了下,原来到达0附近就把interr清零,这个就叫做积分分离...
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_640116CUFNRN.JPG
(原文件名:未命名2.JPG)


终于把名字对上号了,呵呵

Ian11122840 发表于 2011-5-16 10:49:54

不过不对啊,我是要求不超调,应该是在<e内无积分,

这个积分分离算法是>e外无积分,正好相反嘛


http://wenku.baidu.com/view/5d979610f18583d0496459a4.html

bamstone 发表于 2011-5-16 10:55:33

可以考虑积分限制

如,调节输出的是±10V信号,把积分输出的效果限制在±1V

fm007 发表于 2011-5-16 11:22:00

<e积分可以减少误差比较大时,积分容易饱和,从而导致出现退饱和时出现过冲和振荡
误差比较小时,积分起到消除静差的作用
超调可以通过减小积分项系数或者增加微分项减弱

fm007 发表于 2011-5-16 11:24:42

你这个其实没有考虑到当误差减小时,比例项同时也在减小的,积分项可以补偿这个减小的控制量,如果不积分,到达设定值时,输出就是0!!!!!

Ian11122840 发表于 2011-5-16 12:57:22

回复【6楼】fm007 一叶流水
你这个其实没有考虑到当误差减小时,比例项同时也在减小的,积分项可以补偿这个减小的控制量,如果不积分,到达设定值时,输出就是0!!!!!
-----------------------------------------------------------------------

也就是说Ki的结果必然会产生超调,大概懂了,也就是ki应该如此,不想超调的话只好别用它

lindabell 发表于 2011-5-16 13:10:36

PID我看了很多文章,没用啊;自己做东西时还不知所措。最近又要调PID,表示鸭梨很大

Ian11122840 发表于 2011-5-16 15:23:00

回复【8楼】lindabell 欧海
-----------------------------------------------------------------------

先调P ,再调D,效果就差不多了

eaglelpx 发表于 2011-5-16 16:35:47

要想无超调太难了感觉

Ian11122840 发表于 2011-5-16 16:53:43

回复【10楼】eaglelpx
-----------------------------------------------------------------------

没有I的时候很容易无超调嘛。。。把kp,kd降低点

lindabell 发表于 2011-5-16 16:55:56

回复【9楼】Ian11122840船儿舟
回复【8楼】lindabell 欧海
-----------------------------------------------------------------------
先调p ,再调d,效果就差不多了
-----------------------------------------------------------------------
说的容易做难,我很怀疑我上次给那个女生讲PID算法比我的老师讲的好;但是一直整不出来

ahuang227 发表于 2011-5-16 20:26:49

回复【7楼】Ian11122840 船儿舟
-----------------------------------------------------------------------

但是没有KI的话是有静态误差的。就是你给定10V,但是输出的时候说不定到8V就平衡了。

Ian11122840 发表于 2011-5-17 08:44:10

回复【13楼】ahuang227
-----------------------------------------------------------------------

老大,我知道Ki是消除静态误差用的,感觉咋没听懂我的意思啊

我的意思是,在正向积分造成变量interr增加,必须要在反向达到同样的“面积”才能抵消,也就是图中“红线”与目标值围成的“面积”,

这样的话,抬头2秒意味着必须低头1秒,变量interr才能积分为0.

autopass 发表于 2011-6-8 19:52:07

找了这么多PID算法的资料,还是楼主几句代码受用,受教了.

Ian11122840 发表于 2011-6-9 09:01:45

回复【15楼】autopass
找了这么多pid算法的资料,还是楼主几句代码受用,受教了.
-----------------------------------------------------------------------

有些东西其实都很简单,前两天在搞卡尔曼滤波,什么“线性化渐进”,“最优贝叶斯决策”,“特殊状态估计器”讲得人头晕

最后看代码,30多句就能实现,也不难

autopass 发表于 2011-6-9 20:52:14

很怕看那些东西,动不动就一本书的,看的人头都晕,绕啊绕的最后出来也就几条公式。还是直接给几个公式,复杂点的给点推理过程,这样就好了!

AlienHit 发表于 2011-7-4 15:59:03

求解个..
页: [1]
查看完整版本: 关于PID控制时,积分i导致的超调问题的讨论,自己做算法的来看看