求助,关于PID积分分离问题 点击:1581 | 回复:4



CTB

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 90回
  • 年度积分:0
  • 历史总积分:379
  • 注册:2003年2月26日
发表于:2010-07-20 11:57:42
楼主

在做一个PID程序,一直不理解PID的积分分离怎么实现的,

在资料里当输入反馈差值ek大于一个门限值时不进行积分,只运行PD。但是这时只有PD而没有积分输出值等于ek*P输出值如何能够到达上限。而只有ek小于门限值时速度才可能继续上升达到上限。一直困惑中。请高手指点




glenxu

  • 精华:0帖
  • 求助:2帖
  • 帖子:28帖 | 592回
  • 年度积分:0
  • 历史总积分:1862
  • 注册:2004年1月13日
发表于:2010-07-20 13:07:32
1楼

没理解你的问题。

就按理论规定做有问题吗,不需要你的理解。做好了试试就明白了。

波恩

  • 精华:3帖
  • 求助:0帖
  • 帖子:10帖 | 2797回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2008年12月10日
发表于:2010-07-20 13:13:31
2楼

如果先不考虑D,单纯的P调节结果会有静差,接近静差带前分离积分,避免调节器在大误差段就过早进入积分饱和,接近静差带时,积分生效,消除静差。积分分离的结果,既可消除静差,又可避免深度饱和,有利于系统加速积分退饱和过程,及早回归线性可控状态。毕竟饱和态下,系统事实上是开环运行的。

 

另,单纯的P也有可能令输出饱和。

CTB

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 90回
  • 年度积分:0
  • 历史总积分:379
  • 注册:2003年2月26日
发表于:2010-07-21 09:49:36
3楼

我要实现的是在压差较大时系统也需要进入饱和状态。

感谢波恩大哥的支持,您推荐的资料已找到,研究中。

benbenbull

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 10回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2010年8月29日
发表于:2010-09-02 22:33:59
4楼
很简单,当误差大时,不计入积分项,并将积分初值清零。
if(abs(error)>TOL)
  integ = 0;
else
  integ += error;
control_out = kp*(error + kd* (error - last_error) + ki * integ);
act_control_out = Limit(control_out); //进行限幅
DACOutput(act_control_out);
last_error = error;

热门招聘
相关主题

官方公众号

智造工程师