




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计 报 告船舶航向实验系统及航向控制器的设计与仿真姓 名: XXX 专业班级: 学 号: 指导老师: 颜德文 2012年12月21日摘 要本课程设计利用Matlab环境中的Simulink仿真工具箱和友好的GUI界面,设计了船舶航向实验系统所需的航向控制器。该航向控制器通过实物仿真,帮助学生更直观地理解航向控制的过程,增强感性认识,培养学生的研究能力、综合应用能力和创新能力;同时本课程设计所设计的船舶航向控制器是一个开放的平台,有兴趣的同学可以根据需要添加相应的程序来实现所需功能。文中基于Matlab /GUI的串口通信功能的编程实现表明利用Matlab/ GUI可以进行包含一般界面元素的界面开发,在此基础上,加入串口通信功能,实现数据的实时采集与分析处理,并进行图形化显示。在实物仿真中通过串口将计算机与船舶模型连接构成闭环船舶航向控制系统,利用Simulink中的控制器控制船舶模型,此控制器可直接使用工具箱中的控制器和也可使用设计好的控制器,更换方便,操作简单,易于实现。 图形用户界面(Graphical User Interface,简称GUI )是提供人机交互的工具和方法。Matlab用一个包含多种不同风格用户控件对象的图形窗口代表用户界面。用户必须对每一个对象进行编程,使用户在GUI中的行为能够达到相应的目的。Matlab/GUI是一种新型的图形用户界面开发方式,特别适合能够熟练运用Matlab语言进行仿真但是对VC界面开发了解不够深入的科技工作者。本课程设计所设计航向控制器为PID自整定控制器,控制器部分是利用Matlab逻辑工具箱进行设计,此方法设计步骤简单,易于实现,可直接与Simulink工具箱连接进行仿真,并且以该控制器为核心的仿真图也可与仿真实验平台进行完美的连接,因此可以通过仿真实验平台验证控制器的性能。关键词:GUI 航向控制 PID 实物仿真目 录第一章 概论11.1引言11.2图形用户界面概述1第二章 GUI的创建32.1 GUI设计概述32.2 GUI实现32.3采用GUIDE创建GUI42.3.1 GUI组件介绍42.3.2菜单编辑器42.3.3创建GUI模型4第三章 控制器的设计73.1串口的基本操作73.2实物仿真73.3 S-FUNCTION函数8结 果11参考文献12致 谢13第一章 概论1.1引言本课程设计所设计的船舶航向控制器采用Matl ab环境中的Simulink仿真工具箱和GUI界面。Matlab是Mathworks公司推出的一款功能强大的数学软件。它集数值分析、矩阵计算、信号处理和图形显示于一身,包含大量高度集成的函数可供调用,命令语句功能强大为科学研究,工程设计及众多学科领域提供一种简洁、高效的编程工具,并在图像处理、控制设计、信号检测、金融建模设计等领域得到广泛应用。因此在制作各种教学软件或信号处理软件时,在Matlab提供的GUI( GraphicalUser Interface)上利用Matlab语言编写核心代码并构建框架是一种不错的选择这不但减少了代码编写的工程量而且制作出的软件同时具有界面友好和能够方便进行各种数据处理及图像分析等特点。随着信息社会的不断推进,具有不同功能的应用软件已成为人们生活、学习及工作中不可缺少的一部分。比如,工作中经常用到的文字处理软件、图形图像软件等,对于这些软件的设计,程序员大多习惯于选择VC、Java、VB等高级编程语言编写代码,因为这些编程语言制作出的软件界面友好,功能强大。然而在对大量数据进行各种复杂分析和处理时,相比于Matlab编程语言而言,这些高级语言则处于明显的劣势。Matlab不仅具有强大的科学计算功能,还具有界面设计开发功能。Matlab图形用户界面是有别于VC界面和Java界面的是一种新型界面开发方式。对于熟悉Matlab而不想编写大量VC代码的科研人员来说,Matlab/GUI无疑是一个最佳选择。它既能嵌入已有的仿真程序,又能把仿真的图形化结果以人机交互的动态方式展现给操作者,给人深刻的印象,同时仿真代码的不可见性为一些不熟悉Matlab的操作者提供了操作界面的可能。在基于Matlab/ GUI制作的软件中关键需要解决三大问题:1、界面功能;2、界面外观的优化;3、不同GUI之间的调用。因此,本课程设计给出一个利用Matlab/GUI制作的仿真控制器的实例。此仿真控制平台是为了满足学生船舶控制实验的需要。本课程设计在设计仿真控制平台中涉及到航向控制器的设计,航向控制器是仿真平台的基础,在航向控制器的基础之上实现仿真平台上的相关功能。1.2图形用户界面概述Matlab是一套高性能的数值计算和可视化软件,它作为新兴的逻辑语言和可视化工具,有着其他编程语言所不能比拟的优势,如Fortran语言是一种专门用于科学计算的语言,但其图形界面的功能比较弱,利用其开发的程序,用户界面不友好,使用起来不方便。而Visual Basic, Visual C等可视化编辑语言开发出来的程序界面友好,但由于其不是专门用于科学计算的语言,因此其科学计算功能较弱。由于Matlab强大的应用功能,用户越来越多。Matlab的应用可让用户不再需要了解大量底层与开发无关的工作,极大地提高了开发效率。Matlab为解决用户开发和客户交互的局限,提供了一个全新的GUI设计方案。图形用户界面(GUI, Graphical User Interface)是提供人机交互的工具和方法。GUI是使用图形对象(例如按钮、文本框、滚动条和菜单等)创建的用户界面,这些对象对计算机用户而言都有明确的含义,例如移动滚动条将会改变数值,按下OK按钮将完成并应用用户的设置,同时设置对话框消失。当然用户必须保证这些不同对象间能够协调地工作。Matlab用一个包含多种不同风格的图形窗口代表用户界面。用户必须对每一个对象进行编程,使用户在GUI中的行为能够达到相应的目的。Matlab的GUI为开发者提供了一个不脱离Matlab的开发环境,更有益与Matlab程序的GUI集成。在Matlab6.5中,图形用户界面是一种包含多种图形对象的界面,典型的图形界面包括图形显示区域、功能按钮空间以及用户自定义的功能菜单等。为了让界面实现各种功能,需要对各个图形对象进行布局和编程。这样,当用户激活对应的GUI对象时,就能执行相应的行为。最后,必须保存自己创建的GUI,使得用户可以应用GUI对象。在Matlab中,所有对象都可以使用M文件进行编写。GUI也是一种Matlab对象,因此,可以使用M文件来创建GUI。使用M文件创建GUI的方法也是最基础的,使用其他方法创建GUI图形界面时,实现图形控件的各种功能时,也需要编写相应的程序代码。除了使用M文件来创建GUI对象之外,Matlab还为用户开发图形界面提供了一个方便高效的集成开发环境:Matlab图形用户界面开发环境(Matlab graphicaluser interface development environment)简称GUIDE,其主要是一个界面设计工具集。Matlab6.5将所有GUI所支持的用户控件都集成起来,同时提供界面外观、属性和行为响应方法的设置方法。除了可以使用GUIDE创建GUI之外,还可以将设计好的GUI界面保存为一个FIG资源文件,自动生成对应的M文件。该M文件包含了GUI初始化代码和组建界面布局的控制代码。使用GUIDE创建GUI对象执行效率高,可以交互式地进行组件布局,还能生成保存和发布GUI的对应文件。本课程设计选择用Matlab的图形用户界面设计是因为不需要编写大量的代码,它既能嵌入已有的仿真程序,又能与仿真环境相结合。第二章 GUI的创建从MatlabS.X版本开始,为了方便用户制作图形界面Matlab提供了一个交互式的设计工具GUIDE。但是从Matlab6.X以来,GUIDE的设计界面己经发生变化,本论文采用的是Matlab6.5的GUIDE。GUIDE实际上是一套Matlab的工具集,它由版面设计工具、属性编辑器、菜单编辑器、调整工具、对象浏览器、TAB次序编辑器六部分组成。2.1 GUI设计概述在GUI设计程序前,首先考虑设计对象的结构和开发流程。不同的要求设计出来的GUI也不同。一个优秀的界面基本符合易用性、统一性、规范性和合理性的标准。为了高效率的开发一个GUI,必须按照一定的开发步骤,下面给出一般步骤图(如图2.1): 图2.1 GUI设计步骤图2.2 GUI实现GUI编程实现主要分为三大块:组件的布局、属性的编辑和回调函数的编辑。1、组件的布局在GUIDE的界面设计区添加组件的方法很简单,只要用鼠标从组件面板里点击并拖拉组件即可实现。添加菜单有专门的菜单编辑器来完成。完成添加后可使用GUIDE的特征工具调整组件的位置和使用TAB次序编辑器调整TAB次序达到最优化配置,来完成布局。2、属性编辑通过属性编辑可以改变当前组件的属性值,在菜单编辑里可改变菜单的属性值。当改变组件属性值时,可能会影响到界面的整体效果,因此在改完属性值滞后还要对组件的布局进行优化。GUI实现的关键还在于回调函数的处理。3、回调函数在Matlab6.5里回调函数直接在M文件中编辑,这样的事件管理模式,便于用户的理解和编辑。 当一个图形对象发生特殊事件时,GUI传递要执行的子函数名到M文件中,该子函数称为回调函数(也称callback函数)。用户对控件操作(如鼠标单击、双击或移动、键盘输入等)的时候,控件对该操作进行响应,指定执行的函数,就是该控件的回调函数。该函数不会主动运行,只在用户对控件执行特定操作时执行。2.3采用GUIDE创建GUI采用GUIDE创建一个完整的GUI图形界面,步骤如下:1, GUI对象布局2、设置对象的相应属性3、编写回调函数2.3.1 GUI组件介绍1、触控按钮(Push Button)在Push Button双击,调用属性查看器,可以设置Push Button的属性。2、静态文本(Static Text)Static Text通常用于显示其他对象的数值、状态等。3、可编辑文本框(Edit Text)Edit Text允许用户修改文本内容,用于数据的输入显示。4、单选按钮(Radio Button)Radio Button用于显示一组互斥的状态。其对象之多只有一个的value值为l。5、坐标轴(Axes) Axes用于数据的可视化,即显示图形或者图像。Axes是核心图形对象的容器,它包含下列GUI核心图形对象:image, light, lint, patche, rectangle, surface和text对象。2.3.2菜单编辑器菜单编辑器生成可以为每个菜单选项生成空回调函数的子函数,包括菜单名,其主要用于建立菜单栏(Menu Bar)和右键菜单(Context Menus。若窗口的MenuBar属性值为none,则只显示用户设计的菜单;若MenuBar属性值为Figure则用户设计的菜单出现在标准菜单之后。2.3.3创建GUI模型图2.3为GUI模型图。图2.3 GUI模型图界面有两个发送单元,分别为航令和航向发送,航令为控制船舶转速的大小,航向为设定的角度,输入相应的数值,点击发送,则船舶模型会相应的转动。建立一个GUI模型之后,相应的会出现源程序代码,以下为其中的发送接收程序:function pushbutton1_Callback(hObject, eventdata, handles)global count;count=0;s=serial(COM1) %建立串口s.BytesAvailableFcnMode=terminator; % byte s.BytesAvailableFcnCount=22s.BytesAvailableFcn=rxd_mycallback; %mycallback;fopen(s); %打开串口a=get(handles.edit1,String);b=strcat($AGHSC,01,a);AGHSC=strcat(b,S*HH);AGHSC(20)=13; AGHSC(21)=0;fprintf(s,AGHSC,async); state=s.TransferStatu while(state(1)=i) state=s.TransferStatus end while(count32) u(2)=32; end if(u(2)-32) u(2)=-32; end u(1)=u(1)+0.001; u(2)=u(2)+0.001; if(u(1)=-10) a=$AGHSC,04,;b=num2str(u(1);b=b(1:5); elseif(u(1)0) a=$AGHSC,04,-0;u(1)=-u(1);b=num2str(u(1);b=b(1:3); elseif(u(1)=0) a=$AGHSC,04,;b= 00.0 ; elseif(u(1)=10) a=$AGHSC,04,+0;b=num2str(u(1);b=b(1:3); else a=$AGHSC,04,+;b=num2str(u(1);b=b(1:4); end if(u(2)=-10) e=,S,;d=num2str(u(2);d=d(1:5); elseif(u(2)0) e=,S,-0;u(2)=-u(2);d=num2str(u(2);d=d(1:3); elseif(u(2)=0) e=,S,;d= 00.0 ; elseif(u(2)=10) e=,S,+0;d=num2str(u(2);d=d(1:3); else e=,S,+;d=num2str(u(2);d=d(1:4); end c=*HH; AGHSC=strcat(e,strcat(d,c); AGHSC=strcat(a,strcat(b,AGHSC); AGHSC(27)=13 ; AGHSC(28)=0; AGHSC fprintf(st,AGHSC,async); state=st.TransferStatus; while(state(1)=i) state=st.TransferStatus; endout,ak= fscanf(st,uint8 );out,ak= fscanf(st,uint8 ) if(ak=36) sys(1)=str2double(out(11:15); sys(2)=str2double(out(27:31); else out,ak= fscanf(st,uint8 ); out,ak= fscanf(st,uint8 ); sys(1)=str2double(out(11:15); sys(2)=str2double(out(27:31); endstopasync(st);fclose(st);function sys=mdlGetTimeOfNextVarHit(t,x,u)sampleTime = 1; % Example, set the next hit to be one second later.sys = t + sampleTime;function sys=mdlTerminate(t,x,u)global st;sys = ;delete(st);clear st;结 果 本课程设计所设计的船舶航行控制器填补了学生缺少船舶控制实验课所需要的具有针对性的教学工具的空缺,此船舶航向控制器操作方便、可开发性强、满足船舶控制课时的需要。船舶航向控制器能满足以下功能: 1、基于Matlab-Simulink环境的船舶航向保持控制仿真;在Matlab-S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 装饰行业公司管理办法
- 群租房监督管理办法
- 蒙城庄周拆迁管理办法
- 产业扶贫贷款管理办法
- 美甲店员工管理办法
- 肯德基员工管理办法
- 行业网格化管理办法
- 上海宠物疫情管理办法
- 仓储设施建设管理办法
- 中式餐饮运营管理办法
- 小流域治理工程监理工作报告小流域治理监理报告
- 2025-2030年中国蔬果保鲜剂行业市场深度调研及发展趋势与投资价值评估研究报告
- 幼儿园游戏空间管理制度
- 2025至2030中国妊娠和排卵测试行业产业运行态势及投资规划深度研究报告
- 精神病医院食堂餐饮管理服务项目投标方案
- 2025年《环境设计工程计量与计价》课程标准
- 寺庙斋堂卫生管理制度
- 网格化闭环管理制度
- 2025-2030学生文具行业市场发展分析及竞争格局与投资战略研究报告
- T/CACEM 22.4-2022校车运营服务管理第4部分:车辆维护管理规范
- 血液透析中心可行性研究投资报告
评论
0/150
提交评论