摘 要:集成自動控制系統(tǒng)常用的分析方法,,在Matlab的基礎(chǔ)上開發(fā)軟件系統(tǒng),,可以對控制系統(tǒng)進(jìn)行時域、根軌跡與頻域的分析,。該軟件不僅可以作為自動控制原理課程教學(xué)強(qiáng)有力的補(bǔ)充,,還可以為工程技術(shù)人員提供友好的分析實(shí)際自動控制系統(tǒng)的軟件環(huán)境,避開學(xué)習(xí)Matlab,,將更多的精力用于工程實(shí)踐上,。
關(guān)鍵詞:自動控制系統(tǒng),;分析軟件; Matlab
對于實(shí)際的自動控制系統(tǒng)來說,,無論用于分析還是設(shè)計(jì),,都不可避免地要對其進(jìn)行計(jì)算與作圖。在經(jīng)典的控制理論中,,時域,、根軌跡與頻域的分析方法各有千秋,很多開發(fā)環(huán)境中也有相關(guān)的算法程序,,比如Matlab[1],。Matlab是美國MathWorks公司開發(fā)的一種跨平臺的用于矩陣數(shù)值計(jì)算和可視化編程軟件,該軟件中匯集了當(dāng)前最新的數(shù)學(xué)算法庫,,編程風(fēng)格接近數(shù)學(xué)語言描述,,計(jì)算精度高,尤其在繪圖方面功能十分強(qiáng)大,,并且在Matlab基礎(chǔ)上開發(fā)的程序不依賴于計(jì)算機(jī)和操作系統(tǒng)類型,。但是要利用這些算法進(jìn)行分析自動控制系統(tǒng)時,哪怕只是一個簡單的自控系統(tǒng)對象,,使用者都必須熟悉Matlab的編程環(huán)境并進(jìn)行代碼的編制,,這大大影響了學(xué)習(xí)與工作的效率。如果能夠把所有方法集成到一個軟件環(huán)境里,,那么無論是在自動控制原理課程教學(xué)中,,還是實(shí)際的工程應(yīng)用中,都能給使用者帶來極大的方便,。
對此類分析軟件的開發(fā),,過去為了充分利用C++Builder或Visual C++等可視化編程環(huán)境在開發(fā)可視化界面的優(yōu)勢和Matlab在繪圖方面的強(qiáng)大功能以及豐富的數(shù)學(xué)算法庫,常常采用二者進(jìn)行混合編程[2-6],。但是無論采用何種接口方式,,程序運(yùn)行的速度都很難令人滿意。尤其是混合編程會忽略Matlab中的任何錯誤,,這對調(diào)試程序非常不利,,嚴(yán)重影響開發(fā)的進(jìn)度。
最近幾年,,隨著Matlab的圖形用戶界面開發(fā)環(huán)境GUI(Graphical User Interface)的不斷完善,,其在開發(fā)交互式用戶界面上的可操作性幾乎能夠同目前流行的Visual C++、C++ Builder等開發(fā)環(huán)境比擬,。雖然Matlab圖形用戶界面編程環(huán)境中可供選的控件數(shù)量還不是很多,,但是對于開發(fā)常規(guī)的實(shí)用分析軟件來說,這些已經(jīng)足夠了。而且Matlab中已經(jīng)包含了很多數(shù)學(xué)算法與繪圖函數(shù),,大大縮短了軟件的開發(fā)周期,。
本自動控制系統(tǒng)輔助分析軟件(ACAAS)是在Matlab 7.1的基礎(chǔ)上開發(fā)的,它集成了自動控制系統(tǒng)常用的分析方法,,可以對控制系統(tǒng)進(jìn)行時域,、根軌跡與頻域的分析。
1 Matlab GUI
在Matlab中有一個guide工具[7],,即Matlab的圖形用戶界面GUI的開發(fā)環(huán)境,,該工具使編程者可以通過選擇與布局GUI控件來生成GUI應(yīng)用,并對所選擇的控件進(jìn)行名字,、顏色與文本等屬性的編輯,。
1.1 guide工具
在Matlab主窗口中點(diǎn)擊“guide”快捷方式,或者在命令行輸入“guide”,,均可進(jìn)入Matlab的GUI開發(fā)環(huán)境,。
1.2 guide控件
Matlab的GUI開發(fā)環(huán)境中可供選擇的主要控件如表1所示,。
當(dāng)用戶需要用到某種控件時,,只需要用鼠標(biāo)選中該控件,然后在如圖1所示的設(shè)計(jì)區(qū)點(diǎn)擊鼠標(biāo)即可產(chǎn)生此控件,。雙擊控件,,進(jìn)入“Property Inspector”,可以編輯控件的顏色,、名稱等屬性,。在控件上單擊鼠標(biāo)右鍵,從彈出菜單中選擇“View Callback”-“Callback”,,可以對控件的觸發(fā)事件進(jìn)行編程,。
1.3 編程步驟
(1)確定需要在GUI中實(shí)現(xiàn)的功能以及每部分功能要用到的函數(shù);
(2)進(jìn)入“guide”開發(fā)環(huán)境,,選擇相關(guān)的控件,,并調(diào)整好各個功能模塊的合理布局;
(3)根據(jù)需要改變控件的屬性,,如字體,、顏色等;
(4)保存“.fig”文件,,同時系統(tǒng)會自動生成該圖形界面文件對應(yīng)的“.m”文件,;
(5)在 “.m”文件編寫控件的回調(diào)函數(shù),以實(shí)現(xiàn)相應(yīng)的功能,。
2 輔助分析軟件系統(tǒng)的設(shè)計(jì)
2.1 ACAAS 軟件主要功能模塊
ACAAS軟件的主要功能結(jié)構(gòu)圖如圖2所示,。
2.2系統(tǒng)主界面
該ACAAS系統(tǒng)主要包括自動控制系統(tǒng)模型輸入與系統(tǒng)分析,可以以單幅圖和單幅多道圖的形式對分析結(jié)果進(jìn)行顯示,。主菜單中包括“文件”,、“模型輸入”,、“分析方法”、“繪圖方式”等選項(xiàng),,每個主菜單下都有相關(guān)的子菜單,,用戶可以根據(jù)需要在各個功能菜單中方便地進(jìn)行切換。在輸入系統(tǒng)模型時,,其下面的文本框中顯示輸入的提示信息,;而分析結(jié)果的圖形得到后,用戶還可以在該文本框中看到此自動控制系統(tǒng)閉環(huán)傳遞函數(shù)的閉環(huán)極點(diǎn)情況,,得到系統(tǒng)穩(wěn)定性方面的信息,。在“文件”菜單中,用戶可以對分析結(jié)果進(jìn)行保存與打印,,也可以打開以前保存的結(jié)果,。主界面如圖3所示。
2.3系統(tǒng)模型輸入
系統(tǒng)給用戶提供了3種模型輸入形式[8]:零極點(diǎn)形式,、反饋控制結(jié)構(gòu)形式,、分子分母多項(xiàng)式形式,,用戶可以根據(jù)已知的自動控制系統(tǒng)傳遞函數(shù),,在“系統(tǒng)模型”菜單項(xiàng)中選擇最方便的輸入形式,。在零極點(diǎn)模型輸入時,,系統(tǒng)的零極點(diǎn)可能為復(fù)數(shù),,按“-5+2j”的形式輸入即可,。而反饋控制結(jié)構(gòu)模型和分子分母多項(xiàng)式模型中,,輸入?yún)?shù)均為實(shí)數(shù),。模型輸入界面如圖4所示,。
圖4中,,由反饋控制結(jié)構(gòu)多項(xiàng)式系統(tǒng)形式輸入的自動控制系統(tǒng)傳遞函數(shù)為:
而由閉環(huán)多項(xiàng)式系數(shù)模型與閉環(huán)零極點(diǎn)模型輸入的自動控制系統(tǒng)傳遞函數(shù)分別為:
以零極點(diǎn)模型輸入界面為例,下面是主要的程序代碼,。
function ZPMenuItem_Callback(hObject, eventdata, handles)
global MdlValue %定義全局變量
MdlValue=1; %定義模型控制字:1-零極點(diǎn)模型,,2-多項(xiàng)式模型,3-反饋控制結(jié)構(gòu)模型
%顯示零極點(diǎn)模型的輸入部件組
set(findobj(gcf,'Tag','MDLuipanel'),'Title','閉環(huán)零極點(diǎn)模型');
set(findobj(gcf,'Tag','text1'),'Visible','off');
set(findobj(gcf,'Tag','text3'),'Visible','on');
set(findobj(gcf,'Tag','text2'),'Visible','on');
set(findobj(gcf,'Tag','text4'),'Visible','on');
set(findobj(gcf,'Tag','GFZedit'),'Visible','off');
set(findobj(gcf,'Tag','HFZedit'),'Visible','on');
set(findobj(gcf,'Tag','GFMedit'),'Visible','on');
set(findobj(gcf,'Tag','HFMedit'),'Visible','on');
%給零極點(diǎn)模型的輸入部件的文本屬性或編輯框內(nèi)容賦值
set(findobj(gcf,'Tag','text2'),'String','增益:');
set(findobj(gcf,'Tag','text3'),'String','零點(diǎn):');
set(findobj(gcf,'Tag','text4'),'String','極點(diǎn):');
set(findobj(gcf,'Tag','GFMedit'),'String','10');
set(findobj(gcf,'Tag','HFZedit'),'String','-1 -2');
set(findobj(gcf,'Tag','HFMedit'),'String','-3 -4 -5');
%用戶輸入提示
fmtData ={'輸入數(shù)據(jù)時,,兩個數(shù)之間請用空格分隔符,!' '若為復(fù)數(shù)時,請按如下格式輸入: -5+2j' '注意 j 的位置不可與2交換,!' };
Mstring=sprintf('%s\n%s\n%s\n',fmtData{1},fmtData{2},fmtData{3});
set(findobj(gcf,'Tag','SMedit'),'String',Mstring)
2.4 分析方法設(shè)計(jì)
在經(jīng)典的控制理論中,,分析自動控制系統(tǒng)性能的方法有時域法、頻域法和根軌跡法[9],。在時域法中系統(tǒng)常見的輸入信號為單位階躍與脈沖信號,,對應(yīng)的響應(yīng)結(jié)果可以在該軟件中顯示。頻域法中表示系統(tǒng)頻率特性的圖形有奈氏圖、對數(shù)幅頻特性曲線和對數(shù)相頻特性曲線,。這些方法都可以在菜單“分析方法”中進(jìn)行選擇,。利用結(jié)果顯示曲線,可以用相應(yīng)的方法對自動控制系統(tǒng)進(jìn)行性能分析,。
以根軌跡分析為例,,下面是主要的程序代碼。
function GMenuItem_Callback(hObject, eventdata, handles)
global MdlValue TxValue Fxtag FxValue
%聲明全局變量
FxValue=3; %1-階躍響應(yīng),,2-脈沖響應(yīng),,3-根軌跡,4-奈氏圖
……
switch MdlValue %判斷模型輸入方式
case 1 %1-零極點(diǎn)模型
%讀入模型參數(shù)
K=(get(findobj(gcf,'Tag','GFMedit'),'String'));
Z=(get(findobj(gcf,'Tag','HFZedit'),'String'));
P=(get(findobj(gcf,'Tag','HFMedit'),'String'));
%將字符串類型轉(zhuǎn)化為數(shù)字型
k=str2num(K);
z=str2num(Z);
p=str2num(P);
%提示輸入錯誤
if isempty(k)==1|isempty(p)==1; %零點(diǎn)z可以為空 errordlg('輸入?yún)⒘坎环弦?#39;,'錯誤');
else
axes(handles.axes1); %選擇繪圖部件
G=zpk(z,p,k); %生成傳遞函數(shù)
rlocus(G); %畫根軌跡
sgrid;
……
end
case 2 ……
case 3 ……
2.5 繪圖方式設(shè)計(jì)
使用ACAAS系統(tǒng),,用戶可以得到所選擇的分析方法所對應(yīng)的單道分析曲線,,如圖5所示。為了方便用戶對不同的自動控制系統(tǒng)的性能進(jìn)行對比分析,,該軟件還為用戶提供了“單幅多道圖” 的繪圖形式,,即在同一坐標(biāo)系下繪制多條不同的自動控制系統(tǒng)的分析曲線。對時域法,、頻域法和根軌跡法,,均可以采用此種繪圖方式。從“單幅多道圖”中能夠很容易看出某一參數(shù)的變化及對系統(tǒng)性能的影響,。
下面是主要的程序代碼,。
……
switch TxValue
case 1 %單道圖
axes(handles.axes1);
cla;
case 2 %多道圖
if Fxtag==FxValue
axes(handles.axes1);
hold on
else
warndlg('請?jiān)谕环N分析方法下使用,!','提示');
end
end
……
圖6是3個放大系數(shù)不同的自控系統(tǒng)Φ(s)的單位階躍響應(yīng)曲線,,利用該圖可以立刻得到放大系數(shù)對系統(tǒng)性能的影響,即:隨著放大系數(shù)的增加,,系統(tǒng)的穩(wěn)態(tài)誤差減少,,但是超調(diào)增大,震蕩加劇,。其中
自動控制系統(tǒng)輔助分析軟件(ACAAS)采用Matlab7.1中的GUI環(huán)境進(jìn)行開發(fā),,充分利用了Matlab中集成的關(guān)于自動控制系統(tǒng)的性能分析算法庫和強(qiáng)大的繪圖功能,特別是由于自動控制系統(tǒng)的性能分析算法庫與GUI開發(fā)工具均屬于Matlab軟件,,因此用戶輸入與分析算法之間的接口變得十分容易,,大大縮短了軟件的開發(fā)周期。與傳統(tǒng)的采用混合編程模式開發(fā)的同類型軟件系統(tǒng)相比,,該軟件易于維護(hù)與升級,,在運(yùn)行時間上其優(yōu)勢更加突出。
采用ACAAS,,用戶可以十分方便地分析自動控制系統(tǒng)的時域,、根軌跡與頻域性能,并在“單幅多道圖”中對不同系統(tǒng)之間進(jìn)行性能比較,為下一步進(jìn)行自動控制系統(tǒng)的設(shè)計(jì)打下良好的理論基礎(chǔ),。該軟件不僅可以作為《自動控制原理》課程教學(xué)強(qiáng)有力的補(bǔ)充,,并且在Matlab仿真環(huán)境與自動控制工程設(shè)計(jì)人員之間搭起了一座橋梁,使他們不必花大量的時間用于Matlab的學(xué)習(xí)就可以對系統(tǒng)進(jìn)行仿真,,能夠?qū)⒏嗟木τ糜诠こ虒?shí)踐與應(yīng)用上,。
參考文獻(xiàn)
[1] 徐明遠(yuǎn).Matlab仿真在通信與電子工程中的應(yīng)用[M]. 西安:西安電子科技大學(xué)出版社,2005.
[2] 劉維.精通MATLAB與C/C++混合程序設(shè)計(jì)[M]. 北京:北京航空航天大學(xué)出版社,,2005.
[3] 邢輝.基于C++ Builder和MATLAB混合編程的仿真應(yīng)用[J].計(jì)算機(jī)與現(xiàn)代化,,2005(10).
[4] 張寶利.從Matlab版本間差異看VC與Matlab混合編程趨勢[J].長春工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2008,29(02).
[5] 彭博棟.VC6.0與MATLAB7.X混合編程方法研究[J].計(jì)算機(jī)與數(shù)字工程,2008,36(09).
[6] 黃金明. VC++與MATLAB的混合編程研究[J]. 電腦開發(fā)與應(yīng)用,2008,21(10).
[7] CHAPMA S J. Matlab programming for engineers[M]. Beijing: Science Press, 2003.
[8] 薛定宇. 反饋控制系統(tǒng)分析與設(shè)計(jì)[M]. 北京:清華大學(xué)出版社,2000.
[9] 黃堅(jiān).自動控制原理及其應(yīng)用[M]. 北京:高等教育出版社,,2004.