pid控制器中微分的作用,pid控制微分方程

  pid控制器中微分的作用,pid控制微分方程

  从PID控制的基本原理我们知道,微分信号的引入可以改善系统的动态特性,但是也存在一个问题,就是容易引入高频扰动,特别是偏差扰动突变时,就表现出微分项的不足。为了解决这个问题,人们引入了低通滤波来解决这个问题。

  1.不完全微分的基本思想

  微分项有引入高频干扰的风险,但如果在控制算法中加入低通滤波器,系统性能可以得到改善。一种方法是在PID算法中加入一阶低通滤波器。这就是所谓的不完全微分,其结构图如下:

  或者另一种形式:

  这里我们考虑第一种结构形式。在这种情况下,微分与一阶惯性环节相结合,微分部分的计算公式可以表示为:

  的值介于0和1之间,由滤波器常数和采样周期决定。据此我们对其进行增量,然后可以得到不完全微分的增量计算公式:

  或者表达为:

  两种表示是等价的,第二种表示更接近于我们完全微分PID算法的增量表示,很容易理解。而且更符合位置表示,所以我们选择第二种表示。

  2.算法实现。

  经过前面的分析和公式推导,我们实现不完全微分是相当容易的。为了便于理解,我们保持比例和积分为基本格式,只对微分部分使用不完全微分算法。

  (1)位置PID算法的实现

  位置PID的实现过程和前面一样,只是需要加上前面的Ud值。首先,定义PID对象的结构:

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

  2

  3 typedef结构

  四

  5 {

  六

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

  八

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

  10

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

  12

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

  14

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

  16

  17 float lastdev//前一拍的微分项值

  18

  19浮动阿尔法;//不完全微分系数

  20

  21浮点结果;//输出值

  22

  23浮点积分;//整数值

  24

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

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

  2

  3 {

  四

  5 float thisError

  六

  7 float thisDev

  八

  9 this error=vPID-setpoint-process value;

  10

  11 vPID-integral=this error;

  12

  13 this dev=vPID-derivative gain *(1-vPID-alpha)*(this error-vPID-lasterror)vPID-alpha * vPID-last dev;

  14

  15

  16

  17 vPID-result=vPID-proportion gain * this error vPID-integral gain * vPID-integral this dev;

  18

  19 vPID-lasterror=this error;

  20

  21 vPID-last dev=this dev;

  22

  20}这实现了具有最简单的不完全微分的基于位置的PID控制器。当然,它不考虑任何干扰条件,它只是数学公式的计算机语言。

  (2)增量式PID算法的实现

  增量不完全微分PID控制器的实现是基于前面的增量公式。首先,定义PID对象的结构:

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

  2

  3 typedef结构

  四

  5 {

  六

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

  八

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

  10

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

  12

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

  14

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

  16

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

  18

  19 float lastdeltadev//前一拍中的微分项增量

  20

  21浮动;//不完全微分系数

  22

  23浮动死区;//死区

  24

  25浮点结果;//输出值

  26

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

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

  2

  3 {

  四

  5 float thisError

  六

  7浮动增量;

  八

  9 float deltaDev

  10

  11 float pError,dError,iError

  12

  13

  14

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

  16

  17 pError=this error-vPID-lasterror;

  18

  19 iError=thisError

  20

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

  22

  23

  24

  25 delta dev=vPID-derivative gain *(1-vPID-alpha)* dError vPID-alpha * vPID-last delta dev;

  26

  27 increment=vPID-proportion gain * pError vPID-integral gain * iError delta dev;//增量计算

  28

  29

  30

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

  32

  33 vPID-lasterror=this error;

  34

  35 vPID-last delta dev=delta dev;

  36

  37 vPID-result=增量;

  38

  39}这实现了最简单的增量不完全微分PID控制器,它不考虑任何干扰条件。它只是数学公式的计算机语言。

  3.摘要

  不完全微分法在微分环节采用低通滤波,有效地改善了微分项的特性。其中的值是0到1之间的一个数。两个极限值,当0时,实际上是没有滤波的普通微分环节;取1时,没有微分效应。因此,的取值对不完全微分的效果至关重要,一般根据被控对象的特性来确定。

  欢迎关注:

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

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

郑重声明:本文由网友发布,不代表盛行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,linux根据程序名查进程
  • 串级控制系统pid怎么调,串级控制pid参数怎么调节
  • 留言与评论(共有 条评论)
       
    验证码: