版权说明:本文档由用户更好的提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
1、 第30页 共29页利用MATLAB GUI设计控制管理系统分析与设计界面1 引言图形用户接口GUI是用户和计算机程序之间进行信息交流的方式。通过图形用户界面,用户不要输入脚本或命令,不有必要了解任务的内部运行方式,计算机在屏幕显示图形和文本,若有扬声器还可产生声音。用户通过输入设备,键盘,鼠标,麦克风等与计算机进行通信。图形用户界面GUI中包含多个图形对象,如图标,菜单,文本的用户界面。以某种方式选择或激活这些对象,引起相应的动作或变化,最常用的激活方式是用鼠标控制屏幕上的鼠标指针运动。图形用户界面GUI具有操作方便,控制灵活的特点,已成为现代应用程序的主要方式。用MATLAB GUI设计一个控
2、制系统分析与设计界面,将系统的传递函数输入到GUI中,可以方便的绘制系统的各种常用曲线,如阶跃响应曲线,Nyquist曲线能够适用于系统稳定性的分析,我们大家可以有意识的输入系统的开环传递函数或是闭环传递函数,分别对应Nyquist曲线和阶跃响应图。根轨迹对控制管理系统的分析和设计也很有价值。零极点图可以方便的查看系统的零极点分布,对于配置系统的极点进行系统校正具备极其重大意义。Bode图和幅频响应图对系统的频率响应分析是一种手段,而阶跃响应指标则可更细致的观察系统的性能。用GUI设计控制系设计控制管理系统分析与设计界面不仅在工程上有参考意义,在我们的学习过程中也很有意义,能够在一定程度上帮助我们更深入更容易理解控制管理系统的
3、分析与设计意义。传递函数是控制系统的核心,在这里设计了两种常用的传递函数输入形式,第一种可以称为直接形式,因为他的传递函数是已知的,我们大家可以将系统或以开环传递函数或闭环传递函数的形式输入GUI中,进行一定的分析设计;第二种是状态变量形式,这里开环或闭环取决于转换而来的状态空间方程,因为开环和闭环系统都能转换为状态空间,因而在进行一定的计算和绘图时需注意。2 问题分析题目要求以MATLAB GUI设计图形用户界面,设计控制管理系统分析与设计界面,界面中包含控制管理系统中常见的功能,传递函数的输入和创建,性能指标计数显示,绘制常用曲线等。传递函数是控制管理系统研究中的核心问题,常用的有和状态变量形式 两种形
4、式,第一种对于具体的某个传递函数而言是单输入但输出的(如果系统是多输入多输出的,则对于不同的输入而言,传递函数一般式不同的。),第二种形式可设为y和来实现多输入多输出。本设计将这些功能具体化如下表格所示:表1.1传递函数第一种形式分子矩阵num分母矩阵den状态变量形式矩阵A矩阵B矩阵C矩阵D阶跃响应性能指标(performance)峰值mp峰值时间Tp稳态增益yss超调量Del上升时间Tr调整时间Ts常用曲线BodeNyquistRootLocusPoleZeroimpulsestepnichols幅频特性输入序号n指定多输入时是创建哪个输入量的传递函数标志位k指定使用第一种形式还是状态变
5、量形式下的传递函数close按钮关闭GUI的运行3 GUI设计3.1 启动GUI启动MATLAB后在命令窗口中键入guide,启动GUIDE,弹出“GUIDE Quick Start”对话框,或者通过filenewGUI进入,在弹出的GUIDE模版中创建新的GUI或打开已经存在的GUI,也可以再一次进行选择一些模版,这里新建一个GUI,选择Blank GUI (Default)模版。3.2 GUI窗口大小设计我们大家可以改变GUI输出编辑器的网格区域大小指定GUI的大小,操作方法是,单击网格区域的右下角并进行拖拉。另外可以在“View”菜单下选择“Property Inspector”打开属性查看器,选择“
6、Units”后面的按钮,进而选择弹出式菜单的“inches”,单击“Position”后面的“+”符号,输入x和y的坐标和GUI窗口的宽度和高度,再将“Units”属性设为character,这样做才能够进行精确地设置GUI的位置和大小。本设计采用默认地情况。3.3 添加、对齐组件GUI输出编辑器中包含了各种组件供用户设计界面,这里从工具箱中选择9个“Static Text”静态文本框,8个“Edit Text”可编辑文本框,一个“Pop-up Menu”下拉式列表框,一个“Push Button”按钮和一个“Axes”坐标系,将它们分别拉到设计区。具有相同父对象的组件,可以用对齐工具将他们对齐,
7、例如对第一列的是四个可编辑文本,按住Ctrl同时连续选择他们,从“Tools”选择“Align Objects显示对齐工具,也可以重工具条上选择“”图标进入对齐工具对话框,从中选择水平左对齐,当然去我们也可设为他们之间的间隔,对齐工具和各组件布局如下: 图3.1 对齐工具 图 3.2 组件布局图3.4 设置GUI组件属性GUI中各组件的属性设置很重要,对回调函数的识别,数据的输入都很重要。从“View”菜单中选择“Porperty Inspector”选项,或点击工具条上的“”按钮,显示属性对话框,利用属性对话框设置个组件的属性。如果没选组件,属性查看器会显示GUI图形窗
8、口的属性。在输出编辑器中选择各静态文本,将他们的“String”属性依次设置成“num” 、“den” 、“A” 、“B” 、“C” 、“D” 、“输入序号n” 、“标志位k” 、“types” ,他们分别指示他们图标位置之下的可编辑文本输入的信息类型,其中“num” 、“den” 、“A” 、“B” 、“C” 、“D”对应传递函数的矩阵,如表1.1所示。 “输入序号n”表示输入量的顺序号,在多输入创建传递函数时指定创建的是那个输入的传递函数,这里咱们不可以将输入序号n的值设置的比输入个数多,否则可能出错,其初始值为1,表示单输入的情况或多输入的第一个输入量。“标志位k”表示传递函数是“num”
9、 、“den”所确定的还是“A” 、“B” 、“C” 、“D”所创建的,在绘制常用曲线图形以及计算显示性能指标的时候需要指定传递函数是来源于哪种情况,以免发生错误。标志位k的初始值为0,表示使用“num” 、“den”确定的传递函数,k值为1时使用“A” 、“B” 、“C” 、“D”所确定的传递函数。“types”表示在其图标位置之下的下拉式列表框中选择绘图类型和计算性能指标。下拉式列表框的“String”属性设置方法为单击String属性后的“”图标打开String属性的编辑窗口,如图2.3所示输入。下拉式列表框共有九种类型,即其“String”属性中所列的“Bode” 、“Nyquist”
10、 、“RootLocus” 、“PoleZero” 、“impulse” 、“step” 、“nichols” 、“幅频特性”、“performance”分别表示绘制波德图、奈奎斯特图、根轨迹、零极点图、脉冲响应曲线图、阶跃响应曲线图、nichols图、幅频特性图、计算阶跃响应的性能指标。依据上面得“String”属性顺序依次设置可编辑文本的“Tag”属性为“num_edit”“den_edit”“AA”“BB”“CC”“DD”“n_edit”“k_edit”将下拉式列表框的Tag属性设置为“popupmenu”。GUI根据组件的Tag属性值在保存时和第一次运行时自动设置回调函数的名称,如下拉
11、式列表框的回调函数名为“popupmenu_Callback”。设置按钮的String的属性为“close”,Tag属性为“pushbutton”。功能为按下close按钮结束GUI的运行。组件的“String属性见图3.2.图3.3 下拉式列表框的String属性编辑窗口3.5 对象浏览利用对象浏览器,可查看当前所创建的图形对象,选择ToolsObject Browser命令或单击设计编辑器界面工具栏的“”按钮,打开对象浏览器,从中能够准确的看出,对象在浏览器中是按创建的先后顺序显示的。见图 3.4. 图 3.4 对象浏览器3.6 M文件编写完成GUI输出编辑器的设计和属性设置之后,接下来就是进行
12、M文件的编辑。第一次保存和运行GUI时,GUIDE会生成一个函数式M文件,它包含每个组件要用到的回调函数框架,以及一些初始化代码,一个初始函数回调和一个输出函数回调。生成M文件以后,它打开“Save GUI as”对话框,在“File name”文本框中键入文件名,本次设计文件名为“sheji”,GUIDE将相同的名称指定给FIG文件和M文件,单击“Save”按钮时,GUIDE会保存M文件并在M文件编辑器中打开它。创建了M文件以后,就能够最终靠单击输出编辑器中的工具条上的“”按钮来打开M文件编辑器。在M文件编辑器中能够最终靠单击工具条上的“”按钮,然后在下拉菜单中选择目标回调来将光标移动到指定的回
13、调函数。下面从功能的角度来分析个函数。3.6.1 回调间和数据共享通过将数据保存到MATLAB handles结构中,能轻松实现回调间的数据共享。GUI中的所有组件使用同一个handles结构,它会传递一个输入变量给GUIDE生成的所有回调函数。例如本设计中的一句语句handles.N=str2num(get(handles.n_edit,String),功能为先通过get函数命令获得对象属性,将n可编辑文本输入的字符转换为数字赋给名称为handles.N的handles结构的字段,用guidata(hObject, handles)函数保存handles结构,在其他的回调函
14、数中就能够正常的使用handles.N,或者赋给某个变量,调用这一些数据了。3.6.2 初始化为增加美感,本次设计初始化函数中增加了一个绘制曲面的函数,绘制的是MathWorks公司的图标,因而选用了这个函数。使用surf命令,数据来源于membrane。在初始化中设置可编辑文本的初始值时使用set函数,例如set(handles.num_edit,String,2 8 6),功能为设置num矩阵的初始值为2 8 6,但要注意的是这里是文本矩阵。3.6.3 数据输入本设计中要输入的数据有矩阵和控制数据(n,k),输入的形式都是文本字符或字符串的形式,通过
17、ss2tf命令转换序号为handles.N(在GUI界面中看为输入序号n)的输入量的数据,这里我们要弄清楚输入量的个数不能将输入序号n的值设置的比输入个数还大,输入序号n的初始值设为1,表示单输入或多输入第一个输入量的情况。3.6.5 选择传递函数在后面的绘图和计算性能指标中要选择使用哪种形式下的传递函数,因此设计了一个标志位k,标志位k的可选值为0和1,值0时为选择分子分母形式输入的传递函数,值1为时选择状态变量形式创建的传递函数,若输入其他值,则不能正确绘图和计算性能指标,且在命令窗口中输出“标志位k=0or1”以及弹出消息对话框进行提醒,使用ifelseifelseend语句结构实现这
20、,这里计算了六项,分别为,% mp-峰值% Tp-峰值时间% Tr-上升时间% Del-超调量% Ts-调整时间(2%准则)% yss-稳态值程序中将阶跃响应设置成幅值和时间两者返回数据来表现Y,t=step(sys);,这样就能方便的计算出mp,Tp,yss。上升时间是定义成幅值从0.1(t1)达到0.9(t2)的时间,计算式为 调整时间为最后一超出2%准则区域后再一次进入2%准则区域时的时间,这里需要用程序进行循环判断,以确定Ts,具体见附录程序。超调量计算式为在这里我们大家可以在绘制阶跃响应时在程序中加上两条语句hs=figure;step(handles.num1,handles.den1
21、);(对应k=0,当然也可以针对k=1加对应的语句)使之在axes中绘图的同时也绘制一张Figure图,在这张图中,点击右键,选择“characteristics”选择相应的性能指标,Peak Response ,Setting Time ,Rise Time ,Steady State ,在选择Peak Response时,将鼠标定位在相应的曲线点上还能显示Overshoot和At time两项指标,我们大家可以从这张图中得到的信息和命令窗口中输出的指标信息作对比,发现计算是比较准确的,初始设置数据生成的传递函数(k=0,n=1)的计算结果和Figure图对比信息如下;Transfer
23、,测试设计的正确性,查看程序是否能完成设定的功能。从“Tools”菜单中选择“Run”选项,或者单击GUIDE工具条中的“”按钮,运行GUI。由于GUI界面的axes坐标系不是复数坐标系,因而在绘制Nyquist,根轨迹等图时加入一条hs=figure语句,使得图形绘制在Figure中,若使用h = axes语句指定axes,则会出现绘制的图形充满整个GUI界面的结果,并不令人满意,因而这里采用绘制在Figure中的方法。GUI运行的初始界面如下 图 4.1 GUI初始化运行界面4.2 对num,den模型的测试4.2.1 初始数据测试使用初始数据,从下拉式列表框中,选择目标选项后,绘制的图
27、l= 0.0383Tr= 0.6857Ts= 1.0857 图4.19 Bode图4.3.2 改变A,矩阵的测试A,矩阵形式生成传递函数的优点是容易进行多输入多输出系统的生成,下面具体具体给出双输入单输出的第二个变量的测试结果。数据设置如下1.13 -0.49 0.11;1 0 0;0 1 0,B=-0.38 0.45;0.52 0.23;0.26 0.78,C=1 0.12 0.24,D=0.3 0.9,输入序号n=2,标志位k=1,这里也顺带测试了n和k。在我们输入矩阵时一定要注意的是B的行数必须等于A的行数,C的列数必须等于A的列数,D的行数必须等于C的行数,D的列数必须等于B的列数。测试
29、递函数),但Nyquist曲线并没有以逆时针方向包围点(-1,0)三次。计算得出的数据是以软件停止计算时已得出的数据为基准计算的,因而有些指标不一定准确,如超调量Del,他是以阶跃响应的最大值减去终值得到结果乘以100(这里是指绘图停止时的值)再除以终值得来的,因而这里的结果是0.但对于稳定的系统,在计算终止时已经稳定了的话,计数结果就就是准确的。对于多输入多输出系统,由于绘制根轨迹的rlocus命令只能用于单输出的系统,pzmap命令对多输入多输出系统是绘制系统的特征向量和传递零点,因而这两个命令在本设计中对于多输入多输出系统不可以使用。另外性能指标也是针对单输出的,也不能用,幅频响应也不能用
31、闭GUI的运行,但Figure文件并不是在输出编辑器中创建的,因而需要另外单独关闭。5 设计总结本次综合课程设计的基本要求设计一个控制管理系统的分析和设计MATLAB GUI界面,界面包括控制管理系统的常用功能。MATLAB GUI拥有强大的图形用户界面设计功能,GUIDE提供了一系列创建图形用户界面的工具,fig文件的设计因而最简单,大体可分为启动GUI,设定GUI窗口大小,添加组件对齐组件,设置组件的属性,对象浏览等几个步骤,这些工作最简单,一看就会,关键是在于M文件的编写。由于是第一次使用MATLAB GUI,因而不可避免的遇到许多问题,尤其是在程序的编写上。首先是在数据的输入上,GUI中的数据都
32、是以字符的形式输入的,这和命令窗口中直接输入数字数据截然不同,虽然感慨时就注意到了这一点,设计中对单数字的输入页没问题,但对矩阵的输入却有问题,后来查书发现str2mat命令只是将字符串输入转换为文本矩阵,还要使用到str2num命令将文本矩阵转换为数字矩阵,到此也一并解决了ss2tf命令需要A矩阵为方阵的问题。遇到的另一个主体问题是设计的过程中有时需要对fig文件做修改,比如对某个组件的Tag属性做修改,保存后,但是在M文件中查看函数列表时,发现相关组件的回调函数名称并没有改正过来,虽然运行GUI时调用可能没问题,但却给人不统一的感觉,这时有可能就要重新设计。不过相对来说,MATLA
33、B GUI用起来是比较方便的。通过这次的综合课程设计使我们学到了很多东西,从我们拿到题目开始,我们就需要认真对其做多元化的分析,查找有关的资料,翻看某些辅导书籍学习MATLAB GUI的使用方法,经过这近三周的课程设计,虽然断断续续的,但也从这些工作中学到很多,第一,我们熟悉了MATLAB中很多的绘图命令,如Nyquist,pzmap等,也熟悉一些数据转换命令如ss2tf,str2mat,str2num以及设置对象属性命令set,获得对象属性命令get等等,这些知识的积累对我们今后用到的MATLAB GUI时是一次很好的先前练习,同时也进一步充实了MATLAB的知识;第二我们进一步认识到论文格式规
1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2. 本站的文档不包含任何第三方提供的附件图纸等,若需要附件,请联系上传者。文件的所有权益归上传用户所有。
3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
7. 本站不保证下载相关资源的准确性、安全性和完整性, 同时也不承担用户因使用这一些下载相关资源对自己和他人造成任何形式的伤害或损失。