PID控制算法程序.docx

上传人:b****7 文档编号:26213576 上传时间:2023-06-17 格式:DOCX 页数:17 大小:298.30KB
下载 相关 举报
PID控制算法程序.docx_第1页
第1页 / 共17页
PID控制算法程序.docx_第2页
第2页 / 共17页
PID控制算法程序.docx_第3页
第3页 / 共17页
PID控制算法程序.docx_第4页
第4页 / 共17页
PID控制算法程序.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

PID控制算法程序.docx

《PID控制算法程序.docx》由会员分享,可在线阅读,更多相关《PID控制算法程序.docx(17页珍藏版)》请在冰豆网上搜索。

PID控制算法程序.docx

PID控制算法程序

 

3.2.4相关程序………………………………………………………10

 

第1章绪论

1.1PID简介

PID(比例积分微分)是一个数学物理术语。

PID控制器的参数整定是控制系统设计的核心容。

它是根据被控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小。

PID控制器参数整定的方法很多,概括起来有两大类:

一是理论计算整定法。

它主要是依据系统的数学模型,经过理论计算确定控制器参数。

这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。

二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。

PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。

三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。

但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。

现在一般采用的是临界比例法。

利用该方法进行PID控制器参数的整定步骤如下:

(1)首先预选择一个足够短的采样周期让系统工作;

(2)仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大系数和临界振荡周期;(3)在一定的控制度下通过公式计算得到PID控制器的参数。

PID控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。

当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。

即当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。

PID控制,实际中也有PI和PD控制。

PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。

PID(比例-积分-微分)控制器作为最早实用化的控制器已有50多年历史,现在仍是应用最广泛的工业控制器。

PID控制器简单易懂,使用中不需精确的系统模型等先决条件,因而成为应用最为广泛的控制器。

PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成。

其输入e(t)与输出u(t)的关系为u(t)=kp(e((t)+1/TI∫e(t)dt+TD*de(t)/dt)式中积分的上下限分别是0和t因此它的传递函数为:

G(s)=U(s)/E(s)=kp(1+1/(TI*s)+TD*s)其中kp为比例系数;TI为积分时间常数;TD为微分时间常数。

PID控制器的方块图

PID控制器是一个在工业控制应用中常见的反馈回路部件。

这个控制器把收集到的数据和一个参考值进行比较,然后把这个差别用于计算新的输入值,这个新的输入值的目的是可以让系统的数据达到或者保持在参考值。

和其他简单的控制运算不同,PID控制器可以根据历史数据和差别的出现率来调整输入值,这样可以使系统更加准确,更加稳定。

可以通过数学的方法证明,在其他控制方法导致系统有稳定误差或过程反复的情况下,一个PID反馈回路却可以保持系统的稳定。

1.2反馈回路基础

PID回路是要自动实现一个有量具和控制旋钮的操作人员的工作。

这个操作人员会用量具测系统输出的结果,然后用控制旋钮来调整这个系统的输入,直到系统的输出在量具上显示稳定的需求的结果。

在旧的控制文档里,这个过程叫做“复位”行为。

量具被成为“测量”。

需要的结果被成为“定值”。

定值和测量之间的差别被成为“误差”。

一个控制回路包括三个部分:

(1)系统的传感器得到的测量结果;

(2)控制器作出决定;(3)通过一个输出设备作出反应。

控制器从传感器得到测量结果,然后用需求结果减去测量结果来得到误差。

然后用误差来计算出一个对系统的纠正值来作为输入结果,这样系统就可以从它的输出结果中消除误差。

在一个PID回路中,这个纠正值有三种算法,消除目前的误差,平均过去的误差,和透过误差的改变来预测将来的误差。

比如说,假如一个水箱在为一个植物提供水,这个水箱的水需要保持在一定的高度。

一个传感器就会用来检查水箱里水的高度,这样就得到了测量结果。

控制器会有一个固定的用户输入值来表示水箱需要的水面高度,假设这个值是保持65%的水量。

控制器的输出设备会连在一个马达控制的水阀门上。

打开阀门就会给水箱注水,关上阀门就会让水箱里的水量下降。

这个阀门的控制信号就是我们控制的变量,它也是这个系统的输入来保持这个水箱水量的固定。

PID控制器可以用来控制任何可以被测量的并且可以被控制变量。

比如,它可以用来控制温度,压强,流量,化学成分,速度等等。

汽车上的巡航定速功能就是一个例子。

一些控制系统把数个PID控制器串联起来,或是链成网络。

这样的话,一个主控制器可能会为其他控制输出结果。

一个常见的例子是马达的控制。

我们会常常需要马达有一个控制的速度并且停在一个确定的位置。

这样呢,一个子控制器来管理速度,但是这个子控制器的速度是由控制马达位置的主控制器来管理的。

连合和串联控制在化学过程控制系统中是很常见的。

1.3理论

PID是以它的三种纠正算法而命名的。

这三种算法都是用加法调整被控制的数值。

而实际上这些加法运算大部分变成了减法运算因为被加数总是负值。

这三种算法是:

(1)比例-来控制当前,误差值和一个负常数P(表示比例)相乘,然后和预定的值相加。

P只是在控制器的输出和系统的误差成比例的时候成立。

比如说,一个电热器的控制器的比例尺围是10°C,它的预定值是20°C。

那么它在10°C的时候会输出100%,在15°C的时候会输出50%,在19°C的时候输出10%,注意在误差是0的时候,控制器的输出也是0。

(2)积分-来控制过去,误差值是过去一段时间的误差和,然后乘以一个负常数I,然后和预定值相加。

I从过去的平均误差值来找到系统的输出结果和预定值的平均误差。

一个简单的比例系统会振荡,会在预定值的附近来回变化,因为系统无法消除多余的纠正。

通过加上一个负的平均误差比例值,平均的系统误差值就会总是减少。

所以,最终这个PID回路系统会在预定值定下来。

(3)微分-来控制将来,计算误差的一阶导,并和一个负常数D相乘,最后和预定值相加。

这个导数的控制会对系统的改变作出反应。

导数的结果越大,那么控制系统就对输出结果作出更快速的反应。

这个D参数也是PID被成为可预测的控制器的原因。

D参数对减少控制器短期的改变很有帮助。

一些实际中的速度缓慢的系统可以不需要D参数。

用更专业的话来讲,一个PID控制器可以被称作一个在频域系统的滤波器。

这一点在计算它是否会最终达到稳定结果时很有用。

如果数值挑选不当,控制系统的输入值会反复振荡,这导致系统可能永远无法达到预设值。

第2章设计原理

基本的设计核心是运用PID调节器,从而实现直流电机的在带动负载的情况下也能稳定的运行。

运用A/D转换芯片将滑动变阻器的模拟电压转换为数字量作为控制直流电机速度的给定值;用压控振荡器模拟直流电机的运行(电压高-转速高-脉冲多),单片机在单位时间对脉冲计数作为电机速度的检测值;应用数字PID模型作单片机控制编程,其中P、I、D参数可按键输入并用LED数码显示;单片机PWM调宽输出作为输出值,开关驱动、电子滤波控制模拟电机(压控振荡器)实现对直流电机的PID调压调速功能。

基于以上的核心思想,我们把这次设计看成五个环节组成,其具体的原理如下见原理图

PID调速设计原理图

如图可以知道,这是一个闭环系统,我们借助单片机来控制,我们现运用AD芯片,运用单片机来控制AD芯片来转换模拟电压到数字电压,AD给定的电压越大,则产生的数字量越大,单片机再控制这个数字量来产生一个PWM,PWM占空比越大,就驱动晶体管导通的时间越长,这样加到压频转换器的电压也就越大,电压越大,则压频转换器输出的计数脉冲再单位时间也就越多,这样就相当于电机的电压越大,其转速也就会越快,我们再用单片机对压频转换器的输出脉冲计数,PID调节器就把这个计数脉冲和预先设定的值进行比较,比设定值小,这样就会得到一个偏差,再把这个偏差加到AD的给定电压,这样就相当于加大了PWM的占空比,要是比设定值大,这样也会得到一个偏差,就把这个变差与给定的电压向减,这样就可以减少PWM的占空比,通过改变占空比来改变晶体管的导通时间,就可以改变压频转换器的输入电压,也就改变压频转换器的单位计数脉冲,达到调电动机速度的目的。

第3章设计方案

3.1PWM的调制

AD芯片给定一定的电压,应用单片机来控制来产生一个PWM,给定的电压不同,就会的得到不同的PWM波形。

在产生PWM波形我们采用ADC0808芯片和AT89C51两个核心器件。

ADC0808芯片是要外加电压和时钟,当输入不同的电压的时候,就可以把不同的电压模拟量转化为数字值,输入的电压越大,其转换的相应的数字也就会越大,ADC0808芯片有8个通道输入和8个通道输出。

其具体的管脚图如下

ADC0808芯片管脚图

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除100次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

外形及引脚排列如图所示

AT89C51芯片管脚图

 

3.2基于单片机的数字PID控制直流电机PWM调压调速器系统

3.2.1调速原理

当基于以上产生一个PWM后,就可以借助PWM脉冲来控制晶体管的导通和关断,来给压频转换器来提供一定的电压,在PROTUES中仿真中,给定一个+12V的电压,就通过晶体管的导通和关断来给压频转换器供电,压频转换器就会输出很多的脉冲,借助单片机P3.5来计数,其计数送给P0来显示,通过给定不同的ADC的输入电压,就可以的得到不同的计数显示,电压越大,其计数显示也就越大,通过改变计数脉冲的周期和硬件压频转换器(LM331)的电阻和电容,就可以得到与输入电压接近的数值显示,可能由于干扰的原因,其显示值和实际值有一点偏差,这是在没有什么负载的情况下,或者说是在空载的情况下,这样就可以得到一个很理想的开环系统,也为闭环PWM调节做好准备。

当开环系统稳定后,加上一个扰动,或者说是加上负载,这样就使的压频转换器的电压减少,在给定一定电压的时候,当负载分压的时候,也就相当于直流电机的电压就会减少,这样直流电机的转速就会下降,或者说当有负载的时候,压频转换器的输入电压就会减少,这样输入的脉冲在单位时间就会减少,这样PID调节器,通过改变PID的参数,PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成。

其输入e(t)与输出u(t)的关系为u(t)=kp(e((t)+1/TI∫e(t)dt+TD*de(t)/dt)式中积分的上下限分别是0和t因此它的传递函数为:

G(s)=U(s)/E(s)=kp(1+1/(TI*s)+TD*s)其中kp为比例系数;TI为积分时间常数;TD为微分时间常数这样就会得到一个偏差,通过这个偏差来改变原来的PWM的占空比,使得晶体管的导通时间加长或减少,这样就改变了直流电机的输入电压,也就是该变了在PROTUES压频转换器的输入电压,使得输出的计数脉冲在单位时间发生改变,也就是模拟了直流电机的转速的改变,我们希望通过PID的调节,使得输出的计数脉冲的显示值和预先设定的值接近,由于偏差的存在,使得PID调节器不断的去修正,使得显示值近可能的接近我们所预期的设定值。

3.2.2PID控制直流电机PWM调压调速器系统原理图

PID调速原理图

3.2.3波形仿真

在不同的给定电压下开换系统会有不同的PWM波形和计数脉冲个数,当给定电压为较高时其波形见如下图

 

 

 

低电压给定对应的波形

3.2.4相关程序

1.PWM源程序

ADCEQU35H;定义ADC0808时钟芯片

CLOCKBITP2.4

STBITP2.5

EOCBITP2.6

OEBITP2.7

PWMBITP3.7

ORG00H

SJMPSTART

ORG0BH

LJMPINT_TO

START:

MOVTMOD,#02H

MOVTH0,#00H

MOVTL0,#00H

MOVIE,#82H

SETBTR0

WAIT:

CLRST

SETBST

CLRST;启动A/D转换等待结果

JNBEOC,$

SETBOE

MOVADC,P1;启动A/D转换结果

CLROE

SETBPWM;PWM输出

MOVA,ADC

LCALLDELAY

CLRPWM

MOVA,#0FEH

SUBBA,ADC

LCALLDELAY

SJMPWAIT

INT_TO:

CPLCLOCK

RETI;提供ADC0808时钟信号

DELAY:

CJNEA,#00H,L

INCA

L:

MOVR6,#1

D1:

DJNZR6,D1

DJNZACC,D1

RET

END

2.PID调速程序

ADCEQU35H

CLKBITP2.4

STBITP2.5

EOCBITP2.6

OEBITP2.7

PWMBITP3.7;

;PID调节设置

EK0EQU40H

EK1EQU41H

EK2EQU42H

PPEQU43H

IIEQU44H

DDEQU45H

UK0EQU70H

UK1EQU71H

ORG00H

SJMPSTART

ORG0BH

LJMPINT_TO

START:

MOVTMOD,#62H

MOVTH0,#00H

MOVTL0,#00H

MOVIE,#86H

SETBTR0

;SETBTR1

MOVR0,#00

MOVR1,#00

MOVR2,#00

MOVR3,#00

MOVR4,#00

MOVR5,#00

MOVR6,#00

MOVR7,#00

;PID赋值

MOVPP,#05

MOVII,#03

MOVDD,#02

MOVEK0,#00H

MOVEK1,#00H

MOVEK2,#00H

MOVUK0,#00H

MOVUK1,#00H

WAIT:

CLROE

INCR7

CLRST

SETBST

CLRST

JNBEOC,$;等待转换完成

SETBOE

MOVADC,P1

MOVR0,ADC

MOVA,70H

ADDCA,ADC

MOVADC,A

;CLROE

SETBPWM

SETBTR1

MOVA,ADC

LCALLDELAY;高电平延时

CLRPWM

MOVA,#255

SUBBA,ADC

LCALLDELAY;低电平延时

CJNER7,#20,WA2

WA1:

CLRTR1

MOVR7,#00

MOVA,TL1

MOV50H,A

movP0,50H

;PID求偏差

MOVA,EK1

MOVEK2,A

MOVA,EK0

MOVEK1,A

MOVA,R0

SUBBA,50H

MOVEK0,A

;PP的计算

MOVA,EK0

SUBBA,EK1

MOVB,PP

MULAB

MOVR1,A

MOVR2,B

AJMPX

WAIT1:

AJMPWAIT

;II的计算

X:

MOVA,EK0

MOVB,II

MULAB

MOVR3,A

MOVR4,B

;DD的计算

MOVA,EK1

RLA

MOVEK1,A

MOVA,EK0

SUBBA,EK1

ADDCA,EK2

MOVB,DD

MULAB

MOVR5,A

MOVR6,B

;PID总的计算

MOVA,R1

ADDCA,R3

ADDCA,R5

MOV60H,A

MOVA,R2

ADDCA,R4

ADDCA,R6

MOV61H,A

MOVA,60H

ADDCA,70H

MOV70H,A

MOVA,61H

ADDCA,71H

MOV71H,A

MOVTL0,#00H

MOVTL1,#00H

;SETBTR1

WA2:

SJMPWAIT1

INT_TO:

CPLCLK

RETI

DELAY:

MOVR6,#1

D1:

DJNZR6,D1

DJNZACC,D1

RET

END

第4章心得体会

我们进行了为期两周的课程设计。

通过这两周的课程设计,我拓宽了知识面,锻炼了能力,综合素质得到了提高。

刚刚拿到课题,我感到有些茫然,对于以前没有做过的人来说要全部做完的确有一定的难度。

由于我对计算机控制不是很熟悉,在设计的过程中走了不少弯路。

通过亲身体验做课程设计,我觉得安排课程设计的基本目的,在于通过理论与实际的结合,进一步提高观察、分析和解决问题的实际工作能力,以便培养成为能够主动适应社会主义现代化建设需要的高素质的复合型人才。

运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。

检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习容与方法提供实践依据。

我的收获有以下几点:

(1)我对所学专业有了一些了解,增强了自己的兴趣和对以后可能从事的职业的热爱。

(2)通过课程设计我明白到了理论到实践有一段很远的路程。

设计过程中的每一步都是一门学问,我终于知道了每一个实现的过程,每一个认识的过程都存有人类无数的的汗水与对待事物一丝不苟得,缜密的思考以及不懈的努力,只有这样才会有一个新生事物的诞生。

而以上种种的过程必须要你亲自去体会去认识去发现,那才是属于你的“收获”,只有这时才会对自己的作品无比的骄傲。

(3)通过这次设计加强了我们的设计创新能力。

使我们的理论知识与实践充分地结合。

(4)通过两周的课程设计,我学到了很多书本上学习不到的知识。

对我们机电专业的学生来说,实际能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。

通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备。

通过课程设计,我发现了自身存在的更多不足之处和实际应用能力方面的欠缺,这些不足之处在今后的学习之中要有意识的弥补和改变。

(5)感谢杜老师的悉心指导!

感谢帮助我的同学!

参考文献

1《微型计算机原理与应用》戴梅萼.清华大学

2《单片机技术》王炳实.机械工业.2004.第3版

3《基于数字PID设计》易泓可.机械工业.2004

4《微型计算机控制技术》于海生.清华大学.2000.第1版

5《单片机基础》广弟.航天航空大学.2007.第3版

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1