陳慧蓉,范雨薇,蔣 玲,方 忠,葛 鑫
自動(dòng)控制理論在近代逐漸發(fā)展為一個(gè)成熟且完善的理論體系,是自動(dòng)控制系統(tǒng)設(shè)計(jì)與分析的重要理論依據(jù)[1].傳統(tǒng)的自動(dòng)控制系統(tǒng)分析與設(shè)計(jì)主要在實(shí)際操作平臺(tái)上進(jìn)行,分析與設(shè)計(jì)過(guò)程效率低、成本高.自計(jì)算機(jī)誕生以來(lái),計(jì)算機(jī)逐漸展現(xiàn)出了其強(qiáng)大的信息處理能力,微軟、蘋果、施樂(lè)等公司相繼推出基于GUI的操作系統(tǒng),GUI能夠?qū)⒉僮鹘缑嬉詧D形的方式呈現(xiàn)給用戶,具有良好的人機(jī)交互性.MATLAB是MathWorks公司推出的一款商業(yè)化數(shù)學(xué)軟件,它擁有強(qiáng)大的計(jì)算能力[2],搭載了GUI開(kāi)發(fā)模塊、Simulink仿真模塊,且內(nèi)置各類分析自動(dòng)控制系統(tǒng)性能的函數(shù),是搭建基于GUI的自動(dòng)控制系統(tǒng)仿真實(shí)驗(yàn)平臺(tái)的最佳選擇.
此前也有許多利用GUI開(kāi)發(fā)可視化仿真平臺(tái)的實(shí)例[3-4],本文將GUI與自動(dòng)控制系統(tǒng)的分析相結(jié)合,基于MATLAB GUI搭建了一個(gè)自動(dòng)控制系統(tǒng)仿真實(shí)驗(yàn)平臺(tái),使用戶可以通過(guò)鼠標(biāo)和鍵盤與平臺(tái)進(jìn)行交互,在GUI窗口中進(jìn)行數(shù)據(jù)輸入和功能操作,MATLAB根據(jù)輸入的參數(shù)快速且直觀地顯示出用戶所需的系統(tǒng)性能指標(biāo)和系統(tǒng)仿真曲線.比之傳統(tǒng)的實(shí)際操作平臺(tái),基于MATLAB GUI的仿真實(shí)驗(yàn)平臺(tái)成本低、效率高,充分結(jié)合了MATLAB的數(shù)據(jù)處理能力和GUI界面的良好交互性.該自動(dòng)控制系統(tǒng)仿真實(shí)驗(yàn)平臺(tái)將會(huì)大幅改善用戶的使用體驗(yàn).
圖形用戶界面(Graphical User Interface,GUI)是一種人機(jī)交互的界面顯示格式,將操作界面以圖形方式呈現(xiàn)在用戶面前,用戶可以通過(guò)鼠標(biāo)、鍵盤等設(shè)備與這些圖形進(jìn)行交互,從而實(shí)現(xiàn)相應(yīng)的操作.
MATLAB為設(shè)計(jì)者提供了一個(gè)GUI設(shè)計(jì)環(huán)境——集成圖形用戶界面開(kāi)發(fā)環(huán)境(GUIDE).在命令行里輸入“guide”指令并敲擊回車就可以彈出GUIDE編輯器的模板設(shè)計(jì)界面.一個(gè)GUI界面被建立時(shí),自動(dòng)生成一個(gè).m文件和一個(gè).fig文件[5],在.fig文件中可以通過(guò)工具箱在GUI界面中布置按鈕(Button)、坐標(biāo)軸(Axes)、可編輯文本(Edit)等功能按鈕,在.m文件中儲(chǔ)存著GUI初始化函數(shù),以及每一個(gè)功能按鈕的回調(diào)函數(shù).
句柄和回調(diào)函數(shù)是GUI設(shè)計(jì)過(guò)程中的核心內(nèi)容.句柄(handle)可以理解為一種特殊的指針,用以指向Figure及GUI中的功能按鈕圖形,每個(gè)功能按鈕都有自己的句柄,通過(guò)正確調(diào)用這些句柄,程序員可以精準(zhǔn)地對(duì)每個(gè)控件進(jìn)行操作.在對(duì)控件進(jìn)行操作時(shí),MATLAB后臺(tái)能夠自動(dòng)調(diào)用它名下的回調(diào)函數(shù)(callback),故在GUI中如果想讓某個(gè)功能按鈕實(shí)現(xiàn)目標(biāo)操作,就需要在其回調(diào)函數(shù)中編寫相應(yīng)的程序.
MATLAB中也提供了GUI文件的封裝工具deploytool,該工具可以將GUI界面封裝成.exe可執(zhí)行文件.
(1)獲取用戶自定義參數(shù).由于自動(dòng)控制系統(tǒng)在工程中應(yīng)用場(chǎng)合較多,不同的用戶根據(jù)自己的需求往往會(huì)設(shè)計(jì)出不同的自動(dòng)控制系統(tǒng),因此,實(shí)驗(yàn)平臺(tái)應(yīng)允許用戶在符合物理規(guī)律的條件下自由地設(shè)置系統(tǒng)參數(shù).
以可編輯文本框?yàn)槔摬考试S用戶在GUI運(yùn)行的情況下更改文本框中的數(shù)值,也提供了獲取文本框當(dāng)前內(nèi)容的函數(shù),因此,可以利用可編輯文本框來(lái)獲取用戶自定義參數(shù).例如,建立一個(gè)二階系統(tǒng)傳遞函數(shù)的輸入界面如圖1(a)所示,如果用戶想要建立一個(gè)二階系統(tǒng)的模型,只需在對(duì)應(yīng)的可編輯文本框里輸入系數(shù),如圖1(b)所示.在按鈕的回調(diào)函數(shù)中利用get()語(yǔ)句獲取用戶輸入的系數(shù)并轉(zhuǎn)換成數(shù)值格式,再賦給各個(gè)變量即可完成對(duì)自定義參數(shù)的獲取.
圖1 自定義參數(shù)的輸入與獲取
(2)人機(jī)交互性.人機(jī)交互性是GUI最突出的優(yōu)勢(shì)之一,GUI以圖形的方式包裝基本使用功能,用戶在操作時(shí)無(wú)需關(guān)注后臺(tái)代碼,只需通過(guò)輸入設(shè)備(如鼠標(biāo)、麥克風(fēng))與圖形進(jìn)行交互即可完成相應(yīng)的功能.
以彈出式菜單為例,該部件允許用戶在GUI運(yùn)行的情況下從下拉列表中選擇不同的內(nèi)容,MATLAB提供了獲取彈出式菜單當(dāng)前列表編號(hào)值的函數(shù),計(jì)算機(jī)可以通過(guò)switch語(yǔ)句判斷當(dāng)前編號(hào)值,然后執(zhí)行編號(hào)所對(duì)應(yīng)的功能,最后再將數(shù)據(jù)返回至窗口.例如,可以在時(shí)域分析界面的彈出式菜單中選擇二階系統(tǒng)調(diào)節(jié)時(shí)間的誤差帶,如圖2所示,程序利用get()函數(shù)獲取誤差帶的列表編號(hào)之后,根據(jù)用戶的選擇計(jì)算出不同的調(diào)節(jié)時(shí)間數(shù)值并顯示在右側(cè)文本框中,實(shí)現(xiàn)了用戶與GUI之間的交互.
圖2 GUI設(shè)計(jì)中的人機(jī)交互性
(3)美觀性.美觀性設(shè)計(jì)是GUI設(shè)計(jì)中不可或缺的一環(huán),美觀且合理的界面能夠減少用戶使用時(shí)的疲勞感,并使數(shù)據(jù)分析的結(jié)果更加直觀,因此必須要對(duì)GUI面板中功能按鈕進(jìn)行合理布局.
以圖3所示時(shí)域分析窗口為例,該窗口將一階系統(tǒng)的動(dòng)態(tài)性能指標(biāo)與其時(shí)域響應(yīng)放置在一起,將系統(tǒng)的穩(wěn)定性分析與其閉環(huán)零極點(diǎn)放在一起,這樣的布局便于用戶更好觀察到圖像與數(shù)據(jù)之間的聯(lián)系,達(dá)到數(shù)形結(jié)合的目的,從而對(duì)自動(dòng)控制系統(tǒng)產(chǎn)生更深刻的認(rèn)識(shí).
圖3 GUI設(shè)計(jì)中的美觀性
本軟件的總體設(shè)計(jì)框圖如圖4所示,用戶在模型輸入界面輸入模型參數(shù)之后平臺(tái)將會(huì)建立傳遞函數(shù)模型,隨后用戶可選擇時(shí)域、頻域、狀態(tài)空間三種分析方式.
圖4 主界面設(shè)計(jì)框圖
分析界面的功能結(jié)構(gòu)框圖如圖5所示.
圖5 分析界面功能結(jié)構(gòu)框圖
(1)獲取系統(tǒng)模型參數(shù).從可編輯文本框中獲取用戶輸入的傳遞函數(shù)系數(shù),儲(chǔ)存在對(duì)應(yīng)的全局變量中供后續(xù)建模、顯示和計(jì)算使用.
(2)顯示系統(tǒng)模型.在時(shí)域和頻域分析界面中根據(jù)參數(shù)建立起分子、分母矩陣,并構(gòu)造傳遞函數(shù)表達(dá)式的LaTeX語(yǔ)句,利用text()函數(shù)在對(duì)應(yīng)的坐標(biāo)軸中顯示系統(tǒng)的開(kāi)、閉環(huán)傳遞函數(shù);在狀態(tài)空間分析界面中則根據(jù)閉環(huán)傳遞函數(shù)的分子和分母矩陣構(gòu)造狀態(tài)空間矩陣,并將傳遞函數(shù)和四個(gè)狀態(tài)空間矩陣顯示在對(duì)應(yīng)坐標(biāo)軸中.
(3)計(jì)算并顯示系統(tǒng)性能指標(biāo).在時(shí)域分析中,利用系統(tǒng)參數(shù)根據(jù)解析式計(jì)算性能指標(biāo)并顯示;在頻域分析中,利用margin()函數(shù)讀取頻域性能指標(biāo)并顯示;在狀態(tài)空間分析中,判斷系統(tǒng)的可控性、可觀性,以及李雅普諾夫穩(wěn)定性并顯示.
(4)顯示系統(tǒng)曲線.在時(shí)域分析中,顯示系統(tǒng)在典型輸入下的響應(yīng)曲線、零極點(diǎn)圖和根軌跡圖;在頻域分析中,顯示系統(tǒng)的伯德圖、奈奎斯特圖、零極點(diǎn)圖和根軌跡圖.
(5)返回并清除歷史數(shù)據(jù).三個(gè)分析界面均設(shè)置了返回按鈕,在返回至模型輸入界面的同時(shí)會(huì)將變量清零并清除坐標(biāo)軸圖像,這種做法可以避免歷史數(shù)據(jù)影響程序的使用.
根據(jù)圖4所示的主界面設(shè)計(jì)框圖和圖5所示的分析界面功能結(jié)構(gòu)框圖,利用MATLAB GUI實(shí)現(xiàn)軟件功能設(shè)計(jì).在GUI窗口中根據(jù)人機(jī)交互性原則和界面美觀性原則配置部件,并在回調(diào)函數(shù)中編寫程序,使GUI根據(jù)用戶的調(diào)用信息完成相應(yīng)功能.
在建模窗口輸入二階系統(tǒng)參數(shù),如圖6所示,在可編輯文本框的回調(diào)函數(shù)中編寫如下語(yǔ)句獲取并儲(chǔ)存用戶自定義參數(shù).
圖6 建立模型
點(diǎn)擊按鈕便可以跳轉(zhuǎn)至相應(yīng)的分析窗口.時(shí)域分析窗口如圖7(a)所示,默認(rèn)顯示系統(tǒng)模型、時(shí)域性能指標(biāo)、單位階躍響應(yīng)曲線以及根軌跡圖.通過(guò)彈出式菜單更改顯示內(nèi)容,在彈出式菜單的回調(diào)函數(shù)中獲取當(dāng)前列表值,程序如下:
隨后通過(guò)switch函數(shù)根據(jù)列表值編寫相應(yīng)程序?qū)@示內(nèi)容更改為單位斜坡響應(yīng)和零極點(diǎn)圖,如圖7(b)所示,程序如下:
圖7 時(shí)域分析窗口
頻域分析窗口如圖8所示,默認(rèn)顯示系統(tǒng)模型、頻域性能指標(biāo)、伯德圖以及根軌跡圖,在彈出式菜單中可以更改顯示內(nèi)容.頻域性能指標(biāo)通過(guò)margin()函數(shù)讀取,存入數(shù)組中再進(jìn)行顯示,程序如下:
圖8 頻域分析窗口
狀態(tài)空間分析窗口如圖9所示,默認(rèn)顯示系統(tǒng)模型和可控性、可觀性和李雅普諾夫穩(wěn)定性結(jié)論.在狀態(tài)空間分析中采用李雅普諾夫意義下的穩(wěn)定性分析,首先利用diag()函數(shù)構(gòu)造一個(gè)與系數(shù)矩陣A同維的單位陣W,diag()函數(shù)接收一個(gè)數(shù)組作為參數(shù),并輸出以該數(shù)組元素作為對(duì)角線元素的對(duì)角陣.程序如下:
圖9 狀態(tài)空間分析窗口
然后構(gòu)造李雅普諾夫矩陣V并通過(guò)判斷V順序主子式的正負(fù)來(lái)判斷其正定性,如果正定則系統(tǒng)穩(wěn)定,反之不穩(wěn)定[6].
MATLAB提供了封裝工具deploytool,用于將函數(shù)打包并封裝成可執(zhí)行文件.在命令行輸入“deploytool”,彈出Compiler窗口,選擇Application Compiler進(jìn)入封裝界面,在上方Addmainfile對(duì)話框中選取程序運(yùn)行后第一個(gè)GUI窗口的.m文件作為主文件,在下方Files required for your application to run中選擇該軟件運(yùn)行所需的文件,輸入名稱、初始化圖片等參數(shù)后點(diǎn)擊上方的Package按鈕,實(shí)現(xiàn)軟件的封裝.
封裝后的.exe文件允許用戶在未安裝MATLAB的情況下使用軟件功能,提高了本軟件的泛用性.
本文搭建了一個(gè)基于MATLAB GUI的自動(dòng)控制系統(tǒng)的仿真分析平臺(tái),通過(guò)獲取用戶輸入的系統(tǒng)參數(shù)構(gòu)造系統(tǒng)模型,并可對(duì)系統(tǒng)進(jìn)行時(shí)域、頻域和狀態(tài)空間分析,在分析界面中用戶可以直觀地查看系統(tǒng)模型表達(dá)式、系統(tǒng)主要性能指標(biāo)、系統(tǒng)的幾何分析圖像,以及性能分析結(jié)果.平臺(tái)操作簡(jiǎn)單,交互性強(qiáng),界面可視化,軟件在封裝成可執(zhí)行文件后可以脫離MATLAB環(huán)境運(yùn)行.
通化師范學(xué)院學(xué)報(bào)2021年8期