PID控制算法原理,pid 控制算法

  PID控制算法原理,pid 控制算法

  在自动控制中,PID及其衍生算法是应用最广泛的算法之一。所有做自动控制的厂商基本都有能力实现这个经典算法。在做项目的过程中,我们经常会遇到类似的需求,所以我们想实现这个算法来应用到更多的应用场景。

  1、PID算法的基本原理

  PID算法是控制行业中最经典、最简单的算法,最能体现反馈控制的思想。对于一般R&D人员来说,PID算法的设计和实现是完成自动控制系统的基本要求。这个算法虽然简单,但是要想很好的实现还是要下一番功夫的。首先,我们从PID算法最基本的原理开始分析和设计这个经典命题。

  PID算法的实现过程很简单,就是通过反馈检测偏差信号,由偏差信号控制被控量。控制器本身就是比例、积分、微分三个环节的总和。其功能框图如下:

  根据上图,我们考虑在某一时刻T,输入量为rin(t),输出量为rout(t),那么偏差可以计算为err(t)=rin(t)-rout(t)。那么PID的基本控制规律可以表示为下面的公式:

  其中Kp是比例带,TI是积分时间,TD是微分时间。这是PID控制的基本原理。

  2.PID算法的离散化

  最后一节简要介绍了PID算法的基本原理,但如果要在计算机上实现,就必须对其进行离散化。接下来说一下PID算法的离散化。在实现离散化之前,我们需要对比例、积分、微分的特性做一个简单的说明。

  比例是用来对系统的偏差做出反应的,所以只要有偏差,比例就会起作用。积分主要用于消除静态误差,静态误差是指系统稳定后输入输出的差值,积分是通过偏差的积累来抵消系统的静态误差。而微分是对偏差的变化趋势做出反应,根据偏差的变化趋势实现提前调整,提高反应速度。

  在实现离散化之前,我们假设系统的采样周期为t,假设我们检查第k个采样周期,很明显系统进行的是第k个采样。此时的偏差可以表示为err(K)=rin(K)-rout(K),那么积分可以表示为:err(k)err(k-1),微分可以表示为:(err(K)- err(K-1))/T.因此,我们可以将第k次采样时PID算法的离线形式表示为:

  也可以记录为:

  这就是所谓位置PID算法的离散描述公式。我们知道还有一种增量式PID算法,那么我们来推一下增量式PID算法的公式。上述公式描述了第k个采样周期的结果,因此前一时刻,即第k-1个采样周期,可以很容易地表示为:

  然后再来说第k个采样周期的增量,显然是U(k)-U(k-1)。所以我们从第k个采样周期的公式中减去第k个采样周期的公式,得到增量式PID算法的表达式:

  当然增量PID一定要记住U (k)=U (k-1) U (k)。

  3.PID控制器的基本实现

  离散化完成后,就可以实现了。用离散数据公式表示后,可重入计算机编程不再是问题。接下来我们用C语言分别实现位置公式和增量公式。

  (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 } PID

  接下来,实施PID控制器:

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

  2

  3 {

  四

  5 float thisError

  六

  7 this error=vPID-setpoint-process value;

  八

  9 vPID-integral=this error;

  10

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

  12

  13 vPID-lasterror=this error;

  14

  15 }

  这样实现了最简单的位置PID控制器,当然不考虑任何干扰条件,而只是数学公式的计算机语言。

  (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 } PID接下来,实施PID控制器:

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

  {

  float thisError

  浮动增量;

  float pError,dError,iError

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

  pError=this error-vPID-lasterror;

  iError=thisError

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

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

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

  vPID-lasterror=this error;

  vPID-result=增量;

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

  4.基本特征

  描述并实现了PID控制器,包括位置PID控制器和增量PID控制器。下面简单描述一下这两类控制器的特点。

  位置PID控制器的基本特性:

  位置PID控制的输出与整个过去状态有关,使用偏差的累积值,容易产生累积偏差。类型位置PID适用于带有不带整体部件的执行器的对象。位置的输出直接对应对象的输出,对系统的影响很大。增量式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参数怎么调节
  • 留言与评论(共有 条评论)
       
    验证码: