您好,欢迎访问三七文档
《计算机控制》课程设计报告题目:Dahlin算法控制器设计姓名:张萌萌学号:0902302302012年7月13日《计算机控制》课程设计任务书学号090230230班级0902302学生张萌萌指导教师李军远题目Dahlin算法控制设计设计时间2012年7月6日至2012年7月13日共1周设计要求设计任务:(按照所选题目内容填写)被控对象为)110)(2.0(20)(G12pssess,T=0.5s,6T,采用Dahlin算法设计消除振铃的数字控制器。方案设计:1.完成控制系统的分析、设计;2.选择元器件,完成电路设计,控制器采用MCS-51系列单片机(传感器、功率接口以及人机接口等可以暂不涉及),使用Protel绘制原理图;3.编程实现单片机上的控制算法。报告内容:1.控制系统仿真和设计步骤,应包含性能曲线、采样周期的选择、数字控制器的脉冲传递函数和差分方程;2.元器件选型,电路设计,以及绘制的Protel原理图;3.软件流程图,以及含有详细注释的源程序;4.设计工作总结及心得体会;5.列出所查阅的参考资料。指导教师签字:系(教研室)主任签字:2012年7月5日一.课题名称Dahlin算法控制器设计二.课程设计目的课程设计是课程教学中的一项重要内容,是达到教学目标的重要环节,是综合性较强的实践教学环节,它对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。《计算机控制技术》是一门理论性、实用性和实践性都很强的课程,课程设计环节应占有更加重要的地位。计算机控制技术的课程设计是一个综合运用知识的过程,它需要控制理论、程序设计、硬件电路设计等方面的知识融合。通过课程设计,加深对学生控制算法设计的认识,学会控制算法的实际应用,使学生从整体上了解计算机控制系统的实际组成,掌握计算机控制系统的整体设计方法和设计步骤,编程调试,为从事计算机控制系统的理论设计和系统的调试工作打下基础。三.提供的实验条件(1)软件:Matlab,AltiumDesigner,KEIL(2)仪器和设备:计算机、单片机四.课程设计内容被控对象为sesssG12)110)(2.0(20)(,T=0.5s,6T,采用Dahlin算法设计消除振铃的数字控制器。五.工作原理在控制系统应用中,纯滞后环节往往是影响系统动态特性的不利因素。工业过程中如钢铁,热工和化工过程中往往会有纯滞后环节。对这类系统,控制器如果设计不当,常常会引起系统的超调和持续振荡。由于纯延迟的存在,使被控量对干扰、控制信号不能即时的反映。即使调节机构接受控制信号后立即动作,也要经过纯延时间t后才到达被控量,使得系统产生较大的超调量和较长的调节时间。当t=0.5T(T为对象的时间常数)时,实践证明用PID控制很难获得良好的控制品质。对这类具有纯滞后环节系统的控制要求,快速性往往是次要的,通常要求系统稳定,要求系统的超调量要小,而调整时间允许在较多的采样周期内结束。这样的一种大时间滞后系统采用PID控制或采用最少拍控制,控制效果往往不好。这里我们利用一种直接数字控制器设计方法:大林算法。基于达林算法的采样控制系统结构框图如图所示。D(Z)ZOHRCE1220(0.2)(101)sess图1.采样控制系统原理图D(z)系统的设计核心,它实际上是由计算机实现,它的输入输出均是时间上离散的数字信号信号。在实际运用中要经过A/D,D/A的转换,利用数字控制起来控制被控对象,打到期望的性能指标。六.Dahlin控制器设计本系统被控对象的传递函数为:12100()(51)(101)sGsess(1)系统延迟时间为12s,采样时间取T=0.5s,T=6,15T,210T,K=100,则N=24。假定校正后的系统闭环传函为1211161ssmseeTss(2)对于二阶对象,其脉冲传递函数为:1211120//11()()(1)(1)NTTTTKzCCzGzezez(3)其中参数的计算:12//1122111()TTTTCTeTeTT(4)211211()//212211()TTTTTTTCeTeTeTT(5)校正后系统闭环脉冲传函为:/1/111(1)()11mmTTTsNsTTmeezzZesTsez(6)控制器传函的计算:()()()[1()]zDzGzz(7)由(3),(6),(7)式得本系统控制器传递函数为:12//1/11/1/112(1)(1)(1)()()[1(1)]TTTTTTTTTTNeezezDzKCCzezez(8)代入各项参数111125(10.9048)(10.9512)()3(10.958)[10.920.08]zzDzzzz(9)该控制器中,含有极点Z=-0.958,接近z=-1点。该极点会引起振铃。将该极点用z=1代替,得到消除振铃的控制器:111250.17(10.9048)(10.9512)()10.920.08zzDzzz(10)由D(z)得到差分方程为:U(k)=0.92U(k-1)+0.08U(k-25)+0.17E(k)-0.3155E(k-1)+0.1463E(k-2)(11)七.系统仿真(1)仿真框图图2.系统仿真框图(2)仿真结果系统输出结果:图3.有振铃情况下控制器输出和系统输出UYZOHStepScope10050s+15s+12G(s)num(z)den(z)D(z)12sDelayxeku-0.4-0.3-0.2-0.100.10.20.30.4u0102030405060708090100-0.500.511.5图4.消除振铃后控制器输出和系统输出(3)仿真结果分析:直接计算得到的控制器后,系统输出稳定,没有超调。但是控制器输出有大幅度的振铃现象。如图3所示。消除振铃后,系统输出依然稳定,控制器输出也没有了振铃现象,如图4所示。效果比较好。五.控制器的硬件实现5.1.硬件电路部分控制器部分需要AD转换器,DA转换器,单片机。5.1.1、AD转换器AD转换器选择TLC549,TLC549是TI公司生产的一种低价位、高性能的8位串行A/D转换器,它以8位开关电容逐次逼近的方法实现A/D转换,最大转换速率为40000HZ,电源为3V至6V。它能方便地采用三线串行接口方式与各种微处理器连接,构成各种廉价的测控应用系统。-0.1-0.0500.050.10.150.2u0102030405060708090100-0.500.511.5图5.TLC549接口电路图AD转换器的电路设计:(1)AD转换器的时钟信号,由单片机P1.3脚产生,故将CLOCK脚接单片机的P1.3。(2)CS脚为AD转换片选信号,低电平有效,由程序控制,与单片机的P1.4脚相连。(3)REF+和REF-是AD芯片的参考电压,这里分别接的+5V和地。则输入信号范围是0~5V,对应数字信号0x00~0xFF。(4)OUT是串行数据的输出口。由P3.4引脚读取。5.1.2、DA转换器D/A转换器选择TLC5615。TLC5615是TI公司生产的电压型10位串行D/A转换器。性能优于早期的电流型转换器。而且是串行接口,只需要3根线就能完成10位数据的传输,节省了IO口资源。图6.TLC5615接口电路图DA转换电路设计:(1)DA转换芯片的时钟信号有P1.1提供。故SCLK引脚将与单片机的P1.1引脚相连接。(2)CS脚为AD转换片选信号,低电平有效,由程序控制,与单片机的P1.2脚相连。(3)REFIN为参考电压。本电路中由电阻分压得到。为2.5V。则DA输出电压范围是0~5V,对应数字信号0x0000~0x03FF。(4)DIN为芯片的数字输入引脚,与单片机的P1.0引脚相连。5.1.3、控制器控制器选择AT89C51单片机。51单片机是目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。图7.单片机最小系统单片机选择11.0592MHZ晶振,上电复位模式。5.2控制器的软件控制5.2.1、流程图系统初始化采样周期是否到D/A输出u(k)采样变量赋新值采样周期变量清零A/D采样计算u(k)主程序定时器初值重装定时器中断服务程序时间计数变量自加中断返回否是5.2.2、程序/*********************************************************************文件名:Dahlin.c*描述:本程序实现大林算法控制器。*创建人:张萌萌090230230***********************************************************************/#includereg52.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintsbitAD_Out=P3^4;//TLC549输出端sbitCS=P1^4;//TLC549片选信号sbitAD_In=P1^3;//TLC549输入端sbitSPI_CLK=P1^1;//TLC5615时钟信号sbitSPI_DATA=P1^0;//TLC5615数据信号sbitCS_DA=P1^2;//TLC5615片选信号intCount=0;//时间计数变量intek=0,ek1=0,ek2=0;//采样变量。ek为E(k),ek1为e(k-1),ek2为e(k-2)。intuk_out=0,uk[26]={0};//控制器输出变量。uk[i]表示u[k-i]/*********************************************************************名称:Delay()*功能:延时,延时时间为1ms*del*输入:del*输出:无***********************************************************************/voidDelay(uintdel){uchari,j;for(i=0;idel;i++)for(j=0;j=148;j++);}/*********************************************************************名称:AD_Change(void)*功能:TLC549驱动程序,模拟SPI模式从AD芯片中读出8位数据*输入:无*输出:temp(电压值)***********************************************************************/ucharAD_Change(void){uchari,temp=0;AD_In=0;_nop_();_nop_();CS=0;_nop_();_nop_();_nop_();_nop_();if(AD_Out==1)temp+=1;for(i=0;i8;i++){AD_In=1;_nop_();_nop_();AD_In=0;_nop_();_nop_();if(i!=7){temp=temp1;if(AD_Out==1)temp+=1;}}CS=1;returntemp;}/************************************************************************名称:Average()*功能:平均值滤波法,取一共十个数据,*输入:十个待处理的值*输出:得到一个的平均值*******************************
本文标题:大林算法控制器设计
链接地址:https://www.777doc.com/doc-6141629 .html