PID控制器百科,PID控制实现

  PID控制器百科,PID控制实现

  我们讨论了经典的数字PID控制算法及其常用的改进和补偿算法,基本上涵盖了大部分无模型和简单模型的经典PID控制算法。接下来,我们将讨论智能PID控制,它不同于常规的智能控制。它是智能算法和PID控制算法的结合,是基于PID控制器的智能优化。

  在本章中,我们首先讨论专家PID算法。如前所述,专家PID算法是专家系统和PID算法的结合和应用优化,所以我们先简单了解一下专家控制。

  1、专家控制的基本思想

  专家控制是智能控制的一个分支,它将专家系统的理论和技术与控制理论、方法和技术相结合。在没有对象模型的情况下,它模仿领域专家的经验来控制被控对象。

  专家一般由知识库和推理机制组成。按照一定的策略,及时选择合适的规则进行推理输出,实现控制。其基本结构如下:

  从上图不难发现,专家控制器控制的准确性主要受知识库表达的准确性和推理机的正确性影响。知识库越完整、越准确,就越能准确识别你被控对象的状态。当然,推理机设计的不同也会影响控制结果。

  一般来说,专家控制器分为两种实现形式,称为直接专家控制器和间接专家控制器。所谓直接专家控制器,就是用专门设计的专家控制器直接控制被控对象的一种方法。控制器的任务和功能相对简单,一般实时在线运行,直接控制被控对象。其结构图如下:

  所谓间接专家控制器,是指由专家控制器作为其他控制器的辅助方式或相互结合的控制方式来实现的一种控制器。专家通过高层决策影响控制器的输出,决策可以是在线的,也可以是离线的,控制器不会直接控制被控对象。其结构图如下:

  所以我们要讨论的专家PID算法应该是直接专家控制器,因为专家系统决策和PID算法是结合在一起的,不存在独立于PID算法的专家控制器,而是专家决策直接决定PID算法机的输出,这和直接专家控制的定义是一致的。

  2.专家PID的设计思想

  专家控制是基于被控对象和控制规律的各种知识,不知道被控对象的精确模型,利用专家经验设计PID参数。这个过程如何实现?我们来分析推导一下这个算法。

  假设当前采样是第k个样本,当前偏差为e(k),前一个采样时刻的偏差为e(k-1),而前两个采样时刻的偏差为e(k-1),我们可以得到两个时刻的偏差增量如下:

  清楚了上面的公式,我们就设定一个偏差的最大值,命名为Mmax;设置一个偏差较大的中间值,记为Mmid;设置偏差的最小值,记为Mmin。根据以上偏差、偏差增量和偏差极值设置,我们分析如下:

  (1)如果e(k) Mmax

  这种情况说明偏差的绝对值已经很大了。无论偏差趋势如何,都要考虑控制器的输入应该是最大(或最小)输出,以达到快速调整偏差的效果,降低最大速度下偏差的绝对值。

  在这种情况下,它实际上相当于开环控制,是对极端偏差的快速反应。

  (2)如果e(k)Mmax

  在这种情况下,我们需要更系统的变化趋势来分析,针对具体情况实施不同的控制方法。我们引入偏差增量来帮助分析。

  (2.1)当e (k) * e (k) 0或e (k)=0时

  这种情况说明偏差向偏差绝对值增大的方向变化,或者说偏差是一个固定值。这时候就可以判断偏差的绝对值和偏差的中间值Mmid的关系了。

  (2.1.1)如果此时e(k) Mmid,则意味着偏差也大,因此可以认为控制器可以实现强控制功能以

  (2.1.2)此时,如果e(k)Mmid,说明偏差本身的绝对值不是很大,尽管偏差在增加。可以认为实现了控制器的一般控制功能,只需要扭转偏差的变化趋势,使其减小即可。

  (2.2)当e (k) * e (k) 0和e (k) * e (k-1) 0或e(k)=0时,说明偏差的绝对值已经向减小的方向变化或者已经达到平衡状态。此时,保持控制器的输出不变就足够了。即U(k)=U(k-1)。

  (2.3)当e (k) * e (k) 0,e (k) * e (k-1) 0时,偏差处于极限状态。此时,如果偏差的绝对值较大e(k) Mmid,则可以考虑更强的控制效果。

  此时,如果偏差的绝对值小e(k) Mmid,则可以认为控制效果弱。

  其中k1是增益放大系数,k1取大于1的值;K2是增益抑制系数,取大于0小于1的值。

  (3)如果e(k) Mmin

  这种情况其实说明偏差的绝对值很小,可能是系统的静态误差造成的。这时就需要引入积分函数,实施PID控制或者PI控制。

  并且可以适当降低Kp和Ki以降低控制效果。当偏差小到一定程度时,甚至可以引入死区的概念,使系统不需要调整就可以稳定下来。

  3.专家PID算法的实现

  我们学习了专家PID控制器的基本原理,分析了一种常见的专家PID控制规则。规则分析的过程实际上是一个基本的推理过程,所以我们得到了基本的规则库和相应的推理机。接下来,我们将实现这个算法。

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

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

  2 typedef结构

  3 {

  4浮动设定值;/*设定值*/

  5浮动KP;/*比例因子*/

  6 float ki/*积分系数*/

  7浮动KD;/*微分系数*/

  8 float lasterror/*先前节拍偏差*/

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

  10浮点结果;/*PID控制器结果*/

  11浮点输出;/*输出值,0-100,为百分比值*/

  最大12浮动;/*输出值上限*/

  13浮动最小值;/*输出值下限*/

  14浮点误差absmax;/*最大偏差绝对值*/

  15浮点误差ABS mid;/*绝对偏差的中值*/

  16浮点误差absmin;/*绝对偏差的最小值*/

  17 } EXPERTPID在上述分析的基础上,我们可以很容易地写出如下的专家PID控制器:

  1 void ExpertPID(EXPERTPID vPID,浮点pv)

  2 {

  3 float thiserror

  4浮点deltaerror

  5 float lastdeltaerror

  6浮点结果;//本次调整输出值

  七

  8 this error=vPID-setpoint-PV;

  9 delta error=this error-vPID-lasterror;

  10 last delta error=vPID-lasterror-vPID-preerror;

  11

  12 if(ABS(this error)=vPID-errorabsmax)

  13 {/*执行规则1*/

  14如果(thiserror 0)

  15 {

  16结果=vPID-最大值;

  17 }

  18

  19 if(thiserror 0)

  20 {

  21结果=vPID-最小值;

  22 }

  23 }

  24

  25 if((this error * delta error 0) (delta error==0))

  26 {/*执行规则2*/

  27

  28 if(ABS(this error)=vPID-error absmid)

  29 {

  30 result=vPID-result 2.0 *(vPID-KP * delta error vPID-ki * this error vPID-KD *(delta error-last delta error);

  31 }

  其他32个

  33 {

  34 result=vPID-result 0.4 *(vPID-KP * delta error vPID-ki * this error vPID-KD *(delta error-lastdetaerror);

  35 }

  36 }

  37

  38 if((this error * delta error 0)(delta error * last delta error 0)) (this error==0))

  39 {/*执行规则3*/

  40结果=vPID-结果;

  41 }

  四十二个

  43 if((this error * delta error 0)(delta error * last delta error 0))

  44 {/*执行规则4*/

  45 if(ABS(this error)=vPID-error absmid)

  46 {

  47结果=vPID-result 2.0 *输出vPID-KP * this error;

  48 }

  其他49个

  50 {

  51结果=vPID-结果0.6 *输出vPID-KP * this error;

  52 }

  53 }

  54

  55 if((ABS(this error)=vPID-error absmin)(ABS(this error)0))

  56 {/*执行规则5*/

  57结果=vPID-result 0.5 * vPID-KP * delta error 0.3 * vPID-ki * this error;

  58 }

  59

  60 /*对于输出限制,避免过冲*/

  61如果(结果=vPID-最大值)

  62 {

  63结果=vPID-最大值;

  64 }

  65

  66如果(结果=vPID-最小值)

  67 {

  68结果=vPID-最小值;

  69 }

  70

  71 vPID-result=结果;

  72 vPID-preerror=vPID-lasterror;

  73 vPID-lasterror=this error;

  74 vPID- output=(结果/(vPID-最大值-vPID-最小值))* 100;

  70} 4.专家PID总结

  在本节中,我们实现了一个专家PID控制器,这是一个直接的专家控制器,它直接将专家规则与PID算法结合起来。通过分析PID的调节过程,总结出五条规则,并基于这五条规则实现了上述算法。当然,这只是一个通用的规则库。对于不同的被控对象和控制要求,我们可以采用不同的判断规则,而每个参数的选取都依赖于专家的经验,因此规则可以以不同的方式获取和使用。

  欢迎关注:

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

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

郑重声明:本文由网友发布,不代表盛行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参数怎么调节
  • 留言与评论(共有 条评论)
       
    验证码: