陳慧蓉,范雨薇,蔣 玲,方 忠,葛 鑫
自動控制理論在近代逐漸發展為一個成熟且完善的理論體系,是自動控制系統設計與分析的重要理論依據[1].傳統的自動控制系統分析與設計主要在實際操作平臺上進行,分析與設計過程效率低、成本高.自計算機誕生以來,計算機逐漸展現出了其強大的信息處理能力,微軟、蘋果、施樂等公司相繼推出基于GUI的操作系統,GUI能夠將操作界面以圖形的方式呈現給用戶,具有良好的人機交互性.MATLAB是MathWorks公司推出的一款商業化數學軟件,它擁有強大的計算能力[2],搭載了GUI開發模塊、Simulink仿真模塊,且內置各類分析自動控制系統性能的函數,是搭建基于GUI的自動控制系統仿真實驗平臺的最佳選擇.
此前也有許多利用GUI開發可視化仿真平臺的實例[3-4],本文將GUI與自動控制系統的分析相結合,基于MATLAB GUI搭建了一個自動控制系統仿真實驗平臺,使用戶可以通過鼠標和鍵盤與平臺進行交互,在GUI窗口中進行數據輸入和功能操作,MATLAB根據輸入的參數快速且直觀地顯示出用戶所需的系統性能指標和系統仿真曲線.比之傳統的實際操作平臺,基于MATLAB GUI的仿真實驗平臺成本低、效率高,充分結合了MATLAB的數據處理能力和GUI界面的良好交互性.該自動控制系統仿真實驗平臺將會大幅改善用戶的使用體驗.
圖形用戶界面(Graphical User Interface,GUI)是一種人機交互的界面顯示格式,將操作界面以圖形方式呈現在用戶面前,用戶可以通過鼠標、鍵盤等設備與這些圖形進行交互,從而實現相應的操作.
MATLAB為設計者提供了一個GUI設計環境——集成圖形用戶界面開發環境(GUIDE).在命令行里輸入“guide”指令并敲擊回車就可以彈出GUIDE編輯器的模板設計界面.一個GUI界面被建立時,自動生成一個.m文件和一個.fig文件[5],在.fig文件中可以通過工具箱在GUI界面中布置按鈕(Button)、坐標軸(Axes)、可編輯文本(Edit)等功能按鈕,在.m文件中儲存著GUI初始化函數,以及每一個功能按鈕的回調函數.
句柄和回調函數是GUI設計過程中的核心內容.句柄(handle)可以理解為一種特殊的指針,用以指向Figure及GUI中的功能按鈕圖形,每個功能按鈕都有自己的句柄,通過正確調用這些句柄,程序員可以精準地對每個控件進行操作.在對控件進行操作時,MATLAB后臺能夠自動調用它名下的回調函數(callback),故在GUI中如果想讓某個功能按鈕實現目標操作,就需要在其回調函數中編寫相應的程序.
MATLAB中也提供了GUI文件的封裝工具deploytool,該工具可以將GUI界面封裝成.exe可執行文件.
(1)獲取用戶自定義參數.由于自動控制系統在工程中應用場合較多,不同的用戶根據自己的需求往往會設計出不同的自動控制系統,因此,實驗平臺應允許用戶在符合物理規律的條件下自由地設置系統參數.
以可編輯文本框為例,該部件允許用戶在GUI運行的情況下更改文本框中的數值,也提供了獲取文本框當前內容的函數,因此,可以利用可編輯文本框來獲取用戶自定義參數.例如,建立一個二階系統傳遞函數的輸入界面如圖1(a)所示,如果用戶想要建立一個二階系統的模型,只需在對應的可編輯文本框里輸入系數,如圖1(b)所示.在按鈕的回調函數中利用get()語句獲取用戶輸入的系數并轉換成數值格式,再賦給各個變量即可完成對自定義參數的獲取.

圖1 自定義參數的輸入與獲取
(2)人機交互性.人機交互性是GUI最突出的優勢之一,GUI以圖形的方式包裝基本使用功能,用戶在操作時無需關注后臺代碼,只需通過輸入設備(如鼠標、麥克風)與圖形進行交互即可完成相應的功能.
以彈出式菜單為例,該部件允許用戶在GUI運行的情況下從下拉列表中選擇不同的內容,MATLAB提供了獲取彈出式菜單當前列表編號值的函數,計算機可以通過switch語句判斷當前編號值,然后執行編號所對應的功能,最后再將數據返回至窗口.例如,可以在時域分析界面的彈出式菜單中選擇二階系統調節時間的誤差帶,如圖2所示,程序利用get()函數獲取誤差帶的列表編號之后,根據用戶的選擇計算出不同的調節時間數值并顯示在右側文本框中,實現了用戶與GUI之間的交互.

圖2 GUI設計中的人機交互性
(3)美觀性.美觀性設計是GUI設計中不可或缺的一環,美觀且合理的界面能夠減少用戶使用時的疲勞感,并使數據分析的結果更加直觀,因此必須要對GUI面板中功能按鈕進行合理布局.
以圖3所示時域分析窗口為例,該窗口將一階系統的動態性能指標與其時域響應放置在一起,將系統的穩定性分析與其閉環零極點放在一起,這樣的布局便于用戶更好觀察到圖像與數據之間的聯系,達到數形結合的目的,從而對自動控制系統產生更深刻的認識.

圖3 GUI設計中的美觀性
本軟件的總體設計框圖如圖4所示,用戶在模型輸入界面輸入模型參數之后平臺將會建立傳遞函數模型,隨后用戶可選擇時域、頻域、狀態空間三種分析方式.

圖4 主界面設計框圖
分析界面的功能結構框圖如圖5所示.

圖5 分析界面功能結構框圖
(1)獲取系統模型參數.從可編輯文本框中獲取用戶輸入的傳遞函數系數,儲存在對應的全局變量中供后續建模、顯示和計算使用.
(2)顯示系統模型.在時域和頻域分析界面中根據參數建立起分子、分母矩陣,并構造傳遞函數表達式的LaTeX語句,利用text()函數在對應的坐標軸中顯示系統的開、閉環傳遞函數;在狀態空間分析界面中則根據閉環傳遞函數的分子和分母矩陣構造狀態空間矩陣,并將傳遞函數和四個狀態空間矩陣顯示在對應坐標軸中.
(3)計算并顯示系統性能指標.在時域分析中,利用系統參數根據解析式計算性能指標并顯示;在頻域分析中,利用margin()函數讀取頻域性能指標并顯示;在狀態空間分析中,判斷系統的可控性、可觀性,以及李雅普諾夫穩定性并顯示.
(4)顯示系統曲線.在時域分析中,顯示系統在典型輸入下的響應曲線、零極點圖和根軌跡圖;在頻域分析中,顯示系統的伯德圖、奈奎斯特圖、零極點圖和根軌跡圖.
(5)返回并清除歷史數據.三個分析界面均設置了返回按鈕,在返回至模型輸入界面的同時會將變量清零并清除坐標軸圖像,這種做法可以避免歷史數據影響程序的使用.
根據圖4所示的主界面設計框圖和圖5所示的分析界面功能結構框圖,利用MATLAB GUI實現軟件功能設計.在GUI窗口中根據人機交互性原則和界面美觀性原則配置部件,并在回調函數中編寫程序,使GUI根據用戶的調用信息完成相應功能.
在建模窗口輸入二階系統參數,如圖6所示,在可編輯文本框的回調函數中編寫如下語句獲取并儲存用戶自定義參數.


圖6 建立模型
點擊按鈕便可以跳轉至相應的分析窗口.時域分析窗口如圖7(a)所示,默認顯示系統模型、時域性能指標、單位階躍響應曲線以及根軌跡圖.通過彈出式菜單更改顯示內容,在彈出式菜單的回調函數中獲取當前列表值,程序如下:

隨后通過switch函數根據列表值編寫相應程序將顯示內容更改為單位斜坡響應和零極點圖,如圖7(b)所示,程序如下:

圖7 時域分析窗口


頻域分析窗口如圖8所示,默認顯示系統模型、頻域性能指標、伯德圖以及根軌跡圖,在彈出式菜單中可以更改顯示內容.頻域性能指標通過margin()函數讀取,存入數組中再進行顯示,程序如下:


圖8 頻域分析窗口
狀態空間分析窗口如圖9所示,默認顯示系統模型和可控性、可觀性和李雅普諾夫穩定性結論.在狀態空間分析中采用李雅普諾夫意義下的穩定性分析,首先利用diag()函數構造一個與系數矩陣A同維的單位陣W,diag()函數接收一個數組作為參數,并輸出以該數組元素作為對角線元素的對角陣.程序如下:


圖9 狀態空間分析窗口
然后構造李雅普諾夫矩陣V并通過判斷V順序主子式的正負來判斷其正定性,如果正定則系統穩定,反之不穩定[6].
MATLAB提供了封裝工具deploytool,用于將函數打包并封裝成可執行文件.在命令行輸入“deploytool”,彈出Compiler窗口,選擇Application Compiler進入封裝界面,在上方Addmainfile對話框中選取程序運行后第一個GUI窗口的.m文件作為主文件,在下方Files required for your application to run中選擇該軟件運行所需的文件,輸入名稱、初始化圖片等參數后點擊上方的Package按鈕,實現軟件的封裝.
封裝后的.exe文件允許用戶在未安裝MATLAB的情況下使用軟件功能,提高了本軟件的泛用性.
本文搭建了一個基于MATLAB GUI的自動控制系統的仿真分析平臺,通過獲取用戶輸入的系統參數構造系統模型,并可對系統進行時域、頻域和狀態空間分析,在分析界面中用戶可以直觀地查看系統模型表達式、系統主要性能指標、系統的幾何分析圖像,以及性能分析結果.平臺操作簡單,交互性強,界面可視化,軟件在封裝成可執行文件后可以脫離MATLAB環境運行.