matlab课程设计MATLAB应用及系统仿真.docx

上传人:b****4 文档编号:5239467 上传时间:2022-12-14 格式:DOCX 页数:25 大小:641.02KB
下载 相关 举报
matlab课程设计MATLAB应用及系统仿真.docx_第1页
第1页 / 共25页
matlab课程设计MATLAB应用及系统仿真.docx_第2页
第2页 / 共25页
matlab课程设计MATLAB应用及系统仿真.docx_第3页
第3页 / 共25页
matlab课程设计MATLAB应用及系统仿真.docx_第4页
第4页 / 共25页
matlab课程设计MATLAB应用及系统仿真.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

matlab课程设计MATLAB应用及系统仿真.docx

《matlab课程设计MATLAB应用及系统仿真.docx》由会员分享,可在线阅读,更多相关《matlab课程设计MATLAB应用及系统仿真.docx(25页珍藏版)》请在冰豆网上搜索。

matlab课程设计MATLAB应用及系统仿真.docx

matlab课程设计MATLAB应用及系统仿真

课程设计

课程设计

课程名称:

《MATLAB语言及系统仿真》

设计题目:

MATLAB应用及系统仿真

学院:

电气信息学院

学系:

电气自动化研究所

专业:

电气工程及其自动化

年级:

学号:

姓名:

指导老师:

 

2012年6月30日

 

课程设计任务书

一.本课程设计的目的

(1)熟练掌握MATLAB的基本知识和技能,解决简单系统的仿真问题;

(2)掌握基本MATLAB的绘图与GUI的设计方法;

(3)掌握线性微分方程的求解方法及控制系统的分析方法;

(4)掌握Simulink的模型建立和仿真方法;

(5)理解电气系统仿真、虚拟现实仿真和机构系统仿真的应用;

(6)培养分析、解决问题的能力,提高实验报告和科技论文写作能力。

二.课程设计的时间

第14周至16周,在第18周的周末(6月30日)前提交到课程网站上。

三.课程设计的任务

应用MATLAB和工具箱完成以下的系统设计与仿真。

1.绘图与GUI的设计;(20分)

2.利用Simulink建立以下的模型并进行仿真分析:

(40分)

1).线性微分2).时域分析3).频域分析4).误差分析

3.工具箱的应用;

1).电气系统仿真分析(8分)

2).利用Stateflow实现简单的计数器(8分)

3).利用VR完成飞机围绕摩天大楼作环形飞行;(8分)

4).球体的变形仿真;(8分)

5).建立平面四连杆连杆仿真模型。

(8分)

四.课程设计的要求

1.系统软件界面设计美观,控件摆放整齐,通过菜单能打开相应模型,并能进行分析;

2.程序调试通过后,完成程序文档的处理,源代码添加必要的注释和功能说明;

3.粘贴所建立的模型图,开始运行的视图和结束时的视图(可粘多个用以说明操作过程或参数设置,每个图的下方要有文字说明图的标题);

4.写出心得体会;

5.按照课程设计模板的规格书写本课程设计报告;

6.提交文件格式:

(XXXX---为学号后四位)

将课程设计报告的电子文档单独提交,将系统开发的所有文件放到一个文件夹里打包后上传到课程网站上;

1课程设计报告:

MXXXX.doc

2系统开发文件打包为MXXXX.rar。

五、创新要求

在完成本课题的基础上,如有能力和时间可以增加一些创新特色,完成更多功能和界面设计得更加完美。

评阅人:

   成绩:

年月日

课程设计报告

——MATLAB应用及系统仿真

一.绘图与GUI的设计

1.参照例题,完成如下的GUI界面设计

2.参照下表设计系统菜单

Menu

Menuitem

备注

Lable

Tag

Lable

Tag

文件

File

打开

Open

保存

Save

打印

Print

关闭

Close

系统仿真

Simulat

线性微分

Diff

4.2

时域分析

Times

4.4

频域分析

Frequency

例14-10

误差分析

err_ansy

5.2

工具应用

Tools_APP

电气仿真

计数器

Counter

Stateflow

飞行

Fly

VR

变形

Transf

VR

四连杆

Fourbar

关于

About

退出

Exit

“关于”菜单能够打开一个新的窗口,显示你的软件信息,至少包含你的学号和姓名。

“退出”菜单直接退出系统。

“关闭”菜单,应能弹出一对话框,确认是否退出。

二.利用Simulink建立以下的模型并进行仿真分析

(一).建立线性微分方程的模型,并绘制仿真结果曲线.

1.建立模型ex4_2.mdl:

建立Simulink仿真模型:

2.系统仿真参数设置:

①在模型的initFcn回调函数中加入初始条件:

t=1;

在模型的StopFcn回调函数中加入作图命令:

plot(tout,yout);

②在系统菜单中添加响应函数:

if(findobj('userdata',gcb))

disp('仅可打开一个模型');

else

open_system('ex4_2');

end

3.仿真结果分析:

(图及简单说明)

仿真结果为:

利用ode45()求解题目中所给的微分方程,仿真时间设置为10s,仿真结果说明调用函数ode45()是可行的。

(二).时域分析

1.建立模型:

建立起如下图所示的非线性系统的Simulink框图,并观察在单位阶跃信号输入下系统的输出曲线和误差曲线。

建立Simulink仿真模型:

2.系统仿真参数设置:

①在模型的StopFcn回调函数中加入作图命令:

subplot(2,1,1);

plot(tout,yout(:

1));

title('out1');

subplot(2,1,2)

plot(tout,yout(:

2));

title('out2');

②在系统菜单中添加响应函数:

if(findobj('userdata',gcb))

disp('仅可打开一个模型');

else

open_system('shiyufenxi');

end

3.仿真结果分析:

(图及简单说明)

仿真结果为:

利用ode45()函数进行仿真,仿真时间设置为10s。

图中out1曲线为输出曲线,out2曲线为误差曲线,从误差曲线可知,2s内误差约为于0,仿真结果的精度较高;2~5s的时间内,误差在±50以内,仿真结果的精度较好;5~10s的时间内,误差曲线先上升再下降,在6s左右时误差达到最大。

(三).频域分析

1.题目:

单位负反馈系统的开环传递函数为

试绘制闭环系统的Bode图、Nyquist图和Nichols图,并给出闭环频率特性性能指标谐振峰值、谐振频率和系统带宽。

建立Simulink仿真模型:

2.系统仿真参数设置及程序代码:

①在模型的stopFcn回调函数中加入作图命令:

s=tf('s');

Gk=1/s/(0.5*s+1)/(s+1);

G=feedback(Gk,1);%闭环系统的传递函数

w=logspace(-1,1);%从10-1~101共50个频率值

[mag,phase,w]=bode(G,w);%返回闭环系统Bode图参数

[Mp,k]=max(mag);%谐振峰值

resonantPeak=20*log10(Mp)%谐振峰值单位转换

resonantFreq=w(k)%谐振频率

n=1;

while20*log10(mag(n))>=-3

n=n+1;

end

subplot(2,1,1)

nyquist(G,w)

subplot(2,1,2)

nichols(G,w)

figure

(2);

bandwidth=w(n)%系统带宽

bode(G,w),grid;%系统Bode图

②在系统菜单中添加响应函数:

if(findobj('userdata',gcb))

disp('仅可打开一个模型');

else

open_system('pinyufenxi');

end

3.仿真结果分析:

(图及简单说明)

第1个图形是系统的Bode图;第2个图的上面那块是系统的Nyquist图;下面那块图形是系统的Nichols图。

闭环频率特性性能指标——谐振峰值、谐振频率和系统带宽,分别是:

谐振峰值:

resonantPeak=5.2388

谐振频率:

resonantFreq=0.7906

系统带宽:

bandwidth=1.2649

(四).误差分析

1.题目:

对如下系统模型,假设已知误差信号e(t),试增加求取ITAE,ISE,ISTE准则的封装模块。

要求:

误差信号e(t)为该模块的输入信号,双击该模块弹出一个对话框,允许用户用列表框的方式选择输出信号形式、待选定的ITAE,ISE,ISTE之一作为模块的输出端显示出来。

在系统回调函数中,绘制所选定准则的曲线图。

控制系统框图

系统模型图

建立Simulink仿真模型:

2.系统仿真参数设置及程序代码:

①在模型的stopFcn回调函数中加入作图命令:

subplot(2,1,1);

plot(tout,yout(:

1));

title('Output');

subplot(2,1,2);

plot(tout,yout(:

2));

title('Error');

②在系统菜单中添加响应函数:

if(findobj('userdata',gcb))

disp('仅可打开一个模型');

else

open_system('work4');

end

3.仿真结果分析:

(图及简单说明)

系统输出曲线和ITAE曲线如下图所示:

系统输出曲线和ISE曲线如下图所示:

系统输出曲线和ISTE曲线如下图所示:

三.工具箱的应用

(一).实现一个电气系统仿真模型(P317中3,4,5之一)

操作过程描述

第1步:

打开simulink,新建一个model并保存为b763b.mdl;

第2步:

建立相应的电路,并接入电压源、三极管的工作电压源和电压表,还有各种信号源(如ChirpSignal信号、RepeatingSequence信号和Step信号等);

第3步:

更改各元件的名称并设置相应的参数,其中电阻设为

,电容设为

,正弦信号的Frequency(rad/sec)设置为10,三极管的工作电压源(PositiveSupplyRain)的Constantvoltage设置为

第4步:

在模型的stopFcn回调函数中加入作图命令:

plot(tout,yout);

仿真模型

建立Simulink仿真模型:

仿真参数设置

在系统菜单中添加响应函数:

if(findobj('userdata',gcb))

disp('仅可打开一个模型');

else

open_system('b763b');

end

系统仿真分析及结果图:

仿真结果如图所示

 

ChirpSignal信号RepeatingSequence信号

Ramp信号SineWave信号

Step信号

 

(二).用Stateflow实现一个简单的计数器

操作过程描述

具体操作步骤为:

第1步:

打开simulink,新建一个model并保存为time.mdl;

第2步:

在新建的model中添加stateflow模块中的chart、sourse模块中的PulseGenerator和Sinks模块中的Out1;

第3步:

双击chart,进入stateflow的编辑器,点击tool菜单下的explore,在左边支开的time中选中chart,添加一个事件和两个数据,并进行相关的设置

第4步:

在stateflow编辑器中画出状态图并进行相关的设置

第5步:

在time.mdl窗口下将simulationparameters的stoptime改成200,并在模型的InitFcn回调函数中加入初始条件:

maxtime=10;同时在stopFcn回调函数中加入作图命令:

plot(tout,yout)

仿真模型

建立Simulink仿真模型:

chart内部设计

仿真参数设置

①Simulink模型的参数设置:

②在系统菜单中添加响应函数:

if(findobj('userdata',gcb))

disp('仅可打开一个模型');

else

open_system('time');

end

系统仿真分析及结果图:

仿真结果如图所示:

(三).利用VR完成飞机围绕摩天大楼作环形飞行。

实现例5-29飞机围绕摩天大楼作环形飞行模拟显示。

简单描述操作过程:

具体操作步骤为:

第1步:

在VR-Builder2中新建一个虚拟世界,单击“背景”按钮给虚拟世界添加背景,并在groundColor中,进行颜色设置。

第2步:

选择Library|Importfrom|ObjectsLibrary,从Archetecture(Building)组中选择Skyscraper对象,将它拖到虚拟现实对象编辑窗口,改写其名称为Skyscraper,并修改相关属性

第3步:

选择Library|Importfrom|ObjectsLibrary,从Transportation(Air)组中选择Boeing737对象,将它拖到虚拟现实对象编辑窗口,改写其名称为Plane,并修改相关属性。

保存文件,命名为“myvrml5.wrl”。

第4步:

打开simulink,新建一个model并保存为myvrml5.mdl;按照下面Simulink模型建立相应的模型,并把VRSink模块复制到model中。

第5步:

双击VRSink,在Sourcefile中选择myvrml5.wrl,然后在右侧树形浏览框中,打开Plane节点,选择center和scale选项,用来在Simulink模型中接收信号。

第6步:

把Plane.center和Plane.rotation两个输入端子接入到已建立的Simulink模型中,保存后运行。

建立Simulink仿真模型:

在系统菜单中添加响应函数:

if(findobj('userdata',gcb))

disp('仅可打开一个模型');

else

open_system('myvrml5');

end

系统仿真结果图:

双击打开VRSink界面,并点击开始运行,飞机就围绕摩天大楼顺时针且向上飞行,如下图所示。

飞行过程中

飞行结束时

(四).球体的变形仿真

定义两个块体表示刚性平面(B1,B2),在两个平面之间定义一个球体(S),三个物体是是沿X轴对齐的,两个块体以同样的速度向球体S移动,当两个块体接触到球体时,球体开始变形,沿X轴收缩,Y轴和Z轴膨胀。

 

物体

中心位置

物体尺寸

B1

[300]

[0.311]

B2

[-300]

[0.311]

S

[000]

r=0.9

操作过程描述:

具体操作步骤为:

第1步:

在VR-Builder2中新建一个虚拟世界,单击“背景”按钮给虚拟世界添加背景,并在groundColor中,进行颜色设置。

第2步:

在NewWorld中新增一个BOX块体B2,并修改相关属性:

在Translation中,修改块体的中心位置为[-300];在Sphere---Box中,修改块体的大小为[0.311];在Shape---Material---diffuseColor中,修改块体的颜色。

第3步:

在NewWorld中新增一个BOX块体B1,并修改相关属性:

在Translation中,修改块体的中心位置为[300];在Sphere---Box中,修改块体的大小为[0.311];在Shape---Material---diffuseColor中,修改块体的颜色。

第4步:

修改球体S的相关属性:

在Sphere---Radius中,修改球体的半径为0.9;在Shape---Material---diffuseColor中,修改球体的颜色,同时保存文件,命名为“myvrml.wrl”。

第5步:

在MATLAB工作空间中输入“vrtut3”,在打开的Simulink模型中加入Simulink3DAnimation模块中的VRSink,并保存为“myvrml.mdl”。

第6步:

双击VRSink,在Sourcefile中选择myvrml.wrl,然后在右侧树形浏览框中,分别打开B2、B1和S节点,分别选择translation,translation和Scale选项,用来在Simulink模型中接收信号。

第7步:

将连接到Scope模块的信号线,相应连接到VRSink上,保存后运行。

Simulink模型:

VRSink内部界面设计:

在系统菜单中添加响应函数:

if(findobj('userdata',gcb))

disp('仅可打开一个模型');

else

open_system('myvrml');

end

系统仿真分析及结果图:

双击打开VRSink界面,点击开始运行,两个块体开始同时按相同的速度向中间的球体运动,在未接触前球体保持静止状态。

在两个块体接触到球体时,球体开始被挤压变形,直到最后球体被完全压扁,如下图所示。

两个块体向球体运动时:

球被压扁时

(五).建立平面四连杆仿真模型

实现例7-17平面四连杆机构的运动仿真。

①简单描述操作过程:

仿真框图绘制:

仿真框图绘制过程见课本310~311页“仿真框图绘制”;

模块参数设置

模块参数设置见课本311~312页“模块参数设置”;

仿真参数设置

仿真参数设置见课本314页“仿真参数设置”

在系统菜单中添加响应函数:

if(findobj('userdata',gcb))

disp('仅可打开一个模型');

else

open_system('c7mmech4');

end

②Simulink模型:

3系统仿真分析

系统仿真分析见课本314~315页。

④系统仿真运行图:

四.课程设计心得与体会(500字以上)

心得与体会:

以下是自己在课程设计的完成过程中遇到的一些问题以及得到的一些心得:

控件重叠的问题:

当控件位置有重叠时,直接放置方式与程序描绘方式不兼容。

直接放置方式是指在GUI设计窗口中放置axes控件,程序描绘方式是指在程序中利用plot、subplot函数作图。

在同一个fig文件中,如果axes位置有重叠,那么放置的axes控件句柄会消失,变成无效句柄,即出现Invalidhandle的错误。

所以,其位置不应发生重叠。

参数传递的问题:

保存:

存在handle的ApplicationData中――利用setappdata函数将数据保存在对象的“ApplicationData”属性中,利用getappdata函数从对象的“ApplicationData”属性中提取数据,如果没有定义,就为空。

例如,假设figure的tag属性是figure1,则setappdata(handles.figure1,’A’,A)就可以把变量A存放到figure1的“ApplicationData”属性中,名字为A。

访问:

保存在handles里面,因为Tag是唯一标识控件的属性,所以如果一个控件的Tag属性是a,那么,在fig对应的m文件中,只要含有“handles”作为其输入参数的函数中,就可以使用handles.a对该控件进行访问。

其次,可以利用这种方法把自定义的变量保存在handles里面进行存取。

当模型仿真时间设置不同值时,可能得到不一样的仿真图形,故应该选择合适的仿真时间。

在模型的File/ModelProperties/callbacks/Fcn中加plot(tout,yout),能够实现模型运行后直接弹出图形框的效果。

球体变形仿真中两版不能压到球的问题:

应将仿真时间设置得大一些,亦可以设置成Inf。

Stateflow实现简单的计数器不能计数的问题:

应将maxtime这个data的scope参数改成paramer,而非constant。

利用VR完成飞机围绕摩天大楼作环形飞行时,在添加飞机时,要注意不要将飞机添加到摩天大楼使他们成为一个整体,导致后面不能完成设计。

总的来说,课程设计的完成对自己在Matlab应用的综合能力有不小的提升,通过与同学的交流,学习,不断提高,体味到在学习中通过交流解决疑问的乐趣和重要性。

五.参考文献

(1)薛定宇,陈阳泉,基于MATLAB/Simulnk的系统仿真技术与应用,北京:

清华大学出版社,2011

(2)赵广元,MATLAB与控制系统仿真实践,北京:

北京航空航天大学出版社,2009

(3)黄永安,马路,刘慧敏.MATLAB7.0/Simulnk6.0建模仿真开发与高级工程应用,北京:

清华大学出版社,2005

(4)张家祥,方凌江,毛全胜.基于MATLAB6.X的系统分析与设计——虚拟现实,西安电子科技大学出版社,2002

(5)

(6)你补充的其他资料

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1