PID控制器开发笔记之一:PID算法原理及基本实现_第1页
PID控制器开发笔记之一:PID算法原理及基本实现_第2页
PID控制器开发笔记之一:PID算法原理及基本实现_第3页
PID控制器开发笔记之一:PID算法原理及基本实现_第4页
PID控制器开发笔记之一:PID算法原理及基本实现_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、在自动控制中,PID及其衍生出来的算法是应用最广的算法之一。各个做自动控制的厂家基本都有会实现这一经典算法。我们在做项目的过程中,也时常会遇到类似的需求,所以就想实现这一算法以适用于更多的应用场景。1、 PID算法基本原理PID算法是控制行业最经典、最简单、而又最能体现反馈控制思想的算法。对于一般的研发人员来说,设计和实现PID算法是完成自动控制系统的基本要求。这一算法虽然简单,但真正要实现好,却也需要下一定功夫。首先我们从PID算法最基本的原理开始分析和设计这一经典命题。PID算法的执行流程是非常简单的,即利用反馈来检测偏差信号,并通过偏差信号来控制被控量。而控制器本身就是比例、积分、微分三

2、个环节的加和。其功能框图如下:根据上图我们考虑在某个特定的时刻t,此时输入量为rin(t),输出量为rout(t),于是偏差就可计算为err(t)=rin(t)-rout(t)。于是PID的基本控制规律就可以表示为如下公式:其中Kp为比例带,TI为积分时间,TD为微分时间。PID控制的基本原理就是如此。2、 PID算法的离散化上一节简单介绍了PID算法的基本原理,但要在计算机上实现就必须将其离散化,接下来我们就说一说PID算法的离散化问题。在实现离散化之前,我们需要对比例、积分、微分的特性做一个简单的说明。比例就是用来对系统的偏差进行反应,所以只要存在偏差,比例就会起作用。积分主要是用来消除静

3、差,所谓静差就是指系统稳定后输入输出之间依然存在的差值,而积分就是通过偏差的累计来抵消系统的静差。而微分则是对偏差的变化趋势做出反应,根据偏差的变化趋势实现超前调节,提高反应速度。在实现离散前,我们假设系统采样周期为T。假设我们检查第K个采样周期,很显然系统进行第K次采样。此时的偏差可以表示为err(K)=rin(K)-rout(K),那么积分就可以表示为:err(K)+err(K+1)+,而微分就可以表示为:(err(K)- err(K-1)/T。于是我们可以将第K次采样时,PID算法的离散形式表示为:也可以记为:这就是所谓的位置型PID算法的离散描述公式。我们知道还有一个增量型PID算法,

4、那么接下来我们推到一下增量型PID算法的公式。上面的公式描述了第k个采样周期的结果,那么前一时刻也就是k-1个采样周期就不难表示为:那么我们再来说第K个采样周期的增量,很显然就是U(k)-U(k-1)。于是我们用第k个采样周期公式减去第k-1个采样周期的公式,就得到了增量型PID算法的表示公式:当然,增量型PID必须记得一点,就是在记住U(k)=U(k-1)+U(k)。3、 PID控制器的基本实现完成了离散化后,我们就可以来实现它了。已经用离散化的数据公式表示出来后,再进型计算机编程已经不是问题了。接下来我们就使用C语言分别针对位置型公式和增量型公式来具体实现。(1) 位置型PID的简单实现位

5、置型PID的实现就是以前面的位置型公式为基础。这一节我们只是完成最简单的实现,也就是将前面的离散位置型PID公式的计算机语言化。首先定义PID对象的结构体:/*定义结构体和公用体*/typedef struct float setpoint; /设定值 float proportiongain; /比例系数 float integralgain; /积分系数 float derivativegain; /微分系数 float lasterror; /前一拍偏差 float result; /输出值 float integral; /积分值PID;接下来实现PID控制器:void PIDRegu

6、lation(PID *vPID, float processValue) float thisError; thisError=vPID-setpoint-processValue; vPID-integral+=thisError; vPID-result=vPID-proportiongain*thisError+ vPID-integralgain*vPID-integral+ vPID-derivativegain*(thisError-vPID-lasterror); vPID-lasterror=thisError;这就实现了一个最简单的位置型PID控制器,当然没有考虑任何干扰条

7、件,仅仅只是对数学公式的计算机语言化。(2) 增量型PID的简单实现增量型PID的实现就是以前面的增量型公式为基础。这一节我们只是完成最简单的实现,也就是将前面的离散增量型PID公式的计算机语言化。首先定义PID对象的结构体:/*定义结构体和公用体*/typedef struct float setpoint; /设定值 float proportiongain; /比例系数 float integralgain; /积分系数 float derivativegain; /微分系数 float lasterror; /前一拍偏差 float preerror; /前两拍偏差 float dea

8、dband; /死区 float result; /输出值PID;接下来实现PID控制器:void PIDRegulation(PID *vPID, float processValue) float thisError; float increment; float pError,dError,iError; thisError=vPID-setpoint-processValue; /得到偏差值 pError=thisError-vPID-lasterror; iError=thisError; dError=thisError-2*(vPID-lasterror)+vPID-preerr

9、or; increment=vPID-proportiongain*pError+ vPID-integralgain*iError+ vPID-derivativegain*dError; /增量计算 vPID-preerror=vPID-lasterror; /存放偏差用于下次运算 vPID-lasterror=thisError; vPID-result+=increment;这就实现了一个最简单的增量型PID控制器,也没有考虑任何的干扰条件,仅仅只是对数学公式的计算机语言化。4、 基本特点前面讲述并且实现了PID控制器,包括位置型PID控制器和增量型PID控制器。界限来我们对这两种类型的控制器的特点作一个简单的描述。位置型PID控制器的基本特点:1. 位置型PID控制的输出与整个过去的状态有关,用到了偏差的累加值,容易产生累积偏差。2. 位置型PID适用于执行机构不带积分部件的对象。3. 位置型的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论