计算机控制课程设计--串联校正控制器设计.doc_第1页
计算机控制课程设计--串联校正控制器设计.doc_第2页
计算机控制课程设计--串联校正控制器设计.doc_第3页
计算机控制课程设计--串联校正控制器设计.doc_第4页
计算机控制课程设计--串联校正控制器设计.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机控制课程设计报告题目: 串联校正控制器设计 姓名: 学号: 2013年12月2日计算机控制课程设计任务书学 号班 级学 生指导教师题 目串联校正控制器设计设计时间2013年 11 月 25 日 至 2013 年 12 月 2 日 共 1 周设计要求设计任务:(按照所选题目内容填写)设单位反馈系统的开环传递函数为,用根轨迹法设计串联校正控制器,并采用模拟法设计数字控制器,使校正后的系统满足:系统阻尼比为0.5,无阻尼自然振荡频率2rad/s。方案设计:1. 完成控制系统的分析、设计;2. 选择元器件,完成电路设计,控制器采用MCS-51系列单片机(传感器、功率接口以及人机接口等可以暂不涉及),使用Protel绘制原理图;3. 编程实现单片机上的控制算法。报告内容:1. 控制系统仿真和设计步骤,应包含性能曲线、采样周期的选择、数字控制器的脉冲传递函数和差分方程;2. 元器件选型,电路设计,以及绘制的Protel原理图;3. 软件流程图,以及含有详细注释的源程序;4. 设计工作总结及心得体会;5. 列出所查阅的参考资料。指导教师签字: 系(教研室)主任签字:2013年 11 月 25 日1、 模拟控制器的设计原系统的开环传递函数为,单位负反馈。根据题目要求,系统阻尼比为0.5,无阻尼自然振荡频率2rad/s。因此期望主导极点为 用Matlab绘制其根轨迹如下图所示:图 1 校正前系统的根轨迹由上图可知,期望闭环极点位于根轨迹左侧,可以采用相位超前校正,使根轨迹左移。由图可见,开环几点之一,正好位于期望闭环极点垂线下的负实轴上,如果令校正装置的零点设在紧靠这个开环极点的左侧,另,这样做往往能增大成为闭环主导极点的可能性。运用Matlab编程求出对应于零点的极点为,因此校正后系统的开环传递函数为: 其根轨迹如图2所图 2 校正后系统根轨迹根据幅值条件,可以求出系统工作于点的值为30。原系统及校正后系统的阶跃响应如图3所示:图 3 原系统阶跃响应图 4 校正后系统的阶跃响应可以看出原系统阶跃响应单调递增变化,为过阻尼的情况;校正后系统衰减震荡,为欠阻尼,由其根轨迹曲线可以看出,工作点近似位于期望闭环极点上。至此,模拟控制器设计完毕。2、 器件选取及电路设计(1) 控制器选用STC89C52单片机,晶振选取12MHz。P0口作为普通I/O口使用,故需接入上拉电阻。(2) A/D选用ADC0804。其分辨率为8位,转换时间为100us,输入电压范围为05V。芯片内部具有三态输出数据锁存器,可直接连接在数据总线上。(3) D/A选用DAC0832。其为8位D/A转换器,其转换时间为1us。数据输入可以采用双缓冲、单缓冲、或直通方式,以便适用于各种电路的需要。工作电压为+5V+15V,基准电压为范围为-10V+10V。D/A转换结果采用电流形式输出,可通过外接运算放大器将其转换成电压。由上述器件可以计算出,完成一次A/D、D/A转换所需要的时间为101us;单片机每执行一条指令所需时间为0.083us,给定采样时间0.01s,即10000us,足够完成程序运算与A/D、D/A的转换。原理图如图5所示:图 5 数字控制器原理图3、 数字控制器的设计以及被控对象的离散化由模拟控制器到数字控制器的实现有许多方法,比如一阶前向差分、一阶后向差分、双线性变换法、零极点匹配法等等。考虑到双线性变换发使用方便且有一定精度,故选取其作为离散化方法。上一步选取了采样周期为0.01s,由Matlab运算得到离散化之后的控制器脉冲传函为:求得相应的差分方程为:。被控对象采用零阶保持器离散化,最终的离散化系统方框图如图6所示:图 6 离散系统方框图用simulink对系统进行仿真,可得到系统的阶跃响应曲线:图 7 simulink仿真图图 8 离散系统阶跃响应曲线与原系统相比,相差不大。下面给出离散化前后的bode图: 图 9 离散化前后bode图上图中,实线为离散前系统的bode图,点画线为离散化之后的bode图,可以看出,两者差别不大,可以满足要求。4、 程序设计程序设计的总体思路是采用外部中断的方式进行。首先启动A/D转换,当转换完成时,触发单片机外部中断,进入中断服务子程序程序。在中断服务程序中,进行控制量的求取,然后再次启动A/D转换,中断返回。D/A采用直通工作方式,即只需要变化数据输入端,其模拟输出就紧跟着变化。由于D/A的转换时间为1us,而A/D转换时间为100us,故D/A芯片有足够的时间完成转换。 使用keil开发环境进行程序编写调试。并且利用keil的软件调试模式进行计算中断服务子程序运行一次所需要的时间。进而可以计算出每个周期内采样、转换与计算输出所需的总时间,然后与确定的采样周期相比较,确定采样周期的选取是否符合条件。软件调试界面如图10所示:图 10 Keil软件调试模式分别对进入中断以及中断返回进行计时,即可得到中断服务子程序运行时间,如图11所示:图 11 中断服务程序运行时间由上图可以计算中断服务程序运行的时间为:A/D转换时间为100us,故每周期总共用时为:故所选取的采样周期0.01s完全足够其完成采样与运算。程序流程图如下所示: 图 12 软件流程图5、 心得体会本次课程设计持续一周时间,在这一周内,我完成了从系统设计到控制器的具体编程实现等工作,有很大的收获。这次课设将以前学过的很多知识串联起来,形成整体化、系统化的思想,提高了我们综合运用所学知识解决实际问题的能力,也提升了我们有目的地查阅资料解决问题的能力。当然,这次课程设计更多的是让我识到自己的不足。作为一名大学生,掌握的知识确很过时,会用的只是课程中讲过的一些很简单很基本的芯片和控制器,不能与最新的只知识接轨,知识结构的老化,对所学专业认识的浅显,纸上谈兵,缺乏实践经验等等都是我们亟待解决的问题。在以后的学习工程中,我一定会积极拓宽自己的视野,多接触一些新知识,丰富自己,提升自己。我们的路还有很长。6、 参考文献1 张晋格主编.自动控制原理.哈尔滨:哈尔滨工业大学出版社,2003.2 刘建昌等主编.计算机控制系统.北京:科学出版社,2009.3 张毅刚主编.单片机原理及应用.北京:高等教育出版社,2004.4 张晋格,陈丽兰主编.控制系统CAD基于MATLAB语言.北京:机械工业出版社,2010.5 郭天祥编著.51单片机C语言教程.北京:电子工业出版社,2009.7、 附录Matlab程序:程序一:%校正前根轨迹clc,clear,close all;num=1;den=conv(1 1 0,1 4);G=tf(num,den);figure(1);rlocus(G);T=feedback(G,1);figure(2);step(T,20);程序二:%求取极点位置clc,clear,close all;x=-20:0.001:-1;angs=angle(-1+sqrt(3)*1i-(-1.2)*180/pi-90-angle(-1+sqrt(3)*1i-0)*180/pi-angle(-1+sqrt(3)*1i-(-4)*180/pi-angle(-1+sqrt(3)*1i-x)*180/pi;p=spline(angs,x,-180)程序三:%校正后根轨迹还未进行离散化clc,clear,close all;G=tf(1 1.2,conv(1 1 0,1 9 20);figure(1);rlocus(G)s=-1+sqrt(3)*1i;k=abs(s*(s+1)*(s+4)*(s+5)/(s+1.2)Gc=tf(k 1.2*k,conv(1 1 0,1 9 20);%期望极点处开环传函T=feedback(Gc,1);%期望极点处闭环传函figure(2);step(T,20)程序四:%运用双线性变换,进行离散化,判稳?clc,clear,close all;num=1 1.2;den=1 5;Gs=tf(num,den);%连续系统的控制器Gz=c2d(Gs, 0.01, tustin) %双线性离散化之后的控制器Gp=tf(30,conv(1 1 0,1 4);%连续系统的被控对象传函Gpz=c2d(Gp,0.01,zoh);%采用零阶保持器离散化之后的被控对象脉冲传函sysc=Gs*Gp;sysd=Gz*Gpz;%画出离散化前后系统的bode图,比较性能差异figure(1);bode(sysc, r-, sysd, b-. );axis();grid;T=feedback(sysd,1);%离散系统的闭环传函(单位反馈)figure(2),step(T,20);C源程序: #include #include #define uint unsigned int sbit ADRD=P20; sbit ADWR=P21; sbit INTR=P22; static float ek=0; static float ek_1=0; static float uk=0; static float uk_1=0;/以上四个变量存储用于计算每次输出的值 void Init() P0=0X00;/由于P0为D/A的输入口,而D/A为直通工作方式故初始化其为0 P1=0x00;/P1口为读A/D的数据口,将其初始化为全1 P2=0xff;/P2口控制A/D的读写端,将其初始化为全1,使A/D芯片不工作 P3=0xff; void main() Init(); /初始化 注意,一定要先声明变量,在进行其他操作,否则会出现许多奇怪的错误 TMOD=0x01;/设置定时器TO为工作方式1 TH0=(65536-10000)/256; TL0=(65535-10000)%256; PT0=1;/设置定时器中断0优先级最高 EA=1; /开总中断 ET0=1;/开外部中断0 TR0=1;/启动定时器T0 while(1);/主程序进入循环,等待中断产生 void T0_time(void) interrupt 1 TH0=(65536-10000)/256;/重装初值 TL0=(65535-10000)%256; INTR=1;/先将其置高,A/D转换结束时,其将变为低电平 /下面启动A/D转换 ADWR=1; _nop_(); ADWR=0;/拉低WR,启动A/D转换 _nop_(); ADWR=1; while(INTR); /INT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论