ImageVerifierCode 换一换
格式:DOCX , 页数:42 ,大小:338.95KB ,
资源ID:2529697      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-2529697.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(利用MATLABGUI设计控制系统分析与设计界面.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

利用MATLABGUI设计控制系统分析与设计界面.docx

1、利用MATLABGUI设计控制系统分析与设计界面利用MATLAB GUI设计控制系统分析与设计界面1 引言图形用户接口GUI是用户和计算机程序之间进行信息交流的方式。通过图形用户界面,用户不需要输入脚本或命令,不需要了解任务的内部运行方式,计算机在屏幕显示图形和文本,若有扬声器还可产生声音。用户通过输入设备,键盘,鼠标,麦克风等与计算机进行通信。图形用户界面GUI中包含多个图形对象,如图标,菜单,文本的用户界面。以某种方式选择或激活这些对象,引起相应的动作或变化,最常用的激活方式是用鼠标控制屏幕上的鼠标指针运动。图形用户界面GUI具有操作方便,控制灵活的特点,已成为现代应用程序的主要方式。用M

2、ATLAB GUI设计一个控制系统分析与设计界面,将系统的传递函数输入到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 Inspect

6、or”打开属性查看器,选择“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、,可以用对齐工具将他们对齐,例如对第一列的是四个可编辑文本,按住同时连续选择他们,从“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”表示传递函数是“nu

9、m” 、“den”所确定的还是“A” 、“B” 、“C” 、“D”所创建的,在绘制常用曲线图形以及计算显示性能指标的时候需要指定传递函数是来源于哪种情况,以免发生错误。标志位k的初始值为0,表示使用“num” 、“den”确定的传递函数,k值为1时使用“A” 、“B” 、“C” 、“D”所确定的传递函数。“types”表示在其图标位置之下的下拉式列表框中选择绘图类型和计算性能指标。下拉式列表框的“String”属性设置方法为单击String属性后的“”图标打开String属性的编辑窗口,如图2.3所示输入。下拉式列表框共有九种类型,即其“String”属性中所列的“Bode” 、“Nyquis

10、t” 、“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结构,在其他的回调函数中就可以使用h

14、andles.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),输入的形式都是文本字符或字符串的形式,通过可编辑文本Edit Text输入的。对于矩阵先要将字符串

15、转换为文本矩阵,再将文本矩阵转换为数字矩阵,例如handles.num0=str2mat(get(handles.num_edit,String); handles.num1=str2num(handles.num0);将get获得num对象字符串通过str2mat命令转为文本矩阵handles.num0再将其通过str2num命令将其转换为数字矩阵handles.num1,这样便能在MATLAB中进行处理了。3.6.4 创建传递函数和输入量的选择这里所用的传递函数有两种两种形式,对于已知传递函数,以分子分母矩阵形式输入的情形比较简单,绘图时都是直接利用分子分母矩阵。对于状态变量形式的情况,需

16、要先将A,B,C,D四个矩阵转换为分子分母矩阵形式,以利于以后的绘图和计算性能指标。例如handles.numx,handles.denx=ss2tf(handles.AAA,handles.BBB,handles.CCC,handles.DDD,handles.N);使用ss2tf命令将前面程序中获得handles.AAA,handles.BBB,handles.CCC,handles.DDD矩阵和handles.N数字转化为分子矩阵handles.numx和分母矩阵handles.denx,handles.N为指定ss2tf命令转换序号为handles.N(在GUI界面中看为输入序号n)的

17、输入量的数据,这里我们要弄清楚输入量的个数不能将输入序号n的值设置的比输入个数还大,输入序号n的初始值设为1,表示单输入或多输入第一个输入量的情况。3.6.5 选择传递函数在后面的绘图和计算性能指标中需要选择使用哪种形式下的传递函数,因此设计了一个标志位k,标志位k的可选值为0和1,值0时为选择分子分母形式输入的传递函数,值1为时选择状态变量形式创建的传递函数,若输入其他值,则不能正确绘图和计算性能指标,且在命令窗口中输出“标志位k=0or1”以及弹出消息对话框进行提醒,使用ifelseifelseend语句结构实现这些功能。例如if handles.K=0 bode(handles.num1

18、,handles.den1); elseif handles.K=1 bode(handles.numx,handles.denx); else disp(标志位k=0or1); end3.6.6 绘图类型的选择绘图和计算性能指标类型是集中在下拉式列表框中的,因此需要对他们进行选择识别,每次用户选择其中的某项功能时,下拉式列表框的回调函数都会读取下拉式列表框的Value属性值,以便执行相应的功能,这里使用分支语句实现实现选择,例如:val=get(hObject,Value);str=get(hObject,String);switch strval case Nyquist hs=figur

19、e; if handles.K=0 nyquist(handles.num1,handles.den1); elseif handles.K=1 nyquist(handles.numx,handles.denx); else disp(标志位k=0or1); end title(Nyquist Fig); 图 3.5 k输入其他值时消息提醒3.6.7 性能指标计算性能指标是计算系统阶跃响应的相关指标,这里计算了六项,分别为,% mp-峰值% Tp-峰值时间% Tr-上升时间% Del-超调量% Ts-调整时间(2%准则)% yss-稳态值程序中将阶跃响应设置成幅值和时间两者返回数据来表现Y,

20、t=step(sys);,这样就能方便的计算出mp,Tp,yss。上升时间是定义成幅值从0.1(t1)达到0.9(t2)的时间,计算式为 调整时间为最后一超出2%准则区域后再一次进入2%准则区域时的时间,这里需要用程序进行循环判断,以确定Ts,具体见附录程序。超调量计算式为在这里我们可以在绘制阶跃响应时在程序中加上两条语句hs=figure;step(handles.num1,handles.den1);(对应k=0,当然也可以针对k=1加对应的语句)使之在axes中绘图的同时也绘制一张Figure图,在这张图中,可以点击右键,选择“characteristics”选择相应的性能指标,Peak

21、 Response ,Setting Time ,Rise Time ,Steady State ,在选择Peak Response时,将鼠标定位在相应的曲线点上还能显示Overshoot和At time两项指标,我们可以从这张图中得到的信息和命令窗口中输出的指标信息进行对比,发现计算还是比较准确的,初始设置数据生成的传递函数(k=0,n=1)的计算结果和Figure图对比信息如下;Transfer function: 2 s2 + 8 s + 6- Figure图s3 + 8 s2 + 10 s + 6yss= 0.9980 1mp= 1.0948 1.09Tp= 2.8166 2.82De

22、l= 9.7054 9.48Tr= 1.2071 1.2Ts= 5.2309 5.162.6.8 close功能close按钮主要是在点击close按钮时关闭GUI的运行,它的回调函数如下:function pushbutton_Callback(hObject, eventdata, handles)close;4 GUI测试4.1 初始化界面设计好GUI和编辑好程序后,保存后,接下来就是运行GUI,测试设计的正确性,查看程序是否能完成设定的功能。从“Tools”菜单中选择“Run”选项,或者单击GUIDE工具条中的“”按钮,运行GUI。由于GUI界面的axes坐标系不是复数坐标系,因而在绘

23、制Nyquist,根轨迹等图时加入一条hs=figure语句,使得图形绘制在Figure中,如果使用h = axes语句指定axes,则会出现绘制的图形充满整个GUI界面的结果,并不令人满意,因而这里采用绘制在Figure中的方法。GUI运行的初始界面如下 图 4.1 GUI初始化运行界面4.2 对num,den模型的测试4.2.1 初始数据测试使用初始数据,从下拉式列表框中,选择目标选项后,绘制的图形和计算的数据如下(n=1,k=0)num=2 8 6,den=1 8 10 6,从阶跃响应图和Nyquist图中可看出系统是稳定的(假设传递函数为开环的,则系统在右半平面无极点,Nyquist曲

24、线不包括点(-1,0) 图 4.2 Bode图 图 4.3 Nyquist图 图 4.4 根轨迹图 图4.5 零极点图 图 4.6 nichols图 图 4.7 幅频响应图 图 4.8 脉冲响应图 图 4.9 阶跃响应图Transfer function: 2 s2 + 8 s + 6-s3 + 8 s2 + 10 s + 6yss= 0.9980mp= 1.0948Tp= 2.8166Del= 9.7054Tr= 1.2071Ts= 5.23094.2.2 改变num,den矩阵的测试改变num=1 3 5 6,den=2 8 4 9输入则会得到不同的结果,限于篇幅,这里仅给出一些图代表。

25、图4.10 阶跃响应图 图4.11 零极点图 图4.12 根轨迹图 图4.13 Nyquist图Transfer function: s3 + 3 s2 + 5 s + 6-2 s3 + 8 s2 + 4 s + 9yss= 0.6674mp= 1.0285Tp= 2.2672Del= 54.1151Tr= 1.5458Ts= 31.6380 图4.14 Bode图4.3 对A,B, C, D模型的测试 4.3.1 初始数据的测试对于A,B,C,D模型的测试,使用初始数据时为单输入单输出系统,A=0 1 1;0 1 1;-6 -16 -8,B=0;0;1,C=6 8 2,D=0(n=1,k=1

26、)这里也给出一些图形和数据,从下面的的图形中也可以看出系统是稳定的,阶跃响应最终趋于稳定值。 图4.15 脉冲响应图 图4.16 阶跃响应图 图4.17 Nyquist图 图4.18 根轨迹图Transfer function: 2 s2 + 12 s - 3.331e-014-s3 + 7 s2 + 14 s - 4.333e-015yss= 0.8572mp= 0.8575Tp= 2.0000Del= 0.0383Tr= 0.6857Ts= 1.0857 图4.19 Bode图4.3.2 改变A,矩阵的测试A,矩阵形式生成传递函数的优点是容易进行多输入多输出系统的生成,下面具体具体给出双输

27、入单输出的第二个变量的测试结果。数据设置如下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的列数。测试结果如下 图4.20 脉冲响应图 图4.21 阶跃响应图 图4.22 Bode图 图4.23 Nyquist图 图4.24根轨迹 图4.25 零极点图 图4.26 幅频响应图 图4.27 nich

28、ols图Transfer function:0.9 s3 - 0.3522 s2 + 0.2806 s + 0.07395- s3 - 1.13 s2 + 0.49 s - 0.11yss= 20.0223mp= 20.0223Tp= 3.9534Del= 0Tr= 2.8552Ts= 3.8802从上面的阶跃响应图,Nyquist图和计算数据来看系统式不稳定的,系统在右半平面有三个极点(假设为开环传递函数),但Nyquist曲线并没有以逆时针方向包围点(-1,0)三次。计算得出的数据是以软件停止计算时已得出的数据为基准计算的,因而有些指标不一定准确,如超调量Del,他是以阶跃响应的最大值减去

29、终值得到结果乘以100(这里是指绘图停止时的值)再除以终值得来的,因而这里的结果是0.但对于稳定的系统,在计算终止时已经稳定了的话,计数结果就就是准确的。对于多输入多输出系统,由于绘制根轨迹的rlocus命令只能用于单输出的系统,pzmap命令对多输入多输出系统是绘制系统的特征向量和传递零点,因而这两个命令在本设计中对于多输入多输出系统不能使用。另外性能指标也是针对单输出的,也不能用,幅频响应也不能用,否则会出错。下面给出一个双输入双输出例子A=2.25 -5 -1.25 -0.5;2.25 -0.45 -1.25 -0.25;0.25 -0.5 -1.25 -1;1.25 -1.75 -0.

30、25 -0.75,B=4 6;2 4;2 2;0 2,C=0 0 0 1;0 2 0 2,D=0 0;0 0,对它的第一个输入进行测试,结果如下 图4.28 阶跃响应图 图4.29 脉冲响应图 图4.30Bode图 图4.31Nyquist图 图4.32 nichols图4.4 对close按钮的测试对close按钮的测试很简单,在所有的测试过程中都可以进行,在运行GUI时,点击close按钮就可以关闭GUI的运行,但Figure文件并不是在输出编辑器中创建的,因而需要另外单独关闭。5 设计总结本次综合课程设计要求设计一个控制系统的分析和设计MATLAB GUI界面,界面包括控制系统的常用功能。MATLAB GUI拥有强大的图形用户界面设计功能,GUIDE提供了一系列创建图形用户界面的工具,fig文件的设计因而比较简单,大体可分为启动GUI,设定GUI窗口大小,添加组件对齐组件

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2