试分析抗积分饱和PID对控制系统性能的影响以及其原因,抗积分饱和pid算法

  试分析抗积分饱和PID对控制系统性能的影响以及其原因,抗积分饱和pid算法

  引入积分功能,消除系统的静态误差,提高控制精度。但是,如果一个系统总是在一个方向上有一个均匀的偏差,那么它可能会无限积累,然后饱和,这将极大地影响系统性能。反积分饱和是解决这一问题的方法之一。在本节中,我们将针对积分饱和实施PID算法。

  1、反积分饱和的基本思想

  所谓积分饱和,是指系统在一个方向上出现偏差,PID控制器的输出由于积分的积累而扩大,导致控制器的输出增加超出正常范围,进入饱和区。当系统出现响应偏差时,需要先从饱和区退出,而不能快速响应反向偏差。

  为了解决积分饱和问题,引入了抗积分饱和的PID算法。所谓反积分饱和算法的思想是在计算U(k)时,确定最后时刻的控制量U(k-1)是否已经超出极限范围。如果U(k-1) Umax,只会累积负偏差;如果U(k-1) Umin,只会累加正偏差。从而避免控制量长时间停留在饱和区域。

  2.算法实现。

  积分反饱和的思想很简单。它解释了如何限制控制器输出的最大值和最小值附近的积分累积,以防止恢复期间无响应。根据前面的评分系统,我们可以得到如下流程图:

  (1)位置PID算法的实现

  位置PID的反积分饱和算法其实就是在基本PID的基础上增加反积分饱和运算,增加几个机前的极限值。首先,定义PID对象的结构:

  1 /*定义结构和公共机构*/

  2

  3 typedef结构

  四

  5 {

  六

  7浮动设定值;//设置值

  八

  9浮动比例增益;//比例系数

  10

  11浮点积分增益;//积分系数

  12

  13浮点导数增益;//微分系数

  14

  15浮点lasterror//前一节拍偏差

  16

  17浮点结果;//输出值

  18

  19浮点积分;//整数值

  20

  最大21浮动;//最大值

  22

  23浮动最小值;//最小值

  24

  25 } PID接下来,实施PID控制器:

  1 void PIDRegulation(PID *vPID,浮点处理值)

  2

  3 {

  四

  5 float thisError

  六

  7 this error=vPID-setpoint-process value;

  八

  9如果(vPID-结果vPID-最大值)

  10

  11 {

  12

  13如果(thisError=0)

  14

  15 {

  16

  17 vPID-integral=this error;

  18

  19 }

  20

  21 }

  22

  23 else if(vPID-结果vPID-最小值)

  24

  25 {

  26

  27如果(thisError=0)

  28

  29 {

  30

  31 vPID-integral=this error;

  32

  33 }

  34

  35 }

  36

  其他37个

  38

  39 {

  40

  41 vPID-integral=this error;

  四十二个

  43 }

  四十四

  45

  46

  47 vPID-result=vPID-proportion gain * this error vPID-integral gain * vPID-integral vPID-derivative gain *(this error-vPID-lasterror);

  48

  49 vPID-lasterror=this error;

  50

  1} (2)增量PID算法的实现

  增量式PID的反积分饱和的实现是一样的。在最基本的增量式PID算法中引入最大和最小限值,通过算法中限值的比较实现抗饱和操作。

  首先,定义PID对象的结构:

  1 /*定义结构和公共机构*/

  2

  3 typedef结构

  四

  5 {

  六

  7浮动设定值;//设置值

  八

  9浮动比例增益;//比例系数

  10

  11浮点积分增益;//积分系数

  12

  13浮点导数增益;//微分系数

  14

  15浮点lasterror//前一节拍偏差

  16

  17浮动预误差;//前两拍的偏差

  18

  19浮动死区;//死区

  20

  21浮点结果;//输出值

  22

  最大浮动23;//最大值

  24

  最小25浮动;//最小值

  26

  27 } PID接下来,实施PID控制器:

  1 void PIDRegulation(PID *vPID,浮点处理值)

  2

  3 {

  四

  5 float thisError

  六

  7浮动增量;

  八

  9 float pError,dError,iError

  10

  11

  12

  13 this error=vPID-setpoint-process value;//获取偏差值

  14

  15 pError=this error-vPID-lasterror;

  16

  17 I error=0;

  18

  19 dError=this error-2 *(vPID-lasterror)vPID-preerror;

  20

  21

  22

  23 if(vPID-结果vPID-最大值)

  24

  25 {

  26

  27如果(thisError=0)

  28

  29 {

  30

  31 iError=thisError

  32

  33 }

  34

  35 }

  36

  37 else if(vPID-结果vPID-最小值)

  38

  39 {

  40

  41如果(thisError=0)

  四十二个

  43 {

  四十四

  45 iError=thisError

  46

  47 }

  48

  49 }

  50

  51其他

  五十二个

  53 {

  54

  55 iError=thisError

  五十六岁

  57 }

  58

  59 increment=vPID-proportion gain * pError vPID-integral gain * iError vPID-derivative gain * der error;//增量计算

  60

  61 vPID-preerror=vPID-lasterror;//为下一次操作存储偏差。

  62

  63 vPID-lasterror=this error;

  64

  65 vPID-result=增量;

  66

  67 }3.摘要

  反积分饱和是为了防止由于长时间一个方向的偏差而导致对反方向偏差的滞后反应。本文的方法是,达到极值后,不再对一个方向的偏差做出反应,只对另一个方向的偏差做出反应。事实上,偏差可能会导致输出值超出限值,因此需要对输出值进行限制。

  欢迎关注:

  想更方便及时的阅读相关文章,请关注我的微信微信官方账号【木南创智】

  转载请联系作者取得转载授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • waitpid函数作用,c wait函数
  • waitpid函数作用,c wait函数,详解C语言中的wait()函数和waitpid()函数
  • ,,javascript SpiderMonkey中的函数序列化如何进行
  • spiderfoot安装,spiderfoot会被对手反扫描
  • PySpider,pyspider官方文档
  • C语言PID,pid控制算法的c语言实现
  • pid控制死区范围,带死区的pid控制方法有何优点
  • pid控制器中微分的作用,pid控制微分方程
  • 微分先行的pid控制算法课程设计,什么是微分先行pid控制
  • 设计pid控制器并设定参数,pid控制器参数设置
  • PID控制器百科,PID控制实现
  • PID控制算法原理,pid 控制算法
  • pid控制中积分控制指什么,数字pid控制器积分项的改进有哪些
  • pid控制器的调节原则,试说明pid控制器的优点
  • 通过进程名查找进程的pid,linux根据程序名查进程
  • 留言与评论(共有 条评论)
       
    验证码: