《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 設(shè)計(jì)應(yīng)用 > 自動(dòng)控制系統(tǒng)綜合分析軟件的設(shè)計(jì)
自動(dòng)控制系統(tǒng)綜合分析軟件的設(shè)計(jì)
劉 莉,張 健,李煥洲
四川師范大學(xué) 物理與電子工程學(xué)院,四川 成都 610066
摘要: 集成自動(dòng)控制系統(tǒng)常用的分析方法,在Matlab的基礎(chǔ)上開(kāi)發(fā)軟件系統(tǒng),可以對(duì)控制系統(tǒng)進(jìn)行時(shí)域、根軌跡與頻域的分析。該軟件不僅可以作為自動(dòng)控制原理課程教學(xué)強(qiáng)有力的補(bǔ)充,還可以為工程技術(shù)人員提供友好的分析實(shí)際自動(dòng)控制系統(tǒng)的軟件環(huán)境,避開(kāi)學(xué)習(xí)Matlab,將更多的精力用于工程實(shí)踐上。
Abstract:
Key words :

摘 要:集成自動(dòng)控制系統(tǒng)常用的分析方法,在Matlab的基礎(chǔ)上開(kāi)發(fā)軟件系統(tǒng),可以對(duì)控制系統(tǒng)進(jìn)行時(shí)域、根軌跡與頻域的分析。該軟件不僅可以作為自動(dòng)控制原理課程教學(xué)強(qiáng)有力的補(bǔ)充,還可以為工程技術(shù)人員提供友好的分析實(shí)際自動(dòng)控制系統(tǒng)的軟件環(huán)境,避開(kāi)學(xué)習(xí)Matlab,將更多的精力用于工程實(shí)踐上。
關(guān)鍵詞:自動(dòng)控制系統(tǒng);分析軟件; Matlab

  對(duì)于實(shí)際的自動(dòng)控制系統(tǒng)來(lái)說(shuō),無(wú)論用于分析還是設(shè)計(jì),都不可避免地要對(duì)其進(jìn)行計(jì)算與作圖。在經(jīng)典的控制理論中,時(shí)域、根軌跡與頻域的分析方法各有千秋,很多開(kāi)發(fā)環(huán)境中也有相關(guān)的算法程序,比如Matlab[1]。Matlab是美國(guó)MathWorks公司開(kāi)發(fā)的一種跨平臺(tái)的用于矩陣數(shù)值計(jì)算和可視化編程軟件,該軟件中匯集了當(dāng)前最新的數(shù)學(xué)算法庫(kù),編程風(fēng)格接近數(shù)學(xué)語(yǔ)言描述,計(jì)算精度高,尤其在繪圖方面功能十分強(qiáng)大,并且在Matlab基礎(chǔ)上開(kāi)發(fā)的程序不依賴(lài)于計(jì)算機(jī)和操作系統(tǒng)類(lèi)型。但是要利用這些算法進(jìn)行分析自動(dòng)控制系統(tǒng)時(shí),哪怕只是一個(gè)簡(jiǎn)單的自控系統(tǒng)對(duì)象,使用者都必須熟悉Matlab的編程環(huán)境并進(jìn)行代碼的編制,這大大影響了學(xué)習(xí)與工作的效率。如果能夠把所有方法集成到一個(gè)軟件環(huán)境里,那么無(wú)論是在自動(dòng)控制原理課程教學(xué)中,還是實(shí)際的工程應(yīng)用中,都能給使用者帶來(lái)極大的方便。
  對(duì)此類(lèi)分析軟件的開(kāi)發(fā),過(guò)去為了充分利用C++Builder或Visual C++等可視化編程環(huán)境在開(kāi)發(fā)可視化界面的優(yōu)勢(shì)和Matlab在繪圖方面的強(qiáng)大功能以及豐富的數(shù)學(xué)算法庫(kù),常常采用二者進(jìn)行混合編程[2-6]。但是無(wú)論采用何種接口方式,程序運(yùn)行的速度都很難令人滿(mǎn)意。尤其是混合編程會(huì)忽略Matlab中的任何錯(cuò)誤,這對(duì)調(diào)試程序非常不利,嚴(yán)重影響開(kāi)發(fā)的進(jìn)度。
  最近幾年,隨著Matlab的圖形用戶(hù)界面開(kāi)發(fā)環(huán)境GUI(Graphical User Interface)的不斷完善,其在開(kāi)發(fā)交互式用戶(hù)界面上的可操作性幾乎能夠同目前流行的Visual C++、C++  Builder等開(kāi)發(fā)環(huán)境比擬。雖然Matlab圖形用戶(hù)界面編程環(huán)境中可供選的控件數(shù)量還不是很多,但是對(duì)于開(kāi)發(fā)常規(guī)的實(shí)用分析軟件來(lái)說(shuō),這些已經(jīng)足夠了。而且Matlab中已經(jīng)包含了很多數(shù)學(xué)算法與繪圖函數(shù),大大縮短了軟件的開(kāi)發(fā)周期。
  本自動(dòng)控制系統(tǒng)輔助分析軟件(ACAAS)是在Matlab 7.1的基礎(chǔ)上開(kāi)發(fā)的,它集成了自動(dòng)控制系統(tǒng)常用的分析方法,可以對(duì)控制系統(tǒng)進(jìn)行時(shí)域、根軌跡與頻域的分析。
1 Matlab GUI
   在Matlab中有一個(gè)guide工具[7],即Matlab的圖形用戶(hù)界面GUI的開(kāi)發(fā)環(huán)境,該工具使編程者可以通過(guò)選擇與布局GUI控件來(lái)生成GUI應(yīng)用,并對(duì)所選擇的控件進(jìn)行名字、顏色與文本等屬性的編輯。
1.1 guide工具
   在Matlab主窗口中點(diǎn)擊“guide”快捷方式,或者在命令行輸入“guide”,均可進(jìn)入Matlab的GUI開(kāi)發(fā)環(huán)境。
1.2 guide控件
  Matlab的GUI開(kāi)發(fā)環(huán)境中可供選擇的主要控件如表1所示。

     當(dāng)用戶(hù)需要用到某種控件時(shí),只需要用鼠標(biāo)選中該控件,然后在如圖1所示的設(shè)計(jì)區(qū)點(diǎn)擊鼠標(biāo)即可產(chǎn)生此控件。雙擊控件,進(jìn)入“Property Inspector”,可以編輯控件的顏色、名稱(chēng)等屬性。在控件上單擊鼠標(biāo)右鍵,從彈出菜單中選擇“View Callback”-“Callback”,可以對(duì)控件的觸發(fā)事件進(jìn)行編程。

1.3 編程步驟
   (1)確定需要在GUI中實(shí)現(xiàn)的功能以及每部分功能要用到的函數(shù);
   (2)進(jìn)入“guide”開(kāi)發(fā)環(huán)境,選擇相關(guān)的控件,并調(diào)整好各個(gè)功能模塊的合理布局;
   (3)根據(jù)需要改變控件的屬性,如字體、顏色等;
   (4)保存“.fig”文件,同時(shí)系統(tǒng)會(huì)自動(dòng)生成該圖形界面文件對(duì)應(yīng)的“.m”文件;
   (5)在 “.m”文件編寫(xiě)控件的回調(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)主要包括自動(dòng)控制系統(tǒng)模型輸入與系統(tǒng)分析,可以以單幅圖和單幅多道圖的形式對(duì)分析結(jié)果進(jìn)行顯示。主菜單中包括“文件”、“模型輸入”、“分析方法”、“繪圖方式”等選項(xiàng),每個(gè)主菜單下都有相關(guān)的子菜單,用戶(hù)可以根據(jù)需要在各個(gè)功能菜單中方便地進(jìn)行切換。在輸入系統(tǒng)模型時(shí),其下面的文本框中顯示輸入的提示信息;而分析結(jié)果的圖形得到后,用戶(hù)還可以在該文本框中看到此自動(dòng)控制系統(tǒng)閉環(huán)傳遞函數(shù)的閉環(huán)極點(diǎn)情況,得到系統(tǒng)穩(wěn)定性方面的信息。在“文件”菜單中,用戶(hù)可以對(duì)分析結(jié)果進(jìn)行保存與打印,也可以打開(kāi)以前保存的結(jié)果。主界面如圖3所示。

2.3系統(tǒng)模型輸入
  系統(tǒng)給用戶(hù)提供了3種模型輸入形式[8]:零極點(diǎn)形式、反饋控制結(jié)構(gòu)形式、分子分母多項(xiàng)式形式,用戶(hù)可以根據(jù)已知的自動(dòng)控制系統(tǒng)傳遞函數(shù),在“系統(tǒng)模型”菜單項(xiàng)中選擇最方便的輸入形式。在零極點(diǎn)模型輸入時(shí),系統(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)形式輸入的自動(dòng)控制系統(tǒng)傳遞函數(shù)為:
   

   而由閉環(huán)多項(xiàng)式系數(shù)模型與閉環(huán)零極點(diǎn)模型輸入的自動(dòng)控制系統(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');
            %用戶(hù)輸入提示
  fmtData ={'輸入數(shù)據(jù)時(shí),兩個(gè)數(shù)之間請(qǐng)用空格分隔符!'  '若為復(fù)數(shù)時(shí),請(qǐng)按如下格式輸入:  -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)典的控制理論中,分析自動(dòng)控制系統(tǒng)性能的方法有時(shí)域法、頻域法和根軌跡法[9]。在時(shí)域法中系統(tǒng)常見(jiàn)的輸入信號(hào)為單位階躍與脈沖信號(hào),對(duì)應(yīng)的響應(yīng)結(jié)果可以在該軟件中顯示。頻域法中表示系統(tǒng)頻率特性的圖形有奈氏圖、對(duì)數(shù)幅頻特性曲線和對(duì)數(shù)相頻特性曲線。這些方法都可以在菜單“分析方法”中進(jìn)行選擇。利用結(jié)果顯示曲線,可以用相應(yīng)的方法對(duì)自動(dò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'));
           %將字符串類(lèi)型轉(zhuǎn)化為數(shù)字型
  k=str2num(K);
  z=str2num(Z);
  p=str2num(P);
           %提示輸入錯(cuò)誤
  if isempty(k)==1|isempty(p)==1;  %零點(diǎn)z可以為空  errordlg('輸入?yún)⒘坎环弦?#39;,'錯(cuò)誤');
  else
    axes(handles.axes1);              %選擇繪圖部件
    G=zpk(z,p,k);                      %生成傳遞函數(shù)

    rlocus(G);                           %畫(huà)根軌跡
    sgrid;
     ……
  end
     case 2       ……
     case 3  ……
2.5 繪圖方式設(shè)計(jì)
  使用ACAAS系統(tǒng),用戶(hù)可以得到所選擇的分析方法所對(duì)應(yīng)的單道分析曲線,如圖5所示。為了方便用戶(hù)對(duì)不同的自動(dòng)控制系統(tǒng)的性能進(jìn)行對(duì)比分析,該軟件還為用戶(hù)提供了“單幅多道圖” 的繪圖形式,即在同一坐標(biāo)系下繪制多條不同的自動(dòng)控制系統(tǒng)的分析曲線。對(duì)時(shí)域法、頻域法和根軌跡法,均可以采用此種繪圖方式。從“單幅多道圖”中能夠很容易看出某一參數(shù)的變化及對(duì)系統(tǒng)性能的影響。

  下面是主要的程序代碼。
  ……
  switch TxValue 
      case 1                %單道圖
       axes(handles.axes1);
            cla;
      case 2                 %多道圖
       if Fxtag==FxValue 
       axes(handles.axes1);
       hold on
       else           
  warndlg('請(qǐng)?jiān)谕环N分析方法下使用!','提示');
         end   
  end
   ……
  圖6是3個(gè)放大系數(shù)不同的自控系統(tǒng)Φ(s)的單位階躍響應(yīng)曲線,利用該圖可以立刻得到放大系數(shù)對(duì)系統(tǒng)性能的影響,即:隨著放大系數(shù)的增加,系統(tǒng)的穩(wěn)態(tài)誤差減少,但是超調(diào)增大,震蕩加劇。其中
  

  自動(dòng)控制系統(tǒng)輔助分析軟件(ACAAS)采用Matlab7.1中的GUI環(huán)境進(jìn)行開(kāi)發(fā),充分利用了Matlab中集成的關(guān)于自動(dòng)控制系統(tǒng)的性能分析算法庫(kù)和強(qiáng)大的繪圖功能,特別是由于自動(dòng)控制系統(tǒng)的性能分析算法庫(kù)與GUI開(kāi)發(fā)工具均屬于Matlab軟件,因此用戶(hù)輸入與分析算法之間的接口變得十分容易,大大縮短了軟件的開(kāi)發(fā)周期。與傳統(tǒng)的采用混合編程模式開(kāi)發(fā)的同類(lèi)型軟件系統(tǒng)相比,該軟件易于維護(hù)與升級(jí),在運(yùn)行時(shí)間上其優(yōu)勢(shì)更加突出。
  采用ACAAS,用戶(hù)可以十分方便地分析自動(dòng)控制系統(tǒng)的時(shí)域、根軌跡與頻域性能,并在“單幅多道圖”中對(duì)不同系統(tǒng)之間進(jìn)行性能比較,為下一步進(jìn)行自動(dòng)控制系統(tǒng)的設(shè)計(jì)打下良好的理論基礎(chǔ)。該軟件不僅可以作為《自動(dòng)控制原理》課程教學(xué)強(qiáng)有力的補(bǔ)充,并且在Matlab仿真環(huán)境與自動(dòng)控制工程設(shè)計(jì)人員之間搭起了一座橋梁,使他們不必花大量的時(shí)間用于Matlab的學(xué)習(xí)就可以對(duì)系統(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混合編程趨勢(shì)[J].長(zhǎng)春工業(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]. 電腦開(kāi)發(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).自動(dòng)控制原理及其應(yīng)用[M]. 北京:高等教育出版社,2004.
  

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。