毕业设计(论文)-MATLAB在自动控制中的应用.doc_第1页
毕业设计(论文)-MATLAB在自动控制中的应用.doc_第2页
毕业设计(论文)-MATLAB在自动控制中的应用.doc_第3页
毕业设计(论文)-MATLAB在自动控制中的应用.doc_第4页
毕业设计(论文)-MATLAB在自动控制中的应用.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

实习报告- 34 - 实习者:刘帅辉班 级:自043学 号:11指导老师:杜艳丽实习时间:2007-7-6目 录1、实习任务 32、实习内容.43、实习要求31、熟悉matlab软件.1032、建立simulink模块并仿真.2533、运用matlab进行编程.274、试验结果.335、心得体会.346、参考文献.341 实习任务1.1 熟悉软件通过一周的实习时间,对matlab有所了解,并能简单的进行数值计算和处理。熟悉matlab在自动控制中的应用技巧,学会运用matlab对自动控制中的相关系统进行定性分析,便于工程控制与设计。并能通过简单的比较,判断出系统整体的优越性和局限性,适当的进行修整和调节。1.2 学会仿真学会通过简单的自动控制模块,建立具有一定功能的控制系统,并借助仿真确定参数的优劣性,同时通过改变参数来确定最优参数。实现自动控制的最简设计,提高工作效率,降低成本。1.3 编程思想在理解simulink仿真的基础上将系统仿真的实现思想,通过matlab的编程语言体现出来,并比较两者在控制思想和控制算法上的差别和联系。更深层的理解matlab的运算方式,利于将来的实际应用中,同时将所学内容和实际控制联系起来,通过仿真从理论上对现实进行指导,借助现实控制中的控制理念对仿真进行调整,达到有机结合。本实习意将所拥有的软件充分利用上,并将其有机的与现学内容达成优势互补。同时进一步提升学生的学习兴趣,能够通过简单的软件仿真,加深对本专业的控制思想和理念的理解。2 实习内容2.1 matlab概况matlab是矩阵实验室(matrixlaboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。 matlab的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用matlab来解算问题要比用c,fortran等语言完相同的事情简捷得多。 当前流行的matlab5。3/simulink3。0包括拥有数百个内部函数的主包和三十几种工具包(toolbox)。工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充matlab的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。 开放性使matlab广受用户欢迎。除内部函数外,所有matlab主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。 2.2 历史背景在70年代中期,clevemoler博士和其同事在美国国家科学基金的资助下开发了调用eispack和linpack的fortran子程序库。eispack是特征值求解的foetran程序库,linpack是解线性方程的程序库。在当时,这两个程序库代表矩阵运算的最高水平。 到70年代后期,身为美国newmexico大学计算机系系主任的clevemoler,在给学生讲授线性代数课程时,想教学生使用eispack和linpack程序库,但他发现学生用fortran编写接口程序很费时间,于是他开始自己动手,利用业余时间为学生编写eispack和linpack的接口程序。clevemoler给这个接口程序取名为matlab,该名为矩阵(matrix)和实验室(labotatory)两个英文单词的前三个字母的组合。在以后的数年里,matlab在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传。1983年春天,clevemoler到standford大学讲学,matlab深深地吸引了工程师johnlittle。johnlittle敏锐地觉察到matlab在工程领域的广阔前景。同年,他和clevemoler,stevebangert一起,用c语言开发了第二代专业版。这一代的matlab语言同时具备了数值计算和数据图示化的功能。1984年,clevemoler和johnlittle成立了mathworks公司,正式把matlab推向市场,并继续进行matlab的研究和开发。在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类。一类是数值计算型软件,如atlab,xmath,gauss等,这类软件长于数值计算,对处理大批数据效率高;另一类是数学分析型软件,mathematica,maple等,这类软件以符号计算见长,能给出解析解和任意精确解,其缺点是处理大量数据时效率较低。mathworks公司顺应多功能需求之潮流,在其卓越数值计算和图示能力的基础上,又率先在专业水平上开拓了其符号计算,文字处理,可视化建模和实时控制能力,开发了适合多学科,多部门要求的新一代科技应用软件atlab。经过多年的国际竞争,matlab以经占据了数值软件市场的主导地位。在matlab进入市场前,国际上的许多软件包都是直接以fortranc语言等编程语言开发的。这种软件的缺点是使用面窄,接口简陋,程序结构不开放以及没有标准的基库,很难适应各学科的最新发展,因而很难推广。matlab的出现,为各国科学家开发学科软件提供了新的基础。在matlab问世不久的80年代中期,原先控制领域里的一些软件包纷纷被淘汰或在matlab上重建。mathworks公司1993年推出了matlab4。0版,1995年推出4。2c版(forwin3。x)1997年推出5。0版。1999年推出5。3版。matlab5。x较matlab4。x无论是界面还是内容都有长足的进展,其帮助信息采用超文本格式和pdf格式,在netscape3。0或ie4。0及以上版本,acrobatreader中可以方便地浏览。时至今日,经过mathworks公司的不断完善,matlab已经发展成为适合多学科,多种工作平台的功能强大大大型软件。在国外,matlab已经经受了多年考验。在欧美等高校,matlab已经成为线性代数,自动控制理论,数理统计,数字信号处理,时间序列分析,动态系统仿真等高级课程的基本教学工具;成为攻读学位的大学生,硕士生,博士生必须掌握的基本技能。在设计研究单位和工业部门,matlab被广泛用于科学研究和解决各种具体问题。在国内,特别是工程界,matlab一定会盛行起来。可以说,无论你从事工程方面的哪个学科,都能在matlab里找到合适的功能。2.3 语言特点一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点,正如同fortran和c等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的matlab,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。matlab最突出的特点就是简洁。matlab用更直观的,符合人们思维习惯的代码,代替了c和fortran语言的冗长代码。matlab给用户带来的是最直观,最简洁的程序开发环境。以下简单介绍一下matlab的主要特点。1)、语言简洁紧凑,使用方便灵活,库函数极其丰富。matlab程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。可以说,用matlab进行科技开发是站在专家的肩膀上。具有fortran和c等高级语言知识的读者可能已经注意到,如果用fortran或c语言去编写程序,尤其当涉及矩阵运算和画图时,编程会很麻烦。例如,如果用户想求解一个线性代数方程,就得编写一个程序块读入数据,然后再使用一种求解线性方程的算法(例如追赶法)编写一个程序块来求解方程,最后再输出计算结果。在求解过程中,最麻烦的要算第二部分。解线性方程的麻烦在于要对矩阵的元素作循环,选择稳定的算法以及代码的调试动不容易。即使有部分源代码,用户也会感到麻烦,且不能保证运算的稳定性。解线性方程的程序用fortran和c这样的高级语言编写,至少需要四百多行,调试这种几百行的计算程序可以说很困难。以下用matlab编写以上两个小程序的具体过程。matlab求解下列方程,并求解矩阵a的特征值。ax=b,其中:a=32134567 23798512 43235465 98347135 b=1 2 3 4 解为:x=ab;设a的特征值组成的向量e,e=eig(a)。 可见,matlab的程序极其简短。更为难能可贵的是,matlab甚至具有一定的智能水平,比如上面的解方程,matlab会根据矩阵的特性选择方程的求解方法,所以用户根本不用怀疑matlab的准确性。2)、运算符丰富。由于matlab是用c语言编写的,matlab提供了和c语言几乎一样多的运算符,灵活使用matlab的运算符将使程序变得极为简短。3)、matlab既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。4)、程序限制不严格,程序设计自由度大。例如,在matlab里,用户无需对矩阵预定义就可使用。5)、程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。6)、matlab的图形功能强大。在fortran和c语言里,绘图都很不容易,但在matlab里,数据的可视化非常简单。matlab还具有较强的编辑图形界面的能力。7)、matlab的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于matlab的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。8)、功能强大的工具箱是matlab的另一特色。matlab包含两个部分:核心部分和各种可选的工具箱。核心部分中有数百个核心内部函数。其工具箱又分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能。功能性工具箱用于多种学科。而学科性工具箱是专业性比较强的,如control、toolbox、signl processing toolbox、commumnication toolbox等。这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,而直接进行高、精、尖的研究。9)、源程序的开放性。开放性也许是matlab最受人们欢迎的特点。除内部函数以外,所有matlab的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。matlab(matrixlaboratory)自1984年问世以来,历经了实践的检验、市场的筛选和时间的凝练,现在已经成为广大科研工作者、高校师生最常用和最可信赖的仿真软件。matlab的影响表现在两方面:传统分析方法、设计程式和教材内容在matlab平台上可以处理得更为简捷、精确和生动多彩;新的分析方法、设计程式和教材内容正在matlab的推动下不断地萌发。3 实习要求3.1 熟悉matlab软件3.1.1 数值运算1)、等差元素向量生成演示 x1=1:2:9运行结果为:x1 = 1 3 5 7 9 x2=linspace(10,-2,5)运行结果为:x2 =10 7 4 1 -22)、数组相除运算演示 a=1 3 5;2 4 6;3 5 7; b=2 4 6;1 3 5;3 5 7; c=a.bc = 2.0000 1.3333 1.2000 0.5000 0.7500 0.8333 1.0000 1.0000 1.0000 c=a./bc = 0.5000 0.7500 0.8333 2.0000 1.3333 1.20001.0000 1.0000 1.00003)、求象函数的拉氏反变换。 syms t s; fs11=2/(s+1)-1/(s+2); fs12=1/(s+1)-1/(s+2); fs21=-2/(s+1)+2/(s+2); fs22=-1/(s+1)+2/(s+2); fs=fs11,fs12;fs21,fs22; mt=ilaplace(fs) mt = 2*exp(-t)-exp(-2*t), exp(-t)-exp(-2*t) -2*exp(-t)+2*exp(-2*t), -exp(-t)+2*exp(-2*t)即:4)、求解方程组 a,u,v=solve(a*u2+v2,u-v=1,a2-5*a+6) a = 2 2 3 3 u = 1/3+1/3*i*2(1/2) 1/3-1/3*i*2(1/2) 1/4+1/4*i*3(1/2) 1/4-1/4*i*3(1/2) v = -2/3+1/3*i*2(1/2) -2/3-1/3*i*2(1/2) -3/4+1/4*i*3(1/2) -3/4-1/4*i*3(1/2)3.1.2 图形显示matlab软件不同于其他数学软件的一大特点就是,它除了具有绘制一般图形的功能外,还可以绘制较为复杂的三维图形,这也是它得以普及的一个原因。1)、绘制简单二维图形plot(inv(hilb(12)plot(inv(hilb(12)2)、绘制三维图形 x,y=meshgrid(-16:0.5:16); r=sqrt(x.2+y.2)+eps; z=sin(r)./r; surf(x,y,z)运行后得到的曲面如图所示:3)、电气工程中的应用(此种应用多采用m文件的编程方式,运用较为简便)1、半波整流器电路的仿真%半波整流clear;clc,clfclf可以清除图形窗口中的图形pi=3。14159265;vp=10;%循环命令for i=1:1:101 t(i)=(i-1)*6*pi/100; vi(i)=vp*sin(t(i); if vi(i)=0。7 vo(i)=vi(i)-0。7; else vo(i)=0; endendplot(t,vi,t,vo,*);grid on;axis(0 6*pi-vp vp);xlabel(t);ylabel(vin and vout);title(半波整流器);legend(原波形,整流波形);运行后图形如下:2、全波整流器电路的仿真%全波整流器clear;clc;close;pi=3。14159265;vp=10;%循环命令for i=1:1:601; t(i)=(i-1)*6/600; vi(i)=vp*sin(t(i); if 0。5*vi(i)-0。7 vo(i)=0。5*vi(i)-0。7; else vo(i)=0; end if 0。5*vi(i)a(i) t=a(j); a(j)=a(i); a(i)=t; end endenda运行结果如下:k a=10 -6 2;k returna =10 2 -63.1.4 创建m文件1、创建m文件并命名为xueshengchengjiguanli.m学生成绩管理for i=1:10 ai=89+i; bi=79+i; ci=69+i; di=59+i;endc=d,c;name=jack,marry,peter,rose,tom;%元胞数组mark=72,83,56,94,100;rank=cell(1,5);%创建一个含5个元素的元胞数组s,它有三个域s=struct(name,name,marks,mark,rank,rank);%根据学生的分数,求出相应的等级for i=1:5 switch s(i).marks case 100 s(i).rank=满分; case a s(i).rank=优秀; case b s(i).rank=良好; case c s(i).rank=及格; otherwise s(i).rank=不及格; endend%将学生姓名,得分,登记等信息打印出来disp(学生姓名,得分, 等级);disp()for i=1:5; disp(s(i).name,blanks(6),num2str(s(i).marks),blanks(6),s(i).rank);end点击编辑调试器的菜单,运行,结果:学生姓名得分 等级jack 72 及格marry 83 良好peter 56 不及格rose 94 优秀tom 100 满分也可以通过在matlab编辑器中键入xueshengchengjiguanli如下:xueshengchengjiguanli学生姓名得分 等级jack 72 及格marry 83 良好peter 56 不及格rose 94 优秀tom 100 满分2、运用while语句计算所有小于1000的fribonnaci数。用while语句求所有小于1000的fribonnaci数 f=1,1;i=1;while f(i)+f(i+1) name 姓名:刘帅辉 性别:男 年龄:25 班级:自04-3 学号:11 学院:电气信息工程学院 专业:自动化 fenshu 高数:89 拖动:93 现控:92 英语:80 short short:lsh xueshengchengjiguanli学生姓名得分 等级jack 72 及格marry 83 良好peter 56 不及格rose 94 优秀tom 100 满分3.2 simulink仿真3.2.1 闭环pid控制闭环传递函数为:,建立闭环pid控制系统如下:设定仿真时间为30s,逐步调节pid各参数使仿真图形中上升时间短,超调量小,稳态误差小。最终确定pid各参数值分别为:kp15,ki4.8,kd10,仿真图形如下图:3.2.2 电气仿真控制构建下图所示的rc电路,直流电源10v,电阻,。需要观察:1、流过电阻的电流波形;2、电容器端电压波形。仿真运行后,在matlab命令窗口中键入如下命令: plot(dc_vc);xlabel(时间t/ms),ylabel(电流i/a 电压uc/v);gridtitle(交流电压源电路中电流和电阻端电压波形)3.3 matlab编程3.3.1 增量式pid控制算法pid控制算式为:式中,u(k)为控制的输出;e(k)为k时刻的偏差;kp、ki、kd分别为pid控制算法的比例系数、积分系数和微分系数。pid控制算法clear all;close all;ts=0.1;sys=tf(1,1,3,1);dsys=c2d(sys,ts,z);num,den=tfdata(dsys,v);u_1=0.0;u_2=0.0;u_3=0.0;y_1=0;y_2=0;y_3=0;x=0,0,0;error_1=0;error_2=0;for k=1:1:300 time(k)=k*ts; rin(k)=1; kp=3; ki=0.12; kd=0.1; du(k)=kp*x(1)+ki*x(2)+kd*x(3); u(k)=u_1+du(k); if u(k)=10 u(k)=10; end if u(k)=-10 u(k)=-10; end yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2; error=rin(k)-yout(k); u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yout(k); x(1)=error-error_1; % p x(2)=error; % i x(3)=error-2*error_1+error_2; % d error_2=error_1; error_1=error;endplot(time,rin,b,time,yout,r);xlabel(time(s);ylabel(rin,yout);运用以上编程控制方法,也可以很好的达到控制目的。由于控制算法的不同最终控制各参数的值也不尽相同。simulink仿真和编程仿真控制pid各参数分别为15、4.8、10和3、0.12、0.1。但最终都实现了较好的控制效果。通过这两种不同仿真方式,可以很明显的看出运用simulink的效果更好一些,自行分析问题认为pid控制算法和控制思想不尽完善。3.3.2 个人图像信息动态显示function flames%flames creates an animation of the mathworks logo rising through flames% copyright (c) 1984-2000 by the mathworks, inc.% $revision: 1.4 $figure(menubar,none,numbertitle,off,name,demo,userdata,1);set(gcf,doublebuffer,on,renderer,painters,resize,off);menu1 = uimenu(label,&file);menu12 = uimenu(menu1,label,&open);menu13 = uimenu(menu1,label,e&xit);menu2 = uimenu(label,&edit);menu22 = uimenu(menu2,label,&cut);menu3 = uimenu(label,&liu shuai hui);menu31 = uimenu(menu3,label,&liu);menu32 = uimenu(menu3,label,&shuai);menu33 = uimenu(menu3,label,&hui);%only function calls are allowed in the c/c+ graphics library callbacks set(menu12,callback,set(gcf,name,););set(menu13,callback,set(gcf,userdata,););x=;load ranshao.mat xa,b = size(x);x = ones(a,b)*.001;x(end,:) = 203;x(end-1,:) = 140;x(end-2,:) = 60;theimage = image(x);set(theimage,cdatamapping,direct);colormap(hot(280);0 0 0);axis off;axis image;set(gca,ylim,1 size(x,1)-2);set(gca,units,pixels,position,15 15 3.5*a+40 3.5*b+40);thesize = get(0,screensize);set(gcf,units,pixels,position,. (thesize(3)-(4*a+90)/1.5 (thesize(4)-(3.5*b+120)/1.5 (3.5*a+70) (3.5*b+80),. color,0 0 0);animate_it(theimage,x);%all figures must be closed for a c/c+ graphics library%application to exitclose all;function animate_it(theimage,thelogo);%the algorithm used takes the last image used and based on a pixel-by-pixel%basis deterime the next image. it uses the following rule for pixel x: that%the new pixel value is based on the old value plus the two pixels below and %the two pixels two down and one to the right and left. add in a bit of %randomness, normalize the matrix to one, and where ever the picture%is 1, set that pixel to one.x = get(theimage,cdata);a,b = size(x);%pre-allocation of matricies speed up loopsthezeros = zeros(a,1);thezeros2 = zeros(1,b);theones = ones(1,b);therand = rand(a,b);thelogical = thelogo(1:end,:);%this loop causes the logo to rise.for i = 1:a-1 if isempty(get(gcf,userdata) therand = therand(3:end,:);therand(1:2,:); movedup = x(2:end,:);theones; movedup2 = movedup(2:end,:);theones; upandleftandright = (movedup2(:,2:end),thezeros) + . (thezeros,movedup2(:,1:end-1); thetemp = therand .* x*0.8; x = thetemp + thetemp + movedup + upandleftandright + movedup2 ; x = x ./ max(max(x); x(zeros(a-i-1,b);thelogo(1:i+1,:)=1) = 1; set(theimage,cdata,x.*210); drawnow; endend%this while loop just keeps cycling the flames until the wind

温馨提示

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

评论

0/150

提交评论