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