唐 柳,張雅嫻
(1.貴陽(yáng)職業(yè)技術(shù)學(xué)院,貴州 貴陽(yáng) 550081;2.貴州交通職業(yè)技術(shù)學(xué)院,貴州 貴陽(yáng) 551400)
工程控制原理課程是機(jī)械類專業(yè)學(xué)生的必修課程,本課程理論性較強(qiáng),知識(shí)點(diǎn)難于理解,需要配套相應(yīng)完善的實(shí)驗(yàn)環(huán)節(jié)加強(qiáng)學(xué)生的實(shí)踐知識(shí)。受實(shí)驗(yàn)設(shè)備及場(chǎng)地的限制,我系所開設(shè)的操作性實(shí)驗(yàn)尚不能滿足課程實(shí)驗(yàn)要求。從增強(qiáng)本課程理論認(rèn)識(shí)的角度,希望通過開發(fā)相應(yīng)的控制仿真實(shí)驗(yàn)交互系統(tǒng),加強(qiáng)學(xué)生的實(shí)踐認(rèn)識(shí),并能提升教學(xué)效果。
MATLAB擁有圖形用戶編輯能力(GUI),也就是MATLAB中的Visual Basic,可以使MATLAB程序的終端用戶輕易操作該程序,而這和本次的仿真實(shí)驗(yàn)的目的要求相吻合,可以利用GUI來實(shí)現(xiàn)工程控制系統(tǒng)建模的仿真。
拖動(dòng)GUI中的控件到方格主界面進(jìn)行編輯和布局,并能通過屬性查看器修改控件的屬性,最終完成本次仿真的主界面設(shè)計(jì)。
為了方便學(xué)生和用戶更好地應(yīng)用此系統(tǒng),主界面的風(fēng)格設(shè)計(jì)簡(jiǎn)潔實(shí)用,整個(gè)界面就是一個(gè)典型的工程控制反饋系統(tǒng)框圖(圖1)。
圖1 主界面
用戶可以手動(dòng)輸入系統(tǒng)傳函,不論是開環(huán)還是閉環(huán),想用MATLAB實(shí)現(xiàn)這一功能,需要在GUI里建立幾個(gè)編輯文本框(Edit Text),以及一個(gè)普通按鈕(Pushbutton),在編輯文本框內(nèi)輸入系統(tǒng)傳函的系數(shù)或者零極點(diǎn),然后點(diǎn)擊這個(gè)按鈕,系統(tǒng)就會(huì)提取編輯文本框里的東西,然后再通過一些命令把它變成傳遞函數(shù),并將它顯示出來。
按照以上的構(gòu)思,需要在普通按鈕(Pushbutton)對(duì)應(yīng)的m文件里的Callback里輸入相應(yīng)的代碼。
在“應(yīng)用”按鈕(Pushbutton)的Callback下鍵入如下的代碼,便可實(shí)現(xiàn)用戶想要實(shí)現(xiàn)的功能。
global num den sel;
num=str2num(get(handles.fenzi,'string'));
den=str2num(get(handles.fenmu,'string'));
sys=tf(num,den);
set(handles.text6,'string',evalc('sys'));
sel=get(hObject,'Value');
Value=1;
首先將num、den和sel定義為全球變量,方便在不同的子文件中提取應(yīng)用,num和den分別為編輯文本框里的字符串(傳函系數(shù))中輸入的分子和分母系數(shù),sel是下拉菜單的一個(gè)變量。
.fenzi和.fenmu則是兩個(gè)編輯文本框的tag,提取各式為“string”,用MATLAB里自帶的函數(shù)語(yǔ)句“tf”,可以把提取出來的num和den轉(zhuǎn)換為系統(tǒng)傳函,再用set語(yǔ)句配合evalc(‘sys’),可以把傳函顯示在tag為text6的靜態(tài)文本框里,最后設(shè)置下拉菜單value值為1。
利用定位回調(diào)函數(shù)的方法找到階躍響應(yīng)的callback,開始編寫代碼:figure(‘NumberTitle’,‘off’,‘Name’,‘階躍響應(yīng)’); 意思是點(diǎn)擊菜單欄里的階躍響應(yīng)后會(huì)跳出一個(gè)figure窗口,窗口名字叫階躍響應(yīng)。
然后再將要用到的變量用global喚出,方便接下來的使用,因?yàn)闀r(shí)域分析一般都是針對(duì)閉環(huán)傳函,所以還是要用feedback將sys轉(zhuǎn)換成閉環(huán)傳函,并賦值予G,再用MATLAB自帶的step函數(shù)便可在figure里畫出系統(tǒng)的階躍響應(yīng)曲線,假設(shè)一控制系統(tǒng),H(s)=1,運(yùn)行后得到的曲線圖像如圖2。
圖2 階躍響應(yīng)曲線
為了更完整的分析,要求顯示圖像的同時(shí)顯示出其性能指標(biāo),所以要用GUI新建一個(gè)fig文件,在里面拖入一些靜態(tài)文本框,調(diào)整好位置,這些特征量包括超調(diào)量、延遲時(shí)間、上升時(shí)間、峰值時(shí)間和調(diào)整時(shí)間。
在性能指標(biāo)的子編程文件里寫好相應(yīng)的代碼,保存名為“xnzb.m”。返回主編程文件,也就是“zhujiemian.m”的階躍響應(yīng)的callback里寫入:“run xnzb”。這樣,點(diǎn)擊階躍響應(yīng)按鈕后便會(huì)跳出除響應(yīng)曲線以外的第二個(gè)窗口,性能指標(biāo)分析如圖3所示。
圖3 性能指標(biāo)
和階躍響應(yīng)的編碼相仿,也是先建立一個(gè)figure,用global提取有用的變量,用feedback將系統(tǒng)轉(zhuǎn)換成閉環(huán)的,最后用impulse命令畫出脈沖響應(yīng)的曲線,仍采用前述系統(tǒng)模型,得到的曲線圖像如圖4。
圖4 脈沖響應(yīng)曲線
可以用兩種輸入方式建立起系統(tǒng)的傳遞函數(shù),一個(gè)實(shí)際的系統(tǒng),一旦建立起數(shù)學(xué)模型,就可以采用適當(dāng)?shù)姆椒▽?duì)其性能進(jìn)行全面的分析和計(jì)算,本次仿真實(shí)驗(yàn)從時(shí)域方面采用了包含階躍響應(yīng)和脈沖響應(yīng)的分析方法,既能得到性能指標(biāo)的數(shù)值,也能生成相應(yīng)的圖像供讀者分析。