GUI指導教程系列(9):在GUI中調用含未知參數(shù)的Simulink模型培訓講學_第1頁
GUI指導教程系列(9):在GUI中調用含未知參數(shù)的Simulink模型培訓講學_第2頁
GUI指導教程系列(9):在GUI中調用含未知參數(shù)的Simulink模型培訓講學_第3頁
GUI指導教程系列(9):在GUI中調用含未知參數(shù)的Simulink模型培訓講學_第4頁
GUI指導教程系列(9):在GUI中調用含未知參數(shù)的Simulink模型培訓講學_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Good is good, but better carries it.精益求精,善益求善。GUI指導教程系列(9):在GUI中調用含未知參數(shù)的Simulink模型-本節(jié)教程主要向大家演示使用三種不同的方法,在GUIDE中嵌入HYPERLINK/forum.php?gid=44Simulink模塊。關于原理大家可以參考HYPERLINK/access/helpdesk/help/techdoc/creating_guis/f6-8865.html/access/.g_guis/f6-8865.html在Simulink中能夠直觀快速的搭建系統(tǒng)模型,如果再聯(lián)合GUIDE的面向對象可視化編程,可以

2、說是錦上添花!將Simulink融入到GUIDE中可以方便模型的終端用戶,很容易直接可視化的操控模型參數(shù)和顯示仿真結果,而此時并不需要進入Simulink環(huán)境。構建Simulink模型該部分我們將快速的構建一個Simulink模型方便在后面的GUIDE中使用。本次我們就使用一個簡單的二階“質量-彈簧-阻尼”系統(tǒng)作為示例吧。在使用該教程時,我們假定您已經(jīng)具備Simulink相關建?;A和了解“質量-彈簧-阻尼”系統(tǒng)的理論。因此在這里我就不深入介紹Simulink模型的建立和“質量-彈簧-阻尼”系統(tǒng)的數(shù)學推導。如果的確需要,建議您參考下HYPERLINK/Tutorials/Matlab/Simu

3、link/index.html/Tutorials/Matlab/Simulink/index.html1、先HYPERLINK/down/下載論壇為您制作好的Simulink和GUI模型HYPERLINK/forum.php?mod=attachment&aid=NDQ0OXxhNmY4ZDRlNnwxMzY3NTY4Mjg5fDI1Njg1NXw1ODMysimulink-gui.zip(13.04KB,下載次數(shù):1130),包含simulink_gui.fig、simulink_gui.m、simulateButton.m和mass_spring.mdl四個文件,將其解壓到HYPERLI

4、NK/MATLAB工作目錄。2、在Simulink中打開模型,框圖如下所示3、請注意增益(Gain)模塊的增益使用的是變量1/m、c/m和k/m,而不是數(shù)值。因為Simulink默認使用基本狀態(tài)空間(BaseWorkSpace)的數(shù)據(jù),因此在仿真之前必須先在狀態(tài)空間定義參數(shù)m、c和k,否則將出錯。當然我們可以使用set_param()函數(shù)直接設置參數(shù),這個將會在后面講解。4、由于函數(shù)有自己的狀態(tài)空間(不是BaseWorkspace),因此在函數(shù)中使用sim()函數(shù)進行模型仿真,即使你在函數(shù)中定義了模型的必要參數(shù),但是這些參數(shù)只存在于函數(shù)狀態(tài)空間中,模型在仿真是沒法獲取。比如下面的代碼將會導致錯

5、誤functionrunSimulinkModel(m,c,k)%即使在函數(shù)中有模型的參數(shù)輸入或定義,但是Simulink默認只使用基本狀態(tài)空間的數(shù)據(jù)sim(mass_spring);復制代碼5、由于函數(shù)狀態(tài)空間和基本狀態(tài)空間的變量和數(shù)據(jù)不兼容,這就增加了在GUIDE中調用Simulink模型的難度。在接下來的教程中,我們將討論使用三種方法來解決這個問題!GUIDE調用Simulink方法一:主要使用set_param函數(shù)設置仿真參數(shù),具體參考HYPERLINK/thread-17464-1-1.html/thread-17464-1-1.html方法二:Simulink中提供的simset(

6、)函數(shù),可以讓用戶自定Simulink模型的運行空間(默認是BaseWorkspace),我們只要將Simulink設置為從當前工作空間運行就Ok了。關于simset的更多用法,感興趣的網(wǎng)友可以自己參考Matlab幫助!1、在GUIDE中打開simulink_gui.fig文件(不會使用GUIDE,那先看下HYPERLINK/thread-5217-1-1.html/thread-5217-1-1.html),GUI布局如下所示2、打開simulink_gui.m文件定位到Simulate!按鈕的回調函數(shù)simulate_pushbutton_Callback,在后面添加如下代碼axes(ha

7、ndles.axes1)%將axes1設置為當前坐標系,便于繪制仿真結果m=str2num(get(handles.mass_editText,String);%獲取質量c=str2num(get(handles.damping_editText,String);%獲取阻尼k=str2num(get(handles.spring_editText,String);%獲取勁度系數(shù)%配置Simulink仿真選項,使其使用當前工作空間%設置Simulink從當前工作空間運行options=simset(SrcWorkspace,current);%使用sim()函數(shù)對模型進行仿真%第一參數(shù)是模型名稱

8、%第二個參數(shù)是向量,指定仿真開始和結束時間%如果設置為,則使用在Simulink中設置的始末時間%第三個參數(shù)設置Simulink仿真選項sim(mass_spring,options);%繪制圖形%模型中有一個OUT模塊,使用它我們可以設置輸出變量為tout和yout%然后就可以直接調用Simulink的獲取仿真結果tout和yout進行繪圖了plot(tout,yout)xlabel(Time)ylabel(Displacement)Title(2ndOrderMassSpringSystem)gridon復制代碼3、保存修改,再運行GUI。在文本框中輸入“質量-彈簧-阻尼”系統(tǒng)的三個參數(shù)(

9、注意不要輸入字母、符號或負數(shù)),然后點擊“Simulate!”按鈕,看看我們的勞動成果吧!方法三:1、同樣在GUIDE中打開未經(jīng)有修改的simulink_gui.fig文件2、雙擊“Simulate!”按鈕打開屬性查看器,將Callback屬性修改為simulateButton。以后每次點擊“Simulate!”按鈕時,則GUI只響應simlateButton中定義的操作,而不是simulate_pushbutton_Callback。注意:simulateButton是另外編寫的一個M腳本文件,MATLAB中腳本文件(不同于函數(shù)文件)中的所有變量和數(shù)據(jù)共用基本狀態(tài)空間。3、其實simulat

10、eButton.m腳本的代碼如下%注意到simulateButton.m文件不是一個M函數(shù)(以function開頭的為M函數(shù)),而是M腳本!%Matlab腳本將在基本工作空間運行,它涉及到所有的變量和數(shù)據(jù)都保存在基本工作空間!%而Simulink所有參數(shù)默認調用基本工作空間的數(shù)據(jù),所以此時我們就可以直接使用sim()函數(shù)進行模型仿真了!clearall%獲取當前GUI窗體的句柄h=gcf;%獲取GUI的handles結構體,它包含了所有控件的信息handles=guidata(h);%選擇當前坐標系,由于后面的繪圖axes(handles.axes1);%獲取文本框中的Simulink仿真參數(shù)m=str2num(get(handles.mass_editText,String);%注意獲取的string是一個字符串,需要使用str2num將其轉換為數(shù)值c=str2num(get(handles.damping_editText,String);k=str2num(get(handles.spring_editText,String);%仿真系統(tǒng)sim(mass_spring);%繪制仿真結果圖形plot(tout,yout)x

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論