PID控制器开发笔记之一:PID算法原理及基本实现.doc

PID控制器开发笔记之一:PID算法原理及基本实现.doc

ID:59158806

大小:79.52 KB

页数:5页

时间:2020-09-15

PID控制器开发笔记之一:PID算法原理及基本实现.doc_第1页
PID控制器开发笔记之一:PID算法原理及基本实现.doc_第2页
PID控制器开发笔记之一:PID算法原理及基本实现.doc_第3页
PID控制器开发笔记之一:PID算法原理及基本实现.doc_第4页
PID控制器开发笔记之一:PID算法原理及基本实现.doc_第5页
资源描述:

《PID控制器开发笔记之一:PID算法原理及基本实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

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算法的基本原理,但要在计算机上实现就必须将其离散化,接下来我们就说一说

3、PID算法的离散化问题。在实现离散化之前,我们需要对比例、积分、微分的特性做一个简单的说明。比例就是用来对系统的偏差进行反应,所以只要存在偏差,比例就会起作用。积分主要是用来消除静差,所谓静差就是指系统稳定后输入输出之间依然存在的差值,而积分就是通过偏差的累计来抵消系统的静差。而微分则是对偏差的变化趋势做出反应,根据偏差的变化趋势实现超前调节,提高反应速度。在实现离散前,我们假设系统采样周期为T。假设我们检查第K个采样周期,很显然系统进行第K次采样。此时的偏差可以表示为err(K)=rin(K)-rou

4、t(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个采样周期公式减

5、去第k-1个采样周期的公式,就得到了增量型PID算法的表示公式:当然,增量型PID必须记得一点,就是在记住U(k)=U(k-1)+∆U(k)。1、PID控制器的基本实现完成了离散化后,我们就可以来实现它了。已经用离散化的数据公式表示出来后,再进型计算机编程已经不是问题了。接下来我们就使用C语言分别针对位置型公式和增量型公式来具体实现。(1)位置型PID的简单实现位置型PID的实现就是以前面的位置型公式为基础。这一节我们只是完成最简单的实现,也就是将前面的离散位置型PID公式的计算机语言化。首先定义PID

6、对象的结构体:/*定义结构体和公用体*/typedefstruct{floatsetpoint;//设定值floatproportiongain;//比例系数floatintegralgain;//积分系数floatderivativegain;//微分系数floatlasterror;//前一拍偏差floatresult;//输出值floatintegral;//积分值}PID;接下来实现PID控制器:voidPIDRegulation(PID*vPID,floatprocessValue){floa

7、tthisError;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控制器,当然没有

8、考虑任何干扰条件,仅仅只是对数学公式的计算机语言化。(1)增量型PID的简单实现增量型PID的实现就是以前面的增量型公式为基础。这一节我们只是完成最简单的实现,也就是将前面的离散增量型PID公式的计算机语言化。首先定义PID对象的结构体:/*定义结构体和公用体*/typedefstruct{floatsetpoint;//设定值floatproportiongain;//比例系数floatintegralgain;//积分系数floatde

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。