張 婧,蓋文東,高宏巖,盧 曉
(山東科技大學(xué) 電氣與自動(dòng)化工程學(xué)院,山東 青島 266590)
幾乎所有的實(shí)際系統(tǒng)都具有非線性特性。非線性程度較弱且運(yùn)行在平衡點(diǎn)附近較小范圍內(nèi)的系統(tǒng),可采用小偏差法將其線性化作為線性模型處理;而非線性特性較明顯或非線性因素?zé)o法忽略的系統(tǒng),只能采用非線性系統(tǒng)理論進(jìn)行研究[1-2]。有時(shí),在解決工程問題時(shí),人為地引入非線性部件可改善系統(tǒng)的性能或簡化系統(tǒng)的結(jié)構(gòu)。因此研究非線性系統(tǒng)的分析和設(shè)計(jì)方法是非常必要的。
目前工程上常用相平面法和描述函數(shù)法分析和研究非線性系統(tǒng)。相對描述函數(shù)法,相平面法不僅可以判斷系統(tǒng)的穩(wěn)定性和自激振蕩,還可以討論系統(tǒng)在不同初始條件以及在不同輸入信號(hào)作用下的運(yùn)動(dòng)狀態(tài),可全面形象地獲得系統(tǒng)運(yùn)動(dòng)的全部信息[3]。
針對非線性系統(tǒng)的分析和設(shè)計(jì)問題,相平面法在實(shí)際工程中應(yīng)用范圍較廣,如可采用相平面法分析飛行控制、車輛行駛、電力系統(tǒng)暫態(tài)響應(yīng)等非線性系統(tǒng)的穩(wěn)定性及電網(wǎng)中單相接地故障、發(fā)電機(jī)組故障的診斷[4-8],也可采用相平面法設(shè)計(jì)飛行器舵機(jī)負(fù)載模擬器和飛行器的控制器[9-10],因此掌握如何繪制相軌跡及利用相平面法分析系統(tǒng)也是非常必要的。但是由于相平面法是一種圖解法,使用時(shí)需要繪制大量曲線。在相關(guān)內(nèi)容的教學(xué)過程中,教師在黑板上繪制曲線的準(zhǔn)確度難以保證,導(dǎo)致系統(tǒng)的性能也難以體現(xiàn)。教學(xué)實(shí)驗(yàn)著重采用相平面法分析含有典型非線性環(huán)節(jié)的非線性系統(tǒng),但在實(shí)驗(yàn)過程中經(jīng)常會(huì)因?yàn)樵?shù)不穩(wěn)定,實(shí)驗(yàn)值與理論值不太吻合,導(dǎo)致學(xué)生產(chǎn)生錯(cuò)誤的理解[11];并且,由于實(shí)驗(yàn)箱分立元件眾多,元件組成的傳遞函數(shù)接線較復(fù)雜,導(dǎo)致學(xué)生不知如何調(diào)整實(shí)驗(yàn)參數(shù)。為了解決這些問題,期望能夠找到一種可以通過交互界面設(shè)置或修改系統(tǒng)參數(shù),從而直觀準(zhǔn)確地繪制非線性系統(tǒng)相軌跡的方法。
一階或二階非線性系統(tǒng)相軌跡的繪制較為簡單,高階系統(tǒng)相軌跡的繪制則較為困難。文獻(xiàn)[12-13]闡述了高階系統(tǒng)可采用δ法或等傾線法繪制相軌跡,但這兩種方法比較復(fù)雜;文獻(xiàn)[14]借助MATLAB文本語言繪制高階非線性系統(tǒng)的相軌跡,這種方法需要根據(jù)非線性環(huán)節(jié)的分界線將線性環(huán)節(jié)的傳遞函數(shù)寫成分區(qū)線性微分方程再利用ode函數(shù)求解,因此也較為復(fù)雜;而文獻(xiàn)[15]則借助Simulink仿真工具高階非線性系統(tǒng)仿真模型繪制相軌跡,但當(dāng)系統(tǒng)參數(shù)及初始條件發(fā)生變化時(shí),操作較為復(fù)雜,仿真結(jié)果也不直觀。
基于上述考慮,本文將MATLAB中的Simulink仿真工具箱和GUI引入到教學(xué)中,設(shè)計(jì)開發(fā)了非線性系統(tǒng)相軌跡的教學(xué)仿真平臺(tái)。首先通過Simulink構(gòu)建非線性系統(tǒng)的仿真模型;然后通過GUI交互界面調(diào)取仿真模型,并設(shè)置或修改系統(tǒng)輸入信號(hào)、開環(huán)增益、初始條件等參數(shù);最后直觀、準(zhǔn)確地繪制非線性系統(tǒng)的相軌跡,分析非線性系統(tǒng)的性能。仿真平臺(tái)交互性好,操作簡單,既能豐富教學(xué)手段,又有助于學(xué)生加深對相平面的理解,可以激發(fā)學(xué)生的學(xué)習(xí)興趣,培養(yǎng)學(xué)生的研究能力和創(chuàng)新能力。
Simulink仿真工具箱以框圖形式描述系統(tǒng)的模型,進(jìn)行動(dòng)態(tài)系統(tǒng)建模、仿真和綜合分析,其框圖化的設(shè)計(jì)方式簡化了編程;圖形用戶界面(GUI)可以實(shí)現(xiàn)人與計(jì)算機(jī)信息交換的功能,操作簡單,形象直觀。將Simulink和GUI結(jié)合,利用GUI的友好交互界面,在界面中設(shè)置或修改Simulink模型參數(shù),并且實(shí)時(shí)顯示期望的仿真結(jié)果,這將會(huì)對精確繪制非線性系統(tǒng)的相軌跡提供方便,同時(shí)有利于提高教學(xué)效果。
基于GUI設(shè)計(jì)的非線性系統(tǒng)相軌跡教學(xué)仿真平臺(tái)上包括多個(gè)組件,需編寫每個(gè)組件的回調(diào)函數(shù),以便完成用戶與GUI的交互功能。在GUI界面上輸入系統(tǒng)的相應(yīng)模型參數(shù),回調(diào)函數(shù)接收這些參數(shù)并將參數(shù)值傳遞到Simulink模型中,根據(jù)輸入的參數(shù)值設(shè)置相應(yīng)模塊的參數(shù)進(jìn)行仿真;然后將仿真結(jié)果傳到Workspace,得出系統(tǒng)響應(yīng)的輸出數(shù)據(jù);最后利用輸出數(shù)據(jù)在GUI界面上繪制相軌跡。教學(xué)仿真平臺(tái)通過交互界面實(shí)現(xiàn)調(diào)取仿真模型、設(shè)置或修改系統(tǒng)各項(xiàng)參數(shù)、繪制非線性系統(tǒng)的相軌跡等各項(xiàng)功能,其總體設(shè)計(jì)方案如圖1所示。
圖1 教學(xué)仿真平臺(tái)總體設(shè)計(jì)方案
對于用非線性微分方程描述的非線性系統(tǒng),可調(diào)用MATLAB的ode及plot函數(shù),先求解系統(tǒng)微分方程高階數(shù)值,再在相平面上繪制相軌跡;而對于某些由多個(gè)不同線性微分方程描述的分區(qū)非線性系統(tǒng),可在不同分區(qū)內(nèi)繪制相軌跡再分析。本文主要討論含有典型非線性環(huán)節(jié)的分區(qū)非線性系統(tǒng),其結(jié)構(gòu)圖如圖2所示。
圖2 含有典型非線性環(huán)節(jié)的非線性系統(tǒng)結(jié)構(gòu)圖
下面將以一示例來詳細(xì)介紹非線性系統(tǒng)相軌跡教學(xué)仿真平臺(tái)的構(gòu)建。示例為:
非線性系統(tǒng)結(jié)構(gòu)圖如圖3所示,h=1,a=1,系統(tǒng)的初始條件為[c(0),(0),(0)]=[0.6,1,0.7],要求在相平面c-上繪制系統(tǒng)的相軌跡。
圖3 非線性系統(tǒng)的結(jié)構(gòu)圖
將示例中線性環(huán)節(jié)的傳遞函數(shù)寫為可觀標(biāo)準(zhǔn)型的狀態(tài)空間表達(dá)式:
之所以將高階線性環(huán)節(jié)部分寫成可觀標(biāo)準(zhǔn)型,是因?yàn)榭捎^標(biāo)準(zhǔn)型的特點(diǎn)是線性環(huán)節(jié)的輸出c(t)恰為最后一個(gè)狀態(tài)變量xn,即狀態(tài)變量圖中最后一個(gè)積分器的輸出就是線性環(huán)節(jié)的輸出c(t),其輸入為線性環(huán)節(jié)輸出的一階導(dǎo)數(shù)(t)。若已知系統(tǒng)輸出的初始條件,或要求根據(jù)相平面法分析高階非線性系統(tǒng)的運(yùn)動(dòng)特性,即在相平面c-上繪制系統(tǒng)的相軌跡,相較可控標(biāo)準(zhǔn)型,可觀標(biāo)準(zhǔn)型的表示方法更為簡便。
由于構(gòu)建的仿真模型是以狀態(tài)變量圖表示,所以需要將輸出量初始值變?yōu)闋顟B(tài)變量初始值。由已知條件[c(0),(0),(0)]=[0.6,1,0.7]及式(1),得:
求得狀態(tài)變量初始值[x1(0),x2(0),x3(0)]=[3.8,2.5,0.6]。
在Simulink中將圖3所示的線性環(huán)節(jié)以狀態(tài)變量圖表示,再結(jié)合非線性環(huán)節(jié)構(gòu)造仿真模型如圖4所示,命名為“honl”。其中,點(diǎn)劃線框內(nèi)為系統(tǒng)的輸入信號(hào),由于輸入信號(hào)一般為無信號(hào)輸入、階躍信號(hào)、斜坡信號(hào)或兩種輸入信號(hào)之和,故將其幅值和斜率都預(yù)先設(shè)置為0,在仿真平臺(tái)上可修改其幅值參數(shù)。虛線框內(nèi)為構(gòu)建的非線性系統(tǒng)模型,為便于直觀顯示,將狀態(tài)變量的初始值都預(yù)設(shè)為0且設(shè)置在積分器外面,在仿真平臺(tái)上可設(shè)置或修改初始值;線性環(huán)節(jié)的開環(huán)增益K也可在仿真平臺(tái)上修改,當(dāng)K取不同值時(shí),相軌跡和系統(tǒng)動(dòng)態(tài)響應(yīng)形式皆不同;線性環(huán)節(jié)的狀態(tài)變量關(guān)系,即Gain1,Gain2,Gain3的值也可以在仿真平臺(tái)上修改,即改變系統(tǒng)的模型參數(shù),由題意可知,仿真平臺(tái)上a、b、d的值分別為2.5,1和0。為了能夠在仿真平臺(tái)上繪制相軌跡,在仿真模型中將示波器Scope和Scope1的數(shù)值保存到MATLAB的工作區(qū)間內(nèi),以便仿真平臺(tái)調(diào)用數(shù)據(jù)。
圖4 基于Simulink的非線性系統(tǒng)的仿真模型
基于GUI的非線性系統(tǒng)相軌跡仿真教學(xué)平臺(tái)界面如圖5所示。
圖5 基于GUI的非線性系統(tǒng)相軌跡教學(xué)仿真平臺(tái)界面
保存界面同時(shí)生成 “ptr.jpg” 和 “ptr.m” 兩個(gè)文件。前者每個(gè)組件都對應(yīng)其句柄圖形,后者是根據(jù)編寫的組件回調(diào)函數(shù)實(shí)現(xiàn)預(yù)定的交互功能[16]。下面主要介紹GUI界面實(shí)現(xiàn)交互功能的方法。
在運(yùn)行GUI界面時(shí),點(diǎn)擊 “打開仿真模型”按鈕,需實(shí)現(xiàn)調(diào)取2.1節(jié)構(gòu)建好的仿真模型。其回調(diào)函數(shù)程序?yàn)?/p>
點(diǎn)擊 “開始繪制相軌跡”按鈕,在axes1坐標(biāo)軸上繪制相應(yīng)的相軌跡。需要先將Simulink中Scope和Scope1的數(shù)據(jù) “c” 和 “dotc” 存到Workspace中,再根據(jù)存儲(chǔ)的數(shù)據(jù)繪制相軌跡,所以需要定義全局變量,其回調(diào)函數(shù)如下:
global c
globaldotc
handles=guidata(gcf);
axes(handles.axes1);
sim(‘honl’);
plot(c.signals.values,dotc.signals.values)
hold on
grid on
選中 “開環(huán)增益”的復(fù)選框。為了體現(xiàn)參數(shù)逐漸變化對相軌跡的影響,用滑動(dòng)條來實(shí)現(xiàn)參數(shù)的平滑調(diào)整。在 “Slider”的屬性中可以修改其最小值和最大值,點(diǎn)擊或拖動(dòng) “Slider”,就可以在“EditText”中顯示實(shí)時(shí)的開環(huán)增益。其回調(diào)函數(shù)為:
set(handles.edit3,'string',num2str(get(handles.slider1, ‘Value’)))
利用MATLAB提供的get()函數(shù)獲取開環(huán)增益K的值,再用 set_param()函數(shù)設(shè)置仿真模型“Gain”的數(shù)值K,其回調(diào)函數(shù)為:
s=get(handles.checkbox4, ‘value’);
if(s==1)
b=char(get(handles.edit3,'string'));
set_ param(‘honl/Gain', ‘Gain',b);
end
GUI界面上其他組件的回調(diào)函數(shù)程序的編寫類似,不再贅述。這樣就可以在GUI界面上隨時(shí)設(shè)置或修改參數(shù),不需要再進(jìn)入Simulink環(huán)境。點(diǎn)擊“開始繪制相軌跡”按鈕就可繪制各種條件下的非線性系統(tǒng)的相軌跡,實(shí)現(xiàn)期望的非線性系統(tǒng)相軌跡教學(xué)仿真平臺(tái)的交互功能。
在仿真平臺(tái)界面上設(shè)置或修改參數(shù),并繪制相軌跡,得到的Simulink仿真模型如圖6所示,仿真平臺(tái)界面如圖7所示。由圖7可知,不論開環(huán)增益K取何值,相軌跡都從初始條件(0.6,1)出發(fā),以不同形式運(yùn)動(dòng)。當(dāng)K=1時(shí),相軌跡以螺旋線的方式最終趨于穩(wěn)定,且穩(wěn)定在坐標(biāo)原點(diǎn);當(dāng)K=2.54時(shí),相軌跡最終趨于極限環(huán),系統(tǒng)輸出呈現(xiàn)自激振蕩,振幅約為1.1。根據(jù)上述分析可知,令系統(tǒng)出現(xiàn)自激振蕩的臨界值K<2.74,經(jīng)實(shí)驗(yàn)得到臨界值為2.5。
圖6 根據(jù)題意設(shè)置Simulink仿真模型 (K=1)
在仿真平臺(tái)上還可以分析當(dāng)初始條件不變輸入信號(hào)發(fā)生變化時(shí)的相軌跡,界面如圖8所示;分析當(dāng)輸入信號(hào)不變初始條件變化時(shí)的相軌跡,界面如圖9所示。由圖8和圖9可知,相軌跡不僅與初始條件有關(guān),也和輸入信號(hào)的形式與幅值等有關(guān)。
圖7 在仿真平臺(tái)上設(shè)置參數(shù)并繪制的相軌跡
圖8 初始條件不變輸入發(fā)生變化時(shí)繪制的相軌跡
圖9 輸入信號(hào)不變初始條件變化時(shí)繪制的相軌跡
除此之外,在教學(xué)仿真平臺(tái)上修改模型參數(shù),即可改變線性環(huán)節(jié)的數(shù)學(xué)模型,可用同樣方式繪制新非線性系統(tǒng)的相軌跡并分析其性能;還可以在Simulink仿真模型中修改非線性環(huán)節(jié)的數(shù)值及特性,如將飽和特性換為繼電特性或死區(qū)特性等,甚至可以是多種非線性特性的組合,這些問題可以作為課后思考題供學(xué)生學(xué)習(xí)和思考,本文不再贅述。
由非線性系統(tǒng)相軌跡教學(xué)仿真平臺(tái)可以很直觀地看到系統(tǒng)在不同初始條件以及在不同輸入信號(hào)下繪制的相軌跡是不同的,而根據(jù)精確繪制的相軌跡不僅可以判斷非線性系統(tǒng)的穩(wěn)定性,還可以判斷系統(tǒng)是否產(chǎn)生自激振蕩及產(chǎn)生自激振蕩的條件和振蕩幅值,甚至可以稍微修改aexs1回調(diào)程序,進(jìn)一步得到系統(tǒng)的性能指標(biāo)。
針對授課過程和教學(xué)實(shí)驗(yàn)中,繪制相軌跡的復(fù)雜性、不準(zhǔn)確性和不直觀性的問題,本文將MATLAB中的Simulink仿真工具箱和GUI引入到教學(xué)中,設(shè)計(jì)開發(fā)了非線性系統(tǒng)相軌跡的教學(xué)仿真平臺(tái)。該教學(xué)仿真平臺(tái)可根據(jù)需要構(gòu)建非線性系統(tǒng)的仿真模型,可交互性地設(shè)置或修改系統(tǒng)參數(shù),繪制相應(yīng)的相軌跡。近幾年來的教學(xué)實(shí)踐表明仿真平臺(tái)交互性好,操作簡單,既能豐富教學(xué)手段,又可以幫助學(xué)生加深對相平面的理解和學(xué)習(xí),激發(fā)學(xué)生的學(xué)習(xí)興趣,培養(yǎng)學(xué)生的研究能力和創(chuàng)新能力,改善教學(xué)效果,提高教學(xué)質(zhì)量。