【摘要】結合VB界面友好、編程簡單的特點及MATLAB強大的計算、圖形表達功能,利用ActiveX技術,以及將Matlab作為服務器、VB應用程序作為控制端的方式,實現了從VB調用Matlab的功能。運用這種功能設計開發了“自動控制原理”的計算機輔助教學軟件。該軟件包含數學計算、傳遞函數、穩定性分析、頻率響應分析、根軌跡分析等5個主要模塊,操作簡便,界面友好、靈活,對“自動控制原理”的學習與教學具有一定的實用性。
【關鍵詞】MATLAB;VB;ActiveX技術;自動控制原理
1.引言
在自動控制原理教學中[1,2],經常要對控制系統的穩定性進行分析,通過頻域變化、z變換、s變換等來解決時域問題,從而改變和判斷系統的收斂情況。各種方法雖是可以達到結果,但繁瑣,計算起來較慢,且學生和老師需在計算機房花費大量時間來驗證、編程,對教學的及時性、串聯性,學生的感官性認識都有所影響[3]。
Visual Basic[4]是一種可視化的程序設計語言,在其編程環境中采用了面向對象的可視化設計工具、事件驅動的編程機制、動態數據驅動等先進的軟件開發技術,為用戶提供了一種所見即所得的可視化程序設計方法。但是它的數值計算能力不是很強,而由美國MathWorks公司推向市場的MATLAB軟件恰好彌補了這一缺陷。該軟件是一種面向科學和工程計算的解釋性語言,具有強大的數值分析、矩陣運算、信號處理和圖形顯示能力,為用戶提供了一個強有力的科學及工程問題分析計算及程序設計的工具,可根據不同處理對象的需要,通過簡單的編程,方便地完成相應的功能[5]。
基于VB和MATLAB的上述特點,本文利用VB來設計界面作為主程序,調用由MATLAB編寫的子程序,從而實現對自動控制系統中系統的穩定性的分析,還可以畫出相應的Frequency圖、Nichols圖、Nyquist圖、Bode圖,進行自動控制系統的性能分析。有效地提高了自動控制原理課程的教學計劃,也提高的學生的感性認識和積極性,提高了教學質量。
2.軟件工具
2.1 借助Active X部件
Active X部件是一些遵循Active X規范編寫的可執行代碼,比如一個.exe、.dll或.ocx文件。它允許應用程序或組件控制另一個應用程序或組件的運行,它包括自動化服務器和自動化控制器。在程序中加入Active X部件后,它將成為開發和運行環境的一部分,并為應用程序提供新的功能。Active X部件保留了一些普通VB控制的屬性、事件和方法,它特有的方法和屬性大大地增強了程序設計者的能力和靈活性。Active X實際上是在調用一種部件,而無需要求該部件對應的程序正在運行,這會使得其功能更加強大。在VB中創建MATLAB的Active X對象后,就可以使用這個對象所包含的各種方法,實現對MATLAB的調用[6-8]。
在VB中創建MATLAB Active X的方法如下:
Dim Matlab As Object
Set Matlab=CreatObject(“Matlab.Application”)
在創建Matlab Active X對象后。就可以利用該對象所包含的各種方法實現對MATLAB的調用。
2.2 基于MATLAB的自動控制系統性能分析
一個控制系統的全部性質都取決于其閉環傳遞函數,如穩定性取決于其極點,穩定精度取決于其比例系數,動態性能既取決于其極點,又與零點有關。閉環傳遞函數的零點和開環傳遞函數的零點相同,比例系數之間也有簡單的關系,都不難確定[9,10]。唯有閉環傳遞函數的極點,即閉環特征方程的根,計算比較困難。控制系統的這些基本性能在經典控制理論中主要通過時域響應曲線分析法、根軌跡法與頻率響應法等對系統進行設計、分析,為此我們借助Matlab強大的專業繪圖功能(如響應曲線、Bode圖、Nyquist圖、Frequency圖、Nichols圖等),對系統的各種性能進行分析。控制系統傳遞函數模型:
(1)
在MATLAB中,直接用分子/分母的系數表示,即:
num=[b1,b2,b3,…,bm]
den=[a1,a2,a3,…,am]
則該系統的頻率響應數據可由式(2)得出。
(2)
3.基于Visual Basic及MATLAB接口實現的自動控制系統
例如某控制系統的開環傳遞函數為:
本例設計的是利用VB來設計界面作為主程序,借助與Active X部件調用由MATLAB編寫的子程序,畫出相應的Frequency圖、Nichols圖、Nyquist圖、Bode圖、step圖和rlocus圖,并對自動控制系統的穩定性從頻域和時域進行了分析。
3.1 該系統的頻域分析
用戶界面設計如下:
在VB中編寫的頻域分析主程序如下:
Private Sub Command1_Click()
Dim matlab As Object
Dim result As String
Set matlab = CreateObject(\"matlab.application\")
Call matlab.minimizecommandwindow
result = matlab.execute(\"clear\")
result = matlab.execute(\"\" Text1.Text \"\")
result = matlab.execute(\"freqs(num, den,w)\")
result = matlab.execute(\"print -f1 -dbitmap e:\ freqs.bmp\")
Picture1.Picture = LoadPicture(\"e:\ freqs.bmp\")
Call matlab.quit
Set matlab = Nothing
End Sub
Private Sub Command5_Click()
Unload Me
End Sub
Private Sub Form_Load()
Me.Left = 0
Me.Top = 0
Me.Width = Screen.Width
Me.Height = Screen.Height
End Sub
在Matlab下編寫的函數子程序如下:
num=[250];
den=[1 20 75 0] ;
w=0:0.1:100;
[m1,p1]=bode(num,den,w);
p1=p1-T*w'*180/pi;
subplot(211),semilogx(w,20*log10(m1));
subplot(212),semilogx(w,p1);
[x,y]=nyquist(num,den,w);
clg;plot(x,y);
[x1,y1]=freqz(num,den,sqrt(-1)*w);
[mag,pha]=nichols(num,den,w)[7];
3.2 該系統的穩定性分析
3.2.1 利用Bode圖進行分析
此系統開環傳遞函數的特征根全部位于虛軸左側,即p=0。由圖中可以知道,在的頻率范圍內,未穿越-180o線,故該系統閉環后是穩定的。
3.2.2 利用Nyquist穩定判據進行分析
要判斷閉環狀態的穩定性,必須繪制出的幅相特性圖,根據繪制幅相頻率特性圖的規則,特性曲線的起點在實軸上,終點是以-270o進入原點。系統閉環穩定與否,主要取決于特性曲線與實軸的交點。
(3)
由得。將代入得:
(4)
的幅相頻率特性圖如4所示。由圖知的幅相特性繞(-1,j0)的轉角為零。所以該系統閉環狀態是穩定的[6]。
4.結論
通過對VB和Matlab的鏈接進行了總結性研究,以Active X部件為基礎的鏈接方法,實現對自動控制原理中控制系統進行了教學編程,可對系統的連續函數和離散函數進行分析,并舉例說明和分析了系統開環傳遞函數的穩定性,畫出了系統的Bode圖、Nyquist圖、Frequency圖、Nichols圖來驗證設計的鏈接的正確性。很好的改變了老師在教學中枯燥的現象,豐富了課堂的活躍性,提高了教學質量,是可以推廣應用的好的教學手段。
參考文獻
[1]趙仕良.用MATLAB語言輔助《自動控制原理》的教學[J].四川師范大學學報(自然科學版),1999,22(3):341-343.
[2]周竹生,陳靈君,張賽民.VB實現對MATLAB程序的調用[J].電腦開發與應用,2004,5:21-23.
[3]湯海紅,張君.基于Active X的Matlab與VB接口技術在仿真軟件設計中的應用[J].煤礦機械,2004,12:86-88.
[4]杜春雷.如何使用Visual Basic 6.0中文版[M].北京:機械工業出版社,1999,5.
[5]李蓉萍.MATLAB在控制系統仿真中的應用[J].電訊技術,2001,5:95-97.
[6]陳耀東.VB應用程序與Matlab接口技術的實現[J].新余高專學報,2004,2:11-13.
[7]吳文進.自動控制原理課程的MATLAB輔助教學[J].安慶師范學院學報(自然科學版),2010,16(1):114-116.
[8]柴瑞娟.MATLAB語言在自動控制原理教學中的應用[J].電氣電子教學學報,2001,23(6):25-27.
[9]魏克新.MATLAB語言與自動控制系統設計[M].北京:機械工業出版社,1997,2.
[10]張春峰,鄒新杰,余張國.用MATLAB語言開發自動控制原理的輔助教學系統[J].西南科技大學《高教研究》,2006,2:18-20.
作者簡介:
萬會敏(1985—),女,西華師范大學教育學院2014屆現代教育技術專業教育學碩士研究生在讀,主要從事計算機教學、編程和網絡設計方面的工作。
丁鋒(1984—),男,碩士,工程師,現供職于中石化中原石油勘探局勘察設計研究院,主要從事電子設計,信號解調,化工儀表維護和集散控制系統設計及油氣加工設計等方面的應用研究。