PID控制算法程序设计Word下载.docx
- 文档编号:17483859
- 上传时间:2022-12-06
- 格式:DOCX
- 页数:16
- 大小:299.51KB
PID控制算法程序设计Word下载.docx
《PID控制算法程序设计Word下载.docx》由会员分享,可在线阅读,更多相关《PID控制算法程序设计Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
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)组成。
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
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
START:
MOVTMOD,#62H
MOVTH0,#00H
MOVTL0,#00H
MOVIE,#86H
;
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:
INCR7
CLRST
JNBEOC,$;
等待转换完成
MOVADC,P1
MOVR0,ADC
MOVA,70H
ADDCA,ADC
MOVADC,A
CLROE
SETBPWM
SETBTR1
MOVA,ADC
LCALLDELAY;
高电平延时
MOVA,#255
SUBBA,ADC
低电平延时
CJNER7,#20,WA2
WA1:
CLRTR1
MOVA,TL1
MOV50H,A
movP0,50H
PID求偏差
MOVA,EK1
MOVEK2,A
MOVA,EK0
MOVEK1,A
MOVA,R0
SUBBA,50H
MOVEK0,A
PP的计算
SUBBA,EK1
MOVB,PP
MULAB
MOVR1,A
MOVR2,B
AJMPX
WAIT1:
AJMPWAIT
II的计算
X:
MOVB,II
MOVR3,A
MOVR4,B
DD的计算
RLA
ADDCA,EK2
MOVB,DD
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
MOVTL1,#00H
;
WA2:
SJMPWAIT1
INT_TO:
CPLCLK
RETI
MOVR6,#1
DJNZR6,D1
DJNZACC,D1
END
第4章心得体会
我们进行了为期两周的课程设计。
通过这两周的课程设计,我拓宽了知识面,锻炼了能力,综合素质得到了提高。
刚刚拿到课题,我感到有些茫然,对于以前没有做过的人来说要全部做完的确有一定的难度。
由于我对计算机控制不是很熟悉,在设计的过程中走了不少弯路。
通过亲身体验做课程设计,我觉得安排课程设计的基本目的,在于通过理论与实际的结合,进一步提高观察、分析和解决问题的实际工作能力,以便培养成为能够主动适应社会主义现代化建设需要的高素质的复合型人才。
运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。
检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。
我的收获有以下几点:
(1)我对所学专业有了一些了解,增强了自己的兴趣和对以后可能从事的职业的热爱。
(2)通过课程设计我明白到了理论到实践有一段很远的路程。
设计过程中的每一步都是一门学问,我终于知道了每一个实现的过程,每一个认识的过程都存有人类无数的的汗水与对待事物一丝不苟得,缜密的思考以及不懈的努力,只有这样才会有一个新生事物的诞生。
而以上种种的过程必须要你亲自去体会去认识去发现,那才是属于你的“收获”,只有这时才会对自己的作品无比的骄傲。
(3)通过这次设计加强了我们的设计创新能力。
使我们的理论知识与实践充分地结合。
(4)通过两周的课程设计,我学到了很多书本上学习不到的知识。
对我们机电专业的学生来说,实际能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。
通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备。
通过课程设计,我发现了自身存在的更多不足之处和实际应用能力方面的欠缺,这些不足之处在今后的学习之中要有意识的弥补和改变。
(5)感谢杜老师的悉心指导!
感谢帮助我的同学!
参考文献
1《微型计算机原理与应用》戴梅萼.清华大学出版社
2《单片机技术》王炳实.机械工业出版社.2004.第3版
3《基于数字PID设计》易泓可.机械工业出版社.2004
4《微型计算机控制技术》于海生.清华大学出版社.2000.第1版
5《单片机基础》李广弟.航天航空大学出版社.2007.第3版
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PID 控制 算法 程序设计
![提示](https://static.bdocx.com/images/bang_tan.gif)