版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 第30頁(yè) 共29頁(yè)利用MATLAB GUI設(shè)計(jì)控制系統(tǒng)分析與設(shè)計(jì)界面1 引言圖形用戶接口GUI是用戶和計(jì)算機(jī)程序之間進(jìn)行信息交流的方式。通過(guò)圖形用戶界面,用戶不需要輸入腳本或命令,不需要了解任務(wù)的內(nèi)部運(yùn)行方式,計(jì)算機(jī)在屏幕顯示圖形和文本,若有揚(yáng)聲器還可產(chǎn)生聲音。用戶通過(guò)輸入設(shè)備,鍵盤,鼠標(biāo),麥克風(fēng)等與計(jì)算機(jī)進(jìn)行通信。圖形用戶界面GUI中包含多個(gè)圖形對(duì)象,如圖標(biāo),菜單,文本的用戶界面。以某種方式選擇或激活這些對(duì)象,引起相應(yīng)的動(dòng)作或變化,最常用的激活方式是用鼠標(biāo)控制屏幕上的鼠標(biāo)指針運(yùn)動(dòng)。圖形用戶界面GUI具有操作方便,控制靈活的特點(diǎn),已成為現(xiàn)代應(yīng)用程序的主要方式。用MATLAB GUI設(shè)計(jì)一個(gè)控
2、制系統(tǒng)分析與設(shè)計(jì)界面,將系統(tǒng)的傳遞函數(shù)輸入到GUI中,可以方便的繪制系統(tǒng)的各種常用曲線,如階躍響應(yīng)曲線,Nyquist曲線可以用于系統(tǒng)穩(wěn)定性的分析,我們可以有意識(shí)的輸入系統(tǒng)的開(kāi)環(huán)傳遞函數(shù)或是閉環(huán)傳遞函數(shù),分別對(duì)應(yīng)Nyquist曲線和階躍響應(yīng)圖。根軌跡對(duì)控制系統(tǒng)的分析和設(shè)計(jì)也很有價(jià)值。零極點(diǎn)圖可以方便的查看系統(tǒng)的零極點(diǎn)分布,對(duì)于配置系統(tǒng)的極點(diǎn)進(jìn)行系統(tǒng)校正具有重要意義。Bode圖和幅頻響應(yīng)圖對(duì)系統(tǒng)的頻率響應(yīng)分析是一種手段,而階躍響應(yīng)指標(biāo)則可更細(xì)致的觀察系統(tǒng)的性能。用GUI設(shè)計(jì)控制系設(shè)計(jì)控制系統(tǒng)分析與設(shè)計(jì)界面不僅在工程上有參考意義,在我們的學(xué)習(xí)過(guò)程中也很有意義,可以幫助我們更深入更容易理解控制系統(tǒng)的
3、分析與設(shè)計(jì)意義。傳遞函數(shù)是控制系統(tǒng)的核心,在這里設(shè)計(jì)了兩種常用的傳遞函數(shù)輸入形式,第一種可以稱為直接形式,因?yàn)樗膫鬟f函數(shù)是已知的,我們可以將系統(tǒng)或以開(kāi)環(huán)傳遞函數(shù)或閉環(huán)傳遞函數(shù)的形式輸入GUI中,進(jìn)行相應(yīng)的分析設(shè)計(jì);第二種是狀態(tài)變量形式,這里開(kāi)環(huán)或閉環(huán)取決于轉(zhuǎn)換而來(lái)的狀態(tài)空間方程,因?yàn)殚_(kāi)環(huán)和閉環(huán)系統(tǒng)都可以轉(zhuǎn)換為狀態(tài)空間,因而在進(jìn)行相應(yīng)的計(jì)算和繪圖時(shí)需注意。2 問(wèn)題分析題目要求以MATLAB GUI設(shè)計(jì)圖形用戶界面,設(shè)計(jì)控制系統(tǒng)分析與設(shè)計(jì)界面,界面中包含控制系統(tǒng)中常見(jiàn)的功能,傳遞函數(shù)的輸入和創(chuàng)建,性能指標(biāo)計(jì)數(shù)顯示,繪制常用曲線等。傳遞函數(shù)是控制系統(tǒng)研究中的核心問(wèn)題,常用的有和狀態(tài)變量形式 兩種形
4、式,第一種對(duì)于具體的某個(gè)傳遞函數(shù)而言是單輸入但輸出的(如果系統(tǒng)是多輸入多輸出的,則對(duì)于不同的輸入而言,傳遞函數(shù)一般式不同的。),第二種形式可以設(shè)置y和來(lái)實(shí)現(xiàn)多輸入多輸出。本設(shè)計(jì)將這些功能具體化如下表格所示:表1.1傳遞函數(shù)第一種形式分子矩陣num分母矩陣den狀態(tài)變量形式矩陣A矩陣B矩陣C矩陣D階躍響應(yīng)性能指標(biāo)(performance)峰值mp峰值時(shí)間Tp穩(wěn)態(tài)增益yss超調(diào)量Del上升時(shí)間Tr調(diào)整時(shí)間Ts常用曲線BodeNyquistRootLocusPoleZeroimpulsestepnichols幅頻特性輸入序號(hào)n指定多輸入時(shí)是創(chuàng)建哪個(gè)輸入量的傳遞函數(shù)標(biāo)志位k指定使用第一種形式還是狀態(tài)變
5、量形式下的傳遞函數(shù)close按鈕關(guān)閉GUI的運(yùn)行3 GUI設(shè)計(jì)3.1 啟動(dòng)GUI啟動(dòng)MATLAB后在命令窗口中鍵入guide,啟動(dòng)GUIDE,彈出“GUIDE Quick Start”對(duì)話框,或者通過(guò)filenewGUI進(jìn)入,在彈出的GUIDE模版中創(chuàng)建新的GUI或打開(kāi)已經(jīng)存在的GUI,也可以選擇一些模版,這里新建一個(gè)GUI,選擇Blank GUI (Default)模版。3.2 GUI窗口大小設(shè)計(jì)我們可以改變GUI輸出編輯器的網(wǎng)格區(qū)域大小指定GUI的大小,操作方法是,單擊網(wǎng)格區(qū)域的右下角并進(jìn)行拖拉。另外可以在“View”菜單下選擇“Property Inspector”打開(kāi)屬性查看器,選擇“
6、Units”后面的按鈕,然后選擇彈出式菜單的“inches”,單擊“Position”后面的“+”符號(hào),輸入x和y的坐標(biāo)和GUI窗口的寬度和高度,再將“Units”屬性設(shè)為character,這樣可以進(jìn)行精確地設(shè)置GUI的位置和大小。本設(shè)計(jì)采用默認(rèn)地情況。3.3 添加、對(duì)齊組件GUI輸出編輯器中包含了各種組件供用戶設(shè)計(jì)界面,這里從工具箱中選擇9個(gè)“Static Text”靜態(tài)文本框,8個(gè)“Edit Text”可編輯文本框,一個(gè)“Pop-up Menu”下拉式列表框,一個(gè)“Push Button”按鈕和一個(gè)“Axes”坐標(biāo)系,將它們分別拉到設(shè)計(jì)區(qū)。具有相同父對(duì)象的組件,可以用對(duì)齊工具將他們對(duì)齊,
7、例如對(duì)第一列的是四個(gè)可編輯文本,按住<Ctrl>同時(shí)連續(xù)選擇他們,從“Tools”選擇“Align Objects顯示對(duì)齊工具,也可以重工具條上選擇“”圖標(biāo)進(jìn)入對(duì)齊工具對(duì)話框,從中選擇水平左對(duì)齊,當(dāng)然去我們也可以設(shè)置他們之間的間隔,對(duì)齊工具和各組件布局如下: 圖3.1 對(duì)齊工具 圖 3.2 組件布局圖3.4 設(shè)置GUI組件屬性GUI中各組件的屬性設(shè)置很重要,對(duì)回調(diào)函數(shù)的識(shí)別,數(shù)據(jù)的輸入都很重要。從“View”菜單中選擇“Porperty Inspector”選項(xiàng),或點(diǎn)擊工具條上的“”按鈕,顯示屬性對(duì)話框,利用屬性對(duì)話框設(shè)置個(gè)組件的屬性。如果沒(méi)有選擇組件,屬性查看器會(huì)顯示GUI圖形窗
8、口的屬性。在輸出編輯器中選擇各靜態(tài)文本,將他們的“String”屬性依次設(shè)置成“num” 、“den” 、“A” 、“B” 、“C” 、“D” 、“輸入序號(hào)n” 、“標(biāo)志位k” 、“types” ,他們分別指示他們圖標(biāo)位置之下的可編輯文本輸入的信息類型,其中“num” 、“den” 、“A” 、“B” 、“C” 、“D”對(duì)應(yīng)傳遞函數(shù)的矩陣,如表1.1所示。 “輸入序號(hào)n”表示輸入量的順序號(hào),在多輸入創(chuàng)建傳遞函數(shù)時(shí)指定創(chuàng)建的是那個(gè)輸入的傳遞函數(shù),這里我們不能將輸入序號(hào)n的值設(shè)置的比輸入個(gè)數(shù)多,否則可能出錯(cuò),其初始值為1,表示單輸入的情況或多輸入的第一個(gè)輸入量。“標(biāo)志位k”表示傳遞函數(shù)是“num”
9、 、“den”所確定的還是“A” 、“B” 、“C” 、“D”所創(chuàng)建的,在繪制常用曲線圖形以及計(jì)算顯示性能指標(biāo)的時(shí)候需要指定傳遞函數(shù)是來(lái)源于哪種情況,以免發(fā)生錯(cuò)誤。標(biāo)志位k的初始值為0,表示使用“num” 、“den”確定的傳遞函數(shù),k值為1時(shí)使用“A” 、“B” 、“C” 、“D”所確定的傳遞函數(shù)?!皌ypes”表示在其圖標(biāo)位置之下的下拉式列表框中選擇繪圖類型和計(jì)算性能指標(biāo)。下拉式列表框的“String”屬性設(shè)置方法為單擊String屬性后的“”圖標(biāo)打開(kāi)String屬性的編輯窗口,如圖2.3所示輸入。下拉式列表框共有九種類型,即其“String”屬性中所列的“Bode” 、“Nyquist”
10、 、“RootLocus” 、“PoleZero” 、“impulse” 、“step” 、“nichols” 、“幅頻特性”、“performance”分別表示繪制波德圖、奈奎斯特圖、根軌跡、零極點(diǎn)圖、脈沖響應(yīng)曲線圖、階躍響應(yīng)曲線圖、nichols圖、幅頻特性圖、計(jì)算階躍響應(yīng)的性能指標(biāo)。依據(jù)上面得“String”屬性順序依次設(shè)置可編輯文本的“Tag”屬性為“num_edit”“den_edit”“AA”“BB”“CC”“DD”“n_edit”“k_edit”將下拉式列表框的Tag屬性設(shè)置為“popupmenu”。GUI根據(jù)組件的Tag屬性值在保存時(shí)和第一次運(yùn)行時(shí)自動(dòng)設(shè)置回調(diào)函數(shù)的名稱,如下拉
11、式列表框的回調(diào)函數(shù)名為“popupmenu_Callback”。設(shè)置按鈕的String的屬性為“close”,Tag屬性為“pushbutton”。功能為按下close按鈕結(jié)束GUI的運(yùn)行。組件的“String屬性見(jiàn)圖3.2.圖3.3 下拉式列表框的String屬性編輯窗口3.5 對(duì)象瀏覽利用對(duì)象瀏覽器,可查看當(dāng)前所創(chuàng)建的圖形對(duì)象,選擇ToolsObject Browser命令或單擊設(shè)計(jì)編輯器界面工具欄的“”按鈕,打開(kāi)對(duì)象瀏覽器,從中可以看出,對(duì)象在瀏覽器中是按創(chuàng)建的先后順序顯示的。見(jiàn)圖 3.4. 圖 3.4 對(duì)象瀏覽器3.6 M文件編寫完成GUI輸出編輯器的設(shè)計(jì)和屬性設(shè)置之后,接下來(lái)就是進(jìn)行
12、M文件的編輯。第一次保存和運(yùn)行GUI時(shí),GUIDE會(huì)生成一個(gè)函數(shù)式M文件,它包含每個(gè)組件要用到的回調(diào)函數(shù)框架,以及一些初始化代碼,一個(gè)初始函數(shù)回調(diào)和一個(gè)輸出函數(shù)回調(diào)。生成M文件以后,它打開(kāi)“Save GUI as”對(duì)話框,在“File name”文本框中鍵入文件名,本次設(shè)計(jì)文件名為“sheji”,GUIDE將相同的名稱指定給FIG文件和M文件,單擊“Save”按鈕時(shí),GUIDE會(huì)保存M文件并在M文件編輯器中打開(kāi)它。創(chuàng)建了M文件以后,就可以通過(guò)單擊輸出編輯器中的工具條上的“”按鈕來(lái)打開(kāi)M文件編輯器。在M文件編輯器中可以通過(guò)單擊工具條上的“”按鈕,然后在下拉菜單中選擇目標(biāo)回調(diào)來(lái)將光標(biāo)移動(dòng)到指定的回
13、調(diào)函數(shù)。下面從功能的角度來(lái)分析個(gè)函數(shù)。3.6.1 回調(diào)間和數(shù)據(jù)共享通過(guò)將數(shù)據(jù)保存到MATLAB handles結(jié)構(gòu)中,可以實(shí)現(xiàn)回調(diào)間的數(shù)據(jù)共享。GUI中的所有組件使用同一個(gè)handles結(jié)構(gòu),它會(huì)傳遞一個(gè)輸入變量給GUIDE生成的所有回調(diào)函數(shù)。例如本設(shè)計(jì)中的一句語(yǔ)句handles.N=str2num(get(handles.n_edit,'String'),功能為先通過(guò)get函數(shù)命令獲得對(duì)象屬性,將n可編輯文本輸入的字符轉(zhuǎn)換為數(shù)字賦給名稱為handles.N的handles結(jié)構(gòu)的字段,用guidata(hObject, handles)函數(shù)保存handles結(jié)構(gòu),在其他的回調(diào)函
14、數(shù)中就可以使用handles.N,或者賦給某個(gè)變量,調(diào)用這些數(shù)據(jù)了。3.6.2 初始化為了增加美感,本次設(shè)計(jì)初始化函數(shù)中增加了一個(gè)繪制曲面的函數(shù),繪制的是MathWorks公司的圖標(biāo),因而選用了這個(gè)函數(shù)。使用surf命令,數(shù)據(jù)來(lái)源于membrane。在初始化中設(shè)置可編輯文本的初始值時(shí)使用set函數(shù),例如set(handles.num_edit,'String','2 8 6'),功能為設(shè)置num矩陣的初始值為2 8 6,但是需要注意的是這里是文本矩陣。3.6.3 數(shù)據(jù)輸入本設(shè)計(jì)中需要輸入的數(shù)據(jù)有矩陣和控制數(shù)據(jù)(n,k),輸入的形式都是文本字符或字符串的形式,通過(guò)
15、可編輯文本Edit Text輸入的。對(duì)于矩陣先要將字符串轉(zhuǎn)換為文本矩陣,再將文本矩陣轉(zhuǎn)換為數(shù)字矩陣,例如handles.num0=str2mat(get(handles.num_edit,'String'); handles.num1=str2num(handles.num0);將get獲得num對(duì)象字符串通過(guò)str2mat命令轉(zhuǎn)為文本矩陣handles.num0再將其通過(guò)str2num命令將其轉(zhuǎn)換為數(shù)字矩陣handles.num1,這樣便能在MATLAB中進(jìn)行處理了。3.6.4 創(chuàng)建傳遞函數(shù)和輸入量的選擇這里所用的傳遞函數(shù)有兩種兩種形式,對(duì)于已知傳遞函數(shù),以分子分母矩陣形式輸
16、入的情形比較簡(jiǎn)單,繪圖時(shí)都是直接利用分子分母矩陣。對(duì)于狀態(tài)變量形式的情況,需要先將A,B,C,D四個(gè)矩陣轉(zhuǎn)換為分子分母矩陣形式,以利于以后的繪圖和計(jì)算性能指標(biāo)。例如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數(shù)字轉(zhuǎn)化為分子矩陣handles.numx和分母矩陣handles.denx,handles.N為指定
17、ss2tf命令轉(zhuǎn)換序號(hào)為handles.N(在GUI界面中看為輸入序號(hào)n)的輸入量的數(shù)據(jù),這里我們要弄清楚輸入量的個(gè)數(shù)不能將輸入序號(hào)n的值設(shè)置的比輸入個(gè)數(shù)還大,輸入序號(hào)n的初始值設(shè)為1,表示單輸入或多輸入第一個(gè)輸入量的情況。3.6.5 選擇傳遞函數(shù)在后面的繪圖和計(jì)算性能指標(biāo)中需要選擇使用哪種形式下的傳遞函數(shù),因此設(shè)計(jì)了一個(gè)標(biāo)志位k,標(biāo)志位k的可選值為0和1,值0時(shí)為選擇分子分母形式輸入的傳遞函數(shù),值1為時(shí)選擇狀態(tài)變量形式創(chuàng)建的傳遞函數(shù),若輸入其他值,則不能正確繪圖和計(jì)算性能指標(biāo),且在命令窗口中輸出“標(biāo)志位k=0or1”以及彈出消息對(duì)話框進(jìn)行提醒,使用ifelseifelseend語(yǔ)句結(jié)構(gòu)實(shí)現(xiàn)這
18、些功能。例如if handles.K=0 bode(handles.num1,handles.den1); elseif handles.K=1 bode(handles.numx,handles.denx); else disp('標(biāo)志位k=0or1'); end3.6.6 繪圖類型的選擇繪圖和計(jì)算性能指標(biāo)類型是集中在下拉式列表框中的,因此需要對(duì)他們進(jìn)行選擇識(shí)別,每次用戶選擇其中的某項(xiàng)功能時(shí),下拉式列表框的回調(diào)函數(shù)都會(huì)讀取下拉式列表框的Value屬性值,以便執(zhí)行相應(yīng)的功能,這里使用分支語(yǔ)句實(shí)現(xiàn)實(shí)現(xiàn)選擇,例如:val=get(hObject,'Value');s
19、tr=get(hObject,'String');switch strval case 'Nyquist' hs=figure; if handles.K=0 nyquist(handles.num1,handles.den1); elseif handles.K=1 nyquist(handles.numx,handles.denx); else disp('標(biāo)志位k=0or1'); end title('Nyquist Fig'); 圖 3.5 k輸入其他值時(shí)消息提醒3.6.7 性能指標(biāo)計(jì)算性能指標(biāo)是計(jì)算系統(tǒng)階躍響應(yīng)的相關(guān)指標(biāo)
20、,這里計(jì)算了六項(xiàng),分別為,% mp-峰值% Tp-峰值時(shí)間% Tr-上升時(shí)間% Del-超調(diào)量% Ts-調(diào)整時(shí)間(2%準(zhǔn)則)% yss-穩(wěn)態(tài)值程序中將階躍響應(yīng)設(shè)置成幅值和時(shí)間兩者返回?cái)?shù)據(jù)來(lái)表現(xiàn)Y,t=step(sys);,這樣就能方便的計(jì)算出mp,Tp,yss。上升時(shí)間是定義成幅值從0.1(t1)達(dá)到0.9(t2)的時(shí)間,計(jì)算式為 調(diào)整時(shí)間為最后一超出2%準(zhǔn)則區(qū)域后再一次進(jìn)入2%準(zhǔn)則區(qū)域時(shí)的時(shí)間,這里需要用程序進(jìn)行循環(huán)判斷,以確定Ts,具體見(jiàn)附錄程序。超調(diào)量計(jì)算式為在這里我們可以在繪制階躍響應(yīng)時(shí)在程序中加上兩條語(yǔ)句hs=figure;step(handles.num1,handles.den1
21、);(對(duì)應(yīng)k=0,當(dāng)然也可以針對(duì)k=1加對(duì)應(yīng)的語(yǔ)句)使之在axes中繪圖的同時(shí)也繪制一張F(tuán)igure圖,在這張圖中,可以點(diǎn)擊右鍵,選擇“characteristics”選擇相應(yīng)的性能指標(biāo),Peak Response ,Setting Time ,Rise Time ,Steady State ,在選擇Peak Response時(shí),將鼠標(biāo)定位在相應(yīng)的曲線點(diǎn)上還能顯示Overshoot和At time兩項(xiàng)指標(biāo),我們可以從這張圖中得到的信息和命令窗口中輸出的指標(biāo)信息進(jìn)行對(duì)比,發(fā)現(xiàn)計(jì)算還是比較準(zhǔn)確的,初始設(shè)置數(shù)據(jù)生成的傳遞函數(shù)(k=0,n=1)的計(jì)算結(jié)果和Figure圖對(duì)比信息如下;Transfer
22、function: 2 s2 + 8 s + 6- Figure圖s3 + 8 s2 + 10 s + 6yss= 0.9980 1mp= 1.0948 1.09Tp= 2.8166 2.82Del= 9.7054 9.48Tr= 1.2071 1.2Ts= 5.2309 5.162.6.8 close功能close按鈕主要是在點(diǎn)擊close按鈕時(shí)關(guān)閉GUI的運(yùn)行,它的回調(diào)函數(shù)如下:function pushbutton_Callback(hObject, eventdata, handles)close;4 GUI測(cè)試4.1 初始化界面設(shè)計(jì)好GUI和編輯好程序后,保存后,接下來(lái)就是運(yùn)行GUI
23、,測(cè)試設(shè)計(jì)的正確性,查看程序是否能完成設(shè)定的功能。從“Tools”菜單中選擇“Run”選項(xiàng),或者單擊GUIDE工具條中的“”按鈕,運(yùn)行GUI。由于GUI界面的axes坐標(biāo)系不是復(fù)數(shù)坐標(biāo)系,因而在繪制Nyquist,根軌跡等圖時(shí)加入一條hs=figure語(yǔ)句,使得圖形繪制在Figure中,如果使用h = axes語(yǔ)句指定axes,則會(huì)出現(xiàn)繪制的圖形充滿整個(gè)GUI界面的結(jié)果,并不令人滿意,因而這里采用繪制在Figure中的方法。GUI運(yùn)行的初始界面如下 圖 4.1 GUI初始化運(yùn)行界面4.2 對(duì)num,den模型的測(cè)試4.2.1 初始數(shù)據(jù)測(cè)試使用初始數(shù)據(jù),從下拉式列表框中,選擇目標(biāo)選項(xiàng)后,繪制的圖
24、形和計(jì)算的數(shù)據(jù)如下(n=1,k=0)num=2 8 6,den=1 8 10 6,從階躍響應(yīng)圖和Nyquist圖中可看出系統(tǒng)是穩(wěn)定的(假設(shè)傳遞函數(shù)為開(kāi)環(huán)的,則系統(tǒng)在右半平面無(wú)極點(diǎn),Nyquist曲線不包括點(diǎn)(-1,0) 圖 4.2 Bode圖 圖 4.3 Nyquist圖 圖 4.4 根軌跡圖 圖4.5 零極點(diǎn)圖 圖 4.6 nichols圖 圖 4.7 幅頻響應(yīng)圖 圖 4.8 脈沖響應(yīng)圖 圖 4.9 階躍響應(yīng)圖Transfer function: 2 s2 + 8 s + 6-s3 + 8 s2 + 10 s + 6yss= 0.9980mp= 1.0948Tp= 2.8166Del= 9.
25、7054Tr= 1.2071Ts= 5.23094.2.2 改變num,den矩陣的測(cè)試改變num=1 3 5 6,den=2 8 4 9輸入則會(huì)得到不同的結(jié)果,限于篇幅,這里僅給出一些圖代表。 圖4.10 階躍響應(yīng)圖 圖4.11 零極點(diǎn)圖 圖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 對(duì)A,B, C, D模型的測(cè)
26、試 4.3.1 初始數(shù)據(jù)的測(cè)試對(duì)于A,B,C,D模型的測(cè)試,使用初始數(shù)據(jù)時(shí)為單輸入單輸出系統(tǒng),A=0 1 1;0 1 1;-6 -16 -8,B=0;0;1,C=6 8 2,D=0(n=1,k=1)這里也給出一些圖形和數(shù)據(jù),從下面的的圖形中也可以看出系統(tǒng)是穩(wěn)定的,階躍響應(yīng)最終趨于穩(wěn)定值。 圖4.15 脈沖響應(yīng)圖 圖4.16 階躍響應(yīng)圖 圖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.0000De
27、l= 0.0383Tr= 0.6857Ts= 1.0857 圖4.19 Bode圖4.3.2 改變A,矩陣的測(cè)試A,矩陣形式生成傳遞函數(shù)的優(yōu)點(diǎn)是容易進(jìn)行多輸入多輸出系統(tǒng)的生成,下面具體具體給出雙輸入單輸出的第二個(gè)變量的測(cè)試結(jié)果。數(shù)據(jù)設(shè)置如下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,輸入序號(hào)n=2,標(biāo)志位k=1,這里也順帶測(cè)試了n和k。在我們輸入矩陣時(shí)必須注意的是B的行數(shù)必須等于A的行數(shù),C的列數(shù)必須等于A的列數(shù),D的行數(shù)必須等于C的行數(shù),D的列數(shù)必須等于B的列數(shù)。測(cè)試
28、結(jié)果如下 圖4.20 脈沖響應(yīng)圖 圖4.21 階躍響應(yīng)圖 圖4.22 Bode圖 圖4.23 Nyquist圖 圖4.24根軌跡 圖4.25 零極點(diǎn)圖 圖4.26 幅頻響應(yīng)圖 圖4.27 nichols圖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從上面的階躍響應(yīng)圖,Nyquist圖和計(jì)算數(shù)據(jù)來(lái)看系統(tǒng)式不穩(wěn)定的,系統(tǒng)在右半平面有三個(gè)極點(diǎn)(假設(shè)為開(kāi)環(huán)傳
29、遞函數(shù)),但Nyquist曲線并沒(méi)有以逆時(shí)針?lè)较虬鼑c(diǎn)(-1,0)三次。計(jì)算得出的數(shù)據(jù)是以軟件停止計(jì)算時(shí)已得出的數(shù)據(jù)為基準(zhǔn)計(jì)算的,因而有些指標(biāo)不一定準(zhǔn)確,如超調(diào)量Del,他是以階躍響應(yīng)的最大值減去終值得到結(jié)果乘以100(這里是指繪圖停止時(shí)的值)再除以終值得來(lái)的,因而這里的結(jié)果是0.但對(duì)于穩(wěn)定的系統(tǒng),在計(jì)算終止時(shí)已經(jīng)穩(wěn)定了的話,計(jì)數(shù)結(jié)果就就是準(zhǔn)確的。對(duì)于多輸入多輸出系統(tǒng),由于繪制根軌跡的rlocus命令只能用于單輸出的系統(tǒng),pzmap命令對(duì)多輸入多輸出系統(tǒng)是繪制系統(tǒng)的特征向量和傳遞零點(diǎn),因而這兩個(gè)命令在本設(shè)計(jì)中對(duì)于多輸入多輸出系統(tǒng)不能使用。另外性能指標(biāo)也是針對(duì)單輸出的,也不能用,幅頻響應(yīng)也不能用
30、,否則會(huì)出錯(cuò)。下面給出一個(gè)雙輸入雙輸出例子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.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,對(duì)它的第一個(gè)輸入進(jìn)行測(cè)試,結(jié)果如下 圖4.28 階躍響應(yīng)圖 圖4.29 脈沖響應(yīng)圖 圖4.30Bode圖 圖4.31Nyquist圖 圖4.32 nichols圖4.4 對(duì)close按鈕的測(cè)試對(duì)close按鈕的測(cè)試很簡(jiǎn)單,在所有的測(cè)試過(guò)程中都可以進(jìn)行,在運(yùn)行GUI時(shí),點(diǎn)擊close按鈕就可以關(guān)
31、閉GUI的運(yùn)行,但Figure文件并不是在輸出編輯器中創(chuàng)建的,因而需要另外單獨(dú)關(guān)閉。5 設(shè)計(jì)總結(jié)本次綜合課程設(shè)計(jì)要求設(shè)計(jì)一個(gè)控制系統(tǒng)的分析和設(shè)計(jì)MATLAB GUI界面,界面包括控制系統(tǒng)的常用功能。MATLAB GUI擁有強(qiáng)大的圖形用戶界面設(shè)計(jì)功能,GUIDE提供了一系列創(chuàng)建圖形用戶界面的工具,fig文件的設(shè)計(jì)因而比較簡(jiǎn)單,大體可分為啟動(dòng)GUI,設(shè)定GUI窗口大小,添加組件對(duì)齊組件,設(shè)置組件的屬性,對(duì)象瀏覽等幾個(gè)步驟,這些工作比較簡(jiǎn)單,一看就會(huì),關(guān)鍵是在于M文件的編寫。由于是第一次使用MATLAB GUI,因而不可避免的遇到許多問(wèn)題,尤其是在程序的編寫上。首先是在數(shù)據(jù)的輸入上,GUI中的數(shù)據(jù)都
32、是以字符的形式輸入的,這和命令窗口中直接輸入數(shù)字?jǐn)?shù)據(jù)截然不同,雖然感慨時(shí)就注意到了這一點(diǎn),設(shè)計(jì)中對(duì)單數(shù)字的輸入頁(yè)沒(méi)有問(wèn)題,但對(duì)矩陣的輸入?yún)s有問(wèn)題,后來(lái)查書發(fā)現(xiàn)str2mat命令只是將字符串輸入轉(zhuǎn)換為文本矩陣,還需要用到str2num命令將文本矩陣轉(zhuǎn)換為數(shù)字矩陣,到此也一并解決了ss2tf命令需要A矩陣為方陣的問(wèn)題。遇到的另一個(gè)主要問(wèn)題是設(shè)計(jì)的過(guò)程中有時(shí)需要對(duì)fig文件進(jìn)行修改,比如對(duì)某個(gè)組件的Tag屬性進(jìn)行修改,保存后,但是在M文件中查看函數(shù)列表時(shí),發(fā)現(xiàn)相關(guān)組件的回調(diào)函數(shù)名稱并沒(méi)有改正過(guò)來(lái),雖然運(yùn)行GUI時(shí)調(diào)用可能沒(méi)有問(wèn)題,但卻給人不統(tǒng)一的感覺(jué),這時(shí)有可能就要重新設(shè)計(jì)。不過(guò)相對(duì)來(lái)說(shuō),MATLA
33、B GUI使用起來(lái)還是比較方便的。通過(guò)這次的綜合課程設(shè)計(jì)使我們學(xué)到了很多東西,從我們拿到題目開(kāi)始,我們就需要認(rèn)真對(duì)其進(jìn)行分析,查找相關(guān)資料,翻看某些輔導(dǎo)書籍學(xué)習(xí)MATLAB GUI的使用方法,經(jīng)過(guò)這近三周的課程設(shè)計(jì),雖然斷斷續(xù)續(xù)的,但也從這些工作中學(xué)到很多,第一,我們熟悉了MATLAB中很多的繪圖命令,如Nyquist,pzmap等,也熟悉一些數(shù)據(jù)轉(zhuǎn)換命令如ss2tf,str2mat,str2num以及設(shè)置對(duì)象屬性命令set,獲得對(duì)象屬性命令get等等,這些知識(shí)的積累對(duì)我們今后用到的MATLAB GUI時(shí)是一次很好的先前練習(xí),同時(shí)也進(jìn)一步充實(shí)了MATLAB的知識(shí);第二我們進(jìn)一步認(rèn)識(shí)到論文格式規(guī)
34、范性的重要,為我們將來(lái)的畢業(yè)論文的書寫打下基礎(chǔ)??傊?,此次課程設(shè)計(jì)既是對(duì)我們綜合運(yùn)用各科知識(shí)能力的培養(yǎng),也是對(duì)我們自學(xué)知識(shí)并加以運(yùn)用和研究問(wèn)題的能力得以提高。最后,感謝謝蓉華老師的指導(dǎo)。附錄%GUI設(shè)計(jì)程序function varargout = sheji(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, . 'gui_Singleton', gui_Singleton, . 'gui_OpeningFcn', sheji_OpeningFcn, .
35、9;gui_OutputFcn', sheji_OutputFcn, . 'gui_LayoutFcn', , . 'gui_Callback', );if nargin && ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);endfunction
36、sheji_OpeningFcn(hObject, eventdata, handles, varargin) %初始化函數(shù)handles.membrane=membrane;x,y=meshgrid(-8:.5:8);r=sqrt(x.2+y.2)+eps;handles.current_data=handles.membrane;surf(handles.current_data);set(handles.k_edit,'String','0'); %設(shè)置初始屬性值handles.K=str2num(get(handles.k_edit,'Strin
37、g'); %獲得屬性值set(handles.num_edit,'String','2 8 6');set(handles.den_edit,'String','1 8 10 6');handles.num0=str2mat(get(handles.num_edit,'String');handles.den0=str2mat(get(handles.den_edit,'String');handles.num1=str2num(handles.num0);handles.den1=str2
38、num(handles.den0);set(handles.AA,'String','0 1 1;0 1 1;-6 -16 -8');set(handles.BB,'String','0;0;1');set(handles.CC,'String','6 8 2');set(handles.DD,'String','0');set(handles.n_edit,'String','1');AAAA=str2mat(get(handles.
39、AA,'String');BBBB=str2mat(get(handles.BB,'String');CCCC=str2mat(get(handles.CC,'String');DDDD=str2mat(get(handles.DD,'String');handles.N=str2num(get(handles.n_edit,'String');handles.AAA=str2num(AAAA);handles.BBB=str2num(BBBB);handles.CCC=str2num(CCCC);handles.
40、DDD=str2num(DDDD);handles.output = hObject; %設(shè)定默認(rèn)輸出guidata(hObject, handles); %保存handles結(jié)構(gòu)function varargout = sheji_OutputFcn(hObject, eventdata, handles)varargout1 = handles.output;function num_edit_Callback(hObject, eventdata, handles)function num_edit_CreateFcn(hObject, eventdata, handles)if isp
41、c set(hObject,'BackgroundColor','white');else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor');endfunction den_edit_Callback(hObject, eventdata, handles)function den_edit_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,'BackgroundCo
42、lor','white');else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor');endfunction AA_Callback(hObject, eventdata, handles)function AA_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,'BackgroundColor','white');else set(hObject,
43、'BackgroundColor',get(0,'defaultUicontrolBackgroundColor');endfunction BB_Callback(hObject, eventdata, handles)function BB_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,'BackgroundColor','white');else set(hObject,'BackgroundColor',get(0,'defaul
44、tUicontrolBackgroundColor');endfunction CC_Callback(hObject, eventdata, handles)function CC_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,'BackgroundColor','white');else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor');endfunction
45、 DD_Callback(hObject, eventdata, handles)function DD_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,'BackgroundColor','white');else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor');endfunction n_edit_Callback(hObject, eventdata, handle
46、s)function n_edit_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,'BackgroundColor','white');else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor');endfunction k_edit_Callback(hObject, eventdata, handles)function k_edit_CreateFcn(hObject
47、, eventdata, handles)if ispc set(hObject,'BackgroundColor','white');else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor');endfunction pushbutton_Callback(hObject, eventdata, handles)close;function popupmenu_Callback(hObject, eventdata, handles)ha
48、ndles.K=str2num(get(handles.k_edit,'String'); %獲得標(biāo)志位khandles.num0=str2mat(get(handles.num_edit,'String');handles.den0=str2mat(get(handles.den_edit,'String');handles.num1=str2num(handles.num0);handles.den1=str2num(handles.den0);AAAA=str2mat(get(handles.AA,'String');BBB
49、B=str2mat(get(handles.BB,'String');CCCC=str2mat(get(handles.CC,'String');DDDD=str2mat(get(handles.DD,'String');handles.N=str2num(get(handles.n_edit,'String'); %獲得輸入順序號(hào)nhandles.AAA=str2num(AAAA);handles.BBB=str2num(BBBB);handles.CCC=str2num(CCCC);handles.DDD=str2num(DD
50、DD);handles.numx,handles.denx=ss2tf(handles.AAA,handles.BBB,handles.CCC,handles.DDD,handles.N);val=get(hObject,'Value');str=get(hObject,'String');switch strval %繪圖和計(jì)算 case 'Bode' hs=figure; if handles.K=0 bode(handles.num1,handles.den1); elseif handles.K=1 bode(handles.numx,h
51、andles.denx); else disp('標(biāo)志位k=0or1'); %錯(cuò)誤提示從命令窗口輸出 hmb=msgbox('k=0 or 1','消息對(duì)話框','warn'); %彈出提示框 end title('Bode Fig'); case 'Nyquist' hs=figure; if handles.K=0 nyquist(handles.num1,handles.den1); elseif handles.K=1 nyquist(handles.numx,handles.denx);
52、else disp('標(biāo)志位k=0or1'); hmb=msgbox('k=0 or 1','消息對(duì)話框','warn'); end title('Nyquist Fig'); case 'RootLocus' hs=figure; if handles.K=0 rlocus(handles.num1,handles.den1); elseif handles.K=1 rlocus(handles.numx,handles.denx); else disp('標(biāo)志位k=0or1'); hmb=msgbox('k=0 or 1','消息對(duì)話框','warn'); end title('Root Locus Fig'); case 'PoleZero' hs=figure; if handles.K=0 z,p=tf2zp(handles.num1,handle
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年合伙市場(chǎng)拓展協(xié)議
- 2025年仲裁裁決合同范本
- 2025年劍術(shù)表演協(xié)議
- 2025年度高端商業(yè)街區(qū)門面店鋪轉(zhuǎn)讓及租賃合作協(xié)議書3篇
- 二零二五版首付款分期購(gòu)房借款合同樣本3篇
- 2025年度木地板翻新與保養(yǎng)服務(wù)合同4篇
- 2025年新型節(jié)能廚房電器研發(fā)與銷售合作協(xié)議4篇
- 2025年度個(gè)人分紅協(xié)議書包含金融科技分紅條款4篇
- 二零二五年度新型木托盤租賃及信息化管理服務(wù)合同4篇
- 2025年度上市公司合規(guī)管理法律顧問(wèn)合同
- 湖北省石首楚源“源網(wǎng)荷儲(chǔ)”一體化項(xiàng)目可研報(bào)告
- 醫(yī)療健康大數(shù)據(jù)平臺(tái)使用手冊(cè)
- 碳排放管理員 (碳排放核查員) 理論知識(shí)考核要素細(xì)目表四級(jí)
- 撂荒地整改協(xié)議書范本
- 診所負(fù)責(zé)人免責(zé)合同范本
- 2024患者十大安全目標(biāo)
- 會(huì)陰切開(kāi)傷口裂開(kāi)的護(hù)理查房
- 實(shí)驗(yàn)報(bào)告·測(cè)定雞蛋殼中碳酸鈣的質(zhì)量分?jǐn)?shù)
- 部編版小學(xué)語(yǔ)文五年級(jí)下冊(cè)集體備課教材分析主講
- 電氣設(shè)備建筑安裝施工圖集
- 《工程結(jié)構(gòu)抗震設(shè)計(jì)》課件 第10章-地下建筑抗震設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論