计算机控制技术课程设计直流电机转速闭环控制设计.docx
《计算机控制技术课程设计直流电机转速闭环控制设计.docx》由会员分享,可在线阅读,更多相关《计算机控制技术课程设计直流电机转速闭环控制设计.docx(42页珍藏版)》请在冰豆网上搜索。
计算机控制技术课程设计直流电机转速闭环控制设计
摘要
在运动控制系统中,电机转速控制占有至关重要的作用,其控制算法和手段有很多,模拟PID控制是最早发展起来的控制策略之一,长期以来形成了典型的结构,并且参数整定方便,能够满足一般控制的要求,但由于在模拟PID控制系统中,参数一旦整定好后,在整个控制过程中都是固定不变的,而在实际中,由于现场的系统参数、温度等条件发生变化,使系统很难达到最佳的控制效果,因此采用模拟PID控制器难以获得满意的控制效果。
随着计算机技术与智能控制理论的发展,数字PID技术渐渐发展起来,它不仅能够实现模拟PID所完成的控制任务,而且具备控制算法灵活、可靠性高等优点,应用面越来越广。
本设计以上面提到的数字PID为基本控制算法,以Intel80486CPU为控制核心,产生占空比受数字PID算法控制的PWM脉冲实现对直流电机转速的控制。
同时利用霍尔传感器将电机速度转换成脉冲频率反馈到CPU中,实现转速闭环控制,达到转速无静差调节的目的。
在系统中采数码管和键盘、AD作为人机交互界面,启动后可以通过显示部件了解电机当前的转速。
该系统控制简单,反应灵敏,具有很强的抗干扰能力。
关键词:
直流电机;Intel80486CPU;转速控制
1.设计要求
1.1任务
(1)已知参数和设计要求
1)用PD-32E实验装置产生PWM方波调制直流电机以一定速率旋转,人为给一个速度漂移,霍尔元件测出速度并根据PID算法跟踪校正速度漂移。
2)要求用LED或LCD时实显示电机速度。
3)要求在10秒内PID算法纠正速率漂移。
(2)实现方法
采用PD-32E实验装置实现(限≤4人选做)
1.2要求
1)硬件设计:
要求完成控制系统框图;绘制完整的控制系统电原理图;说明各功能模块的具体功能和参数;结合实验室现有的PD-32E实验装置进行系统组成,对整个系统的工作原理进行全面分析,论述其结构特点、工作原理、优、缺点和使用场合。
分析和论述系统采用的主要单元的工作原理和特性。
2)软件设计:
要求合理分配系统资源,完成直流电机转速闭环控制的程序设计(如:
系统初始化;主程序;A/D转换;D/A转换;标度变换;显示与键盘管理;控制算法处理;输出等)。
3)对设计控制系统进行系统联调。
4)编写课程设计报告:
按统一论文格式、统一报告纸和报告的各要素【封面、任务书、目录、摘要、序言、主要内容(包括设计总体思路、设计步骤、原理分析和相关知识的引用等)、总结、各组员心得体会、参考书及附录(包括系统框图、程序流程图、电原理图和程序原代码)】进行编写,字数要求不少于4000字,要求设计报告论理正确,逻辑性强,文理通顺,层次分明,表达确切。
1.3分工
廖海平:
程序的主体流程逻辑,算法的编写,系统的初始化,最后再把组员的各部分子程序融合在一起。
王璐:
负责三色LED显示程序的实现,程序的测试,论文的编写,显示及部分流程图的绘制。
朱建康:
资料查阅,键盘控制程序的编写和测试,程序流程图的绘制,部分论文的编写。
余凌飞:
AD程序的设计及编写,AD程序流程图的绘制,论文编写。
2设计方案确定与实施
2.1系统原理
2.1.1电路
2.1.2硬件连线
硬件连线:
8254:
OUT0接8259IRQ0,GATE0接+5v,CLK0接47K,CS接CS1;8259:
CS_1接CS3,INT1接INTR,SP/1接5v;AD574:
转换板out接10VIN,12/8接5V,A0接GND,CS接CS2;DA0832:
IOW接WR2XFER接CSCS接CS4,out接占空比输入;键盘:
Q0,1,2接A5,6,7,P0-P3接C3-C0转换板:
脉冲输出接IN。
2.2软件设计(流程图)
2.2.1控制流程图
2.2.2主程序流程图
2.2.3AD子程序流程图
2.2.4LED显示程序流程图
2.2.5键盘子程序流程图
3系统测试及分析
3.1比例系数的调节
序号\参数
P系数
I系数
D系数
现象:
误差及调节速度
1
30
0
0
误差:
9转每秒
调节速度:
6s
2
40
0
0
误差:
6转每秒
调节速度:
5秒
3
50
0
0
误差:
4转每秒
调节速度:
3秒
4
60
0
0
误差:
5转每秒
调节速度:
2秒
5
70
0
0
误差:
7转每秒
调节速度:
1秒
由上述P系数的调节现象可知,比例系数越小,控制作用越弱,系统响应速度变慢,比例系数调大能减小偏差,但不能彻底消除偏差,比例系数越大,控制也越强,系统响应速度也越快,但是P系数过大会是系统产生较大的超调和振荡,导致系统的稳定性能变差。
因此,P系数选取不能过大。
由上表可知,P系数的大小以50较为合适。
3.2积分系数的调节
序号\参数
P系数
I系数
D系数
误差及调节速度
1
50
0.001
0
误差:
4转每秒
调节速度:
3秒
2
50
0.005
0
误差:
2转每秒
调节速度:
3秒
3
50
0.010
0
误差:
1转每秒
调节速度:
3秒
4
50
0.020
0
误差:
2转每秒
调节速度:
4秒
5
50
0.030
0
误差:
4转每秒
调节速度:
5秒
上表为积分系数的调节过程,积分控制作用的存在与偏差的存在时间有关,只要系统存在着偏差,积分环节就会不断起作用。
积分时间足够长的情况下,理论上是可以完全消除偏差,这是积分控制作用将维持不变。
I系数越大,积分速度越快,积分作用越强,积分作用太强会使系统超调加大,甚至使系统出现振荡,同时会使得系统调节速度变慢。
I系数越小,积分控制器作用越小,系统调节速度没有明显的变化,误差没有明显的减小趋势。
由上表可知,积分系数为0.010的时候控制作用最好。
3.3微分系数的调节
序号\参数
P系数
I系数
D系数
误差及调节速度
1
50
0.010
0.001
误差:
1转每秒
调节速度:
3秒
2
50
0.010
0.005
误差:
1转每秒
调节速度:
3秒
3
50
0.010
0.010
误差:
1转每秒
调节速度:
2秒
4
50
0.010
0.015
误差:
1转每秒
调节速度:
1秒
5
50
0.010
0.020
误差:
2转每秒
调节速度:
1秒内
6
50
0.010
0.030
误差:
2转每秒
调节速度:
1秒内
积分控制作用的引入虽然可以消除静差,但是降低了系统的响应速度,特别是对于具有较大惯性的被控对象。
这是需要用到微分控制,微分控制可以将偏差消灭在萌芽状态,这样可以大大减小系统的动态偏差和调节时间,使系统的动态调节品质得以改善。
微分环节有助于系统减小超调,克服振荡,加快系统的响应速度,减小调节时间。
但是微分时间常数过大,会是系统不稳定。
微分控制作用一个很大的缺陷是容易引入高频噪声。
所以由上表可知,此系统的最佳D系数为0.015。
综上所述:
PID控制器的各参数为:
P系数
I系数
D系数
现象
50
0.010
0.015
误差:
1转每秒
调节速度:
1秒
实际效果:
被控电机的实际转速在0~50转/秒。
在给定速度为7~42转/秒时,待系统稳定后,系统的静差为1转每秒,调节速度为1秒,符合题目要求。
在其他给定速度范围内,系统的调节品质会略降低,当给定速度大于50时,系统不能再向上调节。
4总结
4.1小组总结
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.
通过这次课程设计,我们学会了:
1.通过本设计熟悉了实验设计过程。
2.了解并掌握了试验常用的方法和技术,熟悉了实验的基本操作。
3.升化了我们的理论水平,锻炼了我们理论联系实际的能力。
4.学会了运用基础知识,专业技术基础知识分析探讨直流电机转速控制的设计。
回顾起此次课程设计,我们仍感慨颇多,从设计流程到定稿,从理论到实践,在这一个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次的课程设计是一项集体活动,是要我们通过集体的努力,相互帮助,共同团结,发挥小组的战斗堡垒作用,使任务保质保量的完成。
很多人在一起,时间长了,就会产生意见分歧。
这次的课程设计也不例外。
第一天就发生了这样的事情,对于分工问题,有某些人有点争议,其实也应该理解啦。
大家都是大四的学生了现在对我们来说,确实有时候时间上有点冲突,好好商量,整合大家的意见,这个风波很快就烟消云散了。
每个同学都很认真的对待每一个任务。
通过这次的课程设计,让我们小组的人有了共识。
团结合作,协调组织是完成集体任务的核心。
课程设计终于结束了,这段时间是我们小组在大学期间不可多得的美好记忆。
它给了我们很多的感受和经验,让我们在饱受酸甜苦辣的同时也体会到集体的力量和成功的喜悦。
这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在游纪源老师的辛勤指导下,终于游逆而解。
在次,我们表示感谢!
4.2个人总结
余凌飞:
此次课程设计总体来说对我还是比较难,时间也非常紧迫,对我们考验很大。
我们这次的设计主要是以单片机的知识进行设计,我主要负责AD转换和标度变换。
在设计过程中我遇到了很多问题,首先是对单片机的不熟悉,在翻看以前学的书籍后,才进行编程。
在编程过程中,我们也有很多错误,经过大家共同努力才发现了那些隐蔽而有影响的错误。
经过改正,才得以实现。
通过这次的课程设计,使我对计算机硬件和计算机控制的知识更加熟悉了,也使我对查阅资料更加的得心应手。
我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,也充分体会到了自己设计东西的乐趣、学会查阅资料和对别人的东西融会变通的重要性,也明白了很多知识光靠趴在书本上学是学不到其中的精髓的,必须亲自去试着实践,亲自去经历才能对它们真正的掌握,凡事都要自己去动下手,去实践一下,遇到困难,永远不要沮丧气馁。
在动手的过程中,不仅能增强实践能力,而且在理论上可以有更深的认识;这次设计给了我极大的鼓舞和信心,相信在以后的学习中可以通过不断的摸索和实践来提高其他方面的知识。
朱建康:
这次课程设计我主要负责显示与键盘管理,设计过程中遇到了很多难题,在同学和老是帮助下,总算克服万难完成了任务。
在此,我还要感谢在一起设计讨论的同学,正是由于你们的帮助和支持,我才能克服一个又一个的困难和疑惑,直至本设计的顺利完成。
感谢你们给予我的帮助。
在本系统的设计过程和论文编写过程中,还有很多老师、同学和朋友都给予了我许多无私的帮助,尤其是我的导师给我提出了很多宝贵的修改意见,在这里,我向这些无私帮助我的人表示衷心的感谢!
通过这次让我学到了很多,我明白了一个人的力量再大也是渺小的,我们必须团结起来才能做到更好。
我们需要相互学习和信赖,我们需要理性的协调和分配。
当我们遇到困难时,我们都应当迎头去面对它,而不能逃避,就可以使很多看似复杂的问题简单化,简单的问题解决掉。
这次我真的学到很多,让我认识到我不止理论和实践,专业知识和其他方面也需要加强学习,不断充实自身。
王璐:
通过本次课程设计,使我对《计算机控制技术》这门课程有了更深入的理解。
《计算机控制技术》是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。
一个人的力量是有限的,要想把课程设计做的更好,就要学会参考一定的资料,吸取别人的经验,让自己和别人的思想有机的结合起来,得出属于你自己的灵感。
程序的编写需要有耐心,有些事情看起来很复杂,但问题需要一点一点去解决,分析问题,把问题一个一个划分,划分成小块以后就逐个去解决。
再总体解决大的问题。
这样做起来不仅有条理也使问题得到了轻松的解决。
在这个过程中,我也曾经因为实践经验的缺乏失落过,也曾经仿真成功而热情高涨。
生活生活生活生活就是这样,汗水预示着结果也见证着收获。
劳动是人类生存生活永恒不变的话题。
虽然这只是一次的极简单的课程制作,可是平心而论,也耗费了我不少的心血,这就让我不得不佩服开发技术的前辈,才意识到老一辈对我们社会的付出,为了人们的生活更美好,他们为我们社会所付出多少心血啊!
对我而言,知识上的收获重要,精神上的丰收更加可喜。
让我知道了学无止境的道理。
我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。
挫折是一份财富,经历是一份拥有。
这次课程设计必将成为我人生旅途上一个非常美好的回忆!
通过这次的课程设计我对于专业课的学习有了更加深刻的认识,以为现在学的知识用不上就加以怠慢,等到想用的时候却发现自己的学习原来是那么的不扎实。
以后努力学好每门专业课,让自己拥有更多的知识,才能解决更多的问题!
廖海平:
此次课程设计,我主要负责程序的主体流程和算法,PWM波形的设计和输出。
此次设计的题目是直流电机的转速闭环控制,直流电机的控制是通过PWM波,顾名思义,PWM输出是数字信号,通过改变占空比实现对电机转速的控制。
闭环控制就是要求实时检测电机的转速,由于电机的实际输出转速在0~50转,所以实际控制中给定速度也在这个范围。
通过负反馈,设计PID控制器。
由于设计要求精度并不高,并且硬件的稳定性不高,所以控制精度也不高,实际程序中D控制一般没有输出,主要采用PI控制。
P控制转速的快速跟踪,P增大会导致控制超调,P过大会导致输出振荡和发散,所以P必须要有一个合适的值。
I控制的好处消除静差,但是I过大会导致调节速度变慢,一般I给的很小,保证输出范围的同时保证调节速度较快。
D控制会加快调节速度,减小超调,但是D过大也会导致系统出现震荡,所以D一般也给的较小。
整个控制中P控制的调节力度最大。
PWM波形的产生:
由于没有PWM直接输出的硬件支持,所以只有模拟输出PWM波。
PWM波是固定周期的,只能调节占空比。
实际程序中,运用8254的方式0,和8259中断管理芯片,产生PWM波。
具体实现原理为:
首先固定周期,例如10ms,设计中断的产生效果是任意相邻的两个中断的总周期等于PWM波的周期。
由于8254方式0,接47K的时钟信号。
所以相邻两个中断的计时为470个时钟信号,及8254计数470。
在中断中调节8254的初值,即可实现总周期为10ms。
以达到相对准确的PWM波的输出。
实际试验结果符合上述阐述。
程序的流程如前所述,为了实现较多的功能,比如可以实时更改P、I、D参数,可以实时更改给定速度,所以程序比较冗长。
此次试验我更加清楚的了解了PID控制算法,包括位置式PID和增量式PID。
更加熟悉了汇编语言。
学到了更多的专业知识。
知识无止境,学海无涯。
相信继续努力会学到更多的知识。
5附录
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;计算机控制技术课程设计;;
;;;;
;;题目:
直流电机转速闭环控制;;
;;指导老师:
;;
;;DesignedBy:
王璐/朱健康/余凌飞/廖海平;;
;;Greed/Class:
09级自动化04班;;
;;Time:
2012/9/15;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;接线说明:
;;
;;8254:
OUT0接8259IRQ0,GATE0接+5v,CLK0接47K,CS接CS1;;
;;8259:
CS_1接CS3,INT1接INTR,SP/1接5v;;
;;AD574:
转换板out接10VIN,12/8接5V,A0接GND,CS接CS2;;
;;DA0832:
IOW接WR2XFER接CSCS接CS4,out接占空比输入;;
;;键盘:
Q0,1,2接A5,6,7,P0-P3接C3-C0;;
;;单色LED:
A0-DS3,A1-DS4,A2-DS5,A3-DS6,;;
;;B0~B7接段选信号abcdefgdp;;
;;转换板:
脉冲输出接IN;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.486
DATASEGMENTUSE16
ORG4000H
KPDB50;P系数/100
KIDB0;i系数/1000
KDDB0;d系数/1000
EK_NOWDw0;第K次采样的偏差值
EK_LASTDw0;第K-1次采样的偏差值
EIDw0;误差积分
EDDw0;K-(K-1)偏差值
speed_givenDw30;速度给定
P_outDW0;P输出
I_outDW0;I输出
D_outDW0;D输出
speed_fusiondw0
speed_geidw0
speed_backdw0
test_valuedb0
seconddw0
second_1sdb0
PID_outdw0
NDW?
;脉冲计数器
MOTOR_CURRENTDW0;电机电流
speeddw0;
ad_dataDW?
;AD一次转换结?
sum_ad_dataDW0;
ad_resultDW0;转换电压终值
flagdb00h
flag_kpdb00h
flag_kidb00h
flag_kddb00h
flag_piddb00h
flag_pid_lastdb00h
flag_onlinedb00h
key_valuedb00h
DISP_CODE_BUF_THREEDB?
?
?
?
?
?
;显示缓冲区
DISP_CODE_BUF_SINGLEDB?
?
?
?
;显示缓冲区
INTQEQU40H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;按键定义;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
key_onEQU0D7H;系统开;;;;;;;;4*3按键布局;;;;;;;;;;
key_offEQU0DBH;关;;onkixxx;;
key_set_kpEQU0DDH;切换显示;;offkdxxx;;
key_set_kiEQU0B7H;起步价设置;;kpupxxx;;
key_set_kdEQU0BBH;单价设置;;xxxdownxxx;;
key_setupEQU0BDH;设置加;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
key_setdownEQU0BEH;设置减
DATAENDS
CODESEGMENTUSE16
ASSUMECS:
CODE,DS:
DATA
ORG1000H
BEG:
JMPSTART
TABDB0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H;三色显示字形码
DB80H,90H,88H,83H,0c6H,0a1H,86H,8eH
START:
CALLINIT
sue:
callDISPLAY_DAIJI;待机显示\
start_key:
CALLKEY_SCAN
;CMPkey_value,0ffh
;jesue
CALLDELAY_MS
CALLSHIFANG
MOVAl,key_value
CALLKEY_ANALYSE
CALLfunctions_key
cmpflag,00h
jestart_key
cmpflag,01h;键盘扫描,flag=01h转入主函数
jemain_it
cmpflag,02h
jestart_key
jmpstart_key
main_it:
calltime_500ms;启动定时器。
开启中断
callVERINIT
main:
callSPEED_CALCULATE
callspeed_change
calldisplay_speed
calldisplay_test
CALLKEY_SCAN
MOVAL,key_value
CMPAL,key_off
jesys_off
jmpmain
sys_off:
CALLDELAY_ms
CALLSHIFANG
MOVDX,300h
MOVAX,00H;关闭8254,关闭中断
OUTDX,AL
MOVAL,AH
OUTDX,AL
calldisplay_off
movflag,00h
movflag_online,00h
movspeed,0
movspeed_given,30
movEK_NOW,0
movEK_LAST,0
movei,0
moved,0
movN,0
movP_out,0
movi_out,0
movd_out,0
movPid_out,0
calldelay_long
jmpstart
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISPLAY_OFFPROCNEAR;关闭显示
PUSHA
MOVDX,208H
MOVEAX,0FF0F0F0FH
OUTDX,EAX
MOVDX,203H
ANDAX,0E0H
OUTDX,AX
POPA
RET
DISPLAY_OFFENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISPLAY_DAIJIPROCNEAR;设置待机显示
PU