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