李鵬等
【摘 要】基于MATLAB Web Server和網(wǎng)頁(yè)開發(fā)技術(shù),對(duì)火炮原理課程用網(wǎng)絡(luò)虛擬實(shí)驗(yàn)系統(tǒng)進(jìn)行了研究,闡述了虛擬實(shí)驗(yàn)系統(tǒng)的工作原理、環(huán)境配置及開發(fā)的關(guān)鍵技術(shù),并給出了網(wǎng)絡(luò)虛擬實(shí)驗(yàn)系統(tǒng)實(shí)例。
【關(guān)鍵詞】MATLAB Web Server;虛擬;實(shí)驗(yàn)
0 引言
在原理課程教學(xué)過(guò)程中,如果能夠?qū)⒗碚摻虒W(xué)與實(shí)驗(yàn)教學(xué)緊密結(jié)合,對(duì)于加深學(xué)生對(duì)課程內(nèi)容的理解無(wú)疑是大有裨益的。然而在教學(xué)實(shí)踐中真正實(shí)現(xiàn)這一點(diǎn)卻并非易事。以筆者講授的火炮原理課程為例,該課程內(nèi)容龐雜,涉及內(nèi)外彈道、強(qiáng)度理論、機(jī)械運(yùn)動(dòng)等多個(gè)學(xué)科,加之學(xué)時(shí)緊張,難以安排專門針對(duì)本課程的實(shí)驗(yàn)環(huán)節(jié),即使開展數(shù)值模擬計(jì)算,也由于課程理論的復(fù)雜性和學(xué)生普遍缺乏編程基礎(chǔ)而難以取得良好效果。網(wǎng)絡(luò)虛擬實(shí)驗(yàn)系統(tǒng)的出現(xiàn)為解決上述難題提供了一個(gè)全新的思路,網(wǎng)絡(luò)虛擬實(shí)驗(yàn)系統(tǒng)不僅可以作為課堂教學(xué)的補(bǔ)充,而且可以培養(yǎng)學(xué)生的自主學(xué)習(xí)能力,成為實(shí)驗(yàn)教學(xué)發(fā)展的重要方向。
本文基于MATLAB軟件,進(jìn)行了B/S(Browser/Server)模式的網(wǎng)絡(luò)虛擬實(shí)驗(yàn)系統(tǒng)研究。MATLAB是Math Works公司推出的一種優(yōu)秀的科學(xué)及工程計(jì)算軟件,具有高效的數(shù)值計(jì)算和強(qiáng)大的圖形處理能力,其Web Server組件將MATLAB的強(qiáng)大計(jì)算能力和Web瀏覽器的遠(yuǎn)程訪問(wèn)能力相結(jié)合,客戶端通過(guò)Web瀏覽器向服務(wù)器發(fā)出請(qǐng)求和傳遞參數(shù),服務(wù)器進(jìn)行相關(guān)計(jì)算后可生成動(dòng)態(tài)頁(yè)面返回客戶端。該虛擬實(shí)驗(yàn)系統(tǒng)將大量的計(jì)算程序設(shè)計(jì)在服務(wù)器端運(yùn)行,位于客戶端的學(xué)生不必具有編程基礎(chǔ),僅需一個(gè)Web瀏覽器即可進(jìn)行虛擬實(shí)驗(yàn),從而檢驗(yàn)課程理論知識(shí),加深學(xué)習(xí)認(rèn)知。
1 工作原理
1.1 MATLAB Web Server 簡(jiǎn)介
MATLAB Web Server 主要由matlabserver 和matweb兩部分組成。matlabserver是一個(gè)MATLAB Web服務(wù)器,用來(lái)管理Web應(yīng)用程序和MATLAB之間的通信;matweb.exe是一個(gè)可執(zhí)行程序,是MATLAB Web Server的TCP/IP客戶端,它利用公共網(wǎng)關(guān)接口(CGI)從輸入頁(yè)面HTML文件中提取用戶數(shù)據(jù)傳遞給matlabserver.exe進(jìn)行處理。
MATLAB Web Server 的工作流程如圖1所示。
用戶在客戶端輸入網(wǎng)頁(yè)上填寫相應(yīng)數(shù)據(jù)后,將任務(wù)提交給服務(wù)器端,服務(wù)器接收任務(wù)并把數(shù)據(jù)傳遞給matweb.exe,之后matlabserver將數(shù)據(jù)傳遞給MATLAB,MATLAB調(diào)用內(nèi)部函數(shù)執(zhí)行相應(yīng)的計(jì)算任務(wù)。計(jì)算完畢后,matweb根據(jù)輸出模板,將從matlabserver傳回的數(shù)據(jù)填入到指定范圍并構(gòu)造出網(wǎng)頁(yè)文件。最后Web服務(wù)器將matweb生成的頁(yè)面文件和圖形文件返回客戶端,并在瀏覽器上顯示結(jié)果。
在應(yīng)用MATLAB Web Server時(shí),應(yīng)對(duì)其配置文件matweb.conf進(jìn)行配置,matweb.conf文件的內(nèi)容如下:
[應(yīng)用程序名]
mlserver=服務(wù)器名
mldir=應(yīng)用程序所在路徑
每增加一個(gè)MATLAB Web應(yīng)用,就需要增加一項(xiàng)上述配置。
1.2 運(yùn)行環(huán)境配置
服務(wù)器端要提供WWW服務(wù),還必須有一個(gè)傳統(tǒng)的Web服務(wù)器,常用的有IIS服務(wù)器和Apache Web Server。IIS(Internet Information Server)是微軟公司開發(fā)的信息服務(wù)器,是在windows環(huán)境下運(yùn)行的最主要的Web服務(wù)器;Apache則具有開源、高效、配置靈活、安全等優(yōu)點(diǎn)。本文選用的是IIS服務(wù)器。
客戶端瀏覽器的選擇取決于用戶的使用習(xí)慣,可選擇windows自帶的IE瀏覽器,也可采用Firefox、chrome等第三方瀏覽器。
2 網(wǎng)絡(luò)虛擬實(shí)驗(yàn)系統(tǒng)的構(gòu)建
2.1 虛擬實(shí)驗(yàn)?zāi)P偷慕?/p>
火炮原理課程,是研究火炮射擊過(guò)程中一系列復(fù)雜現(xiàn)象的學(xué)科,其中最具代表性同時(shí)又是學(xué)生理解難點(diǎn)的是內(nèi)彈道過(guò)程和外彈道過(guò)程,內(nèi)彈道過(guò)程決定了火炮的膛壓、初速,外彈道過(guò)程決定了火炮的射程、落點(diǎn),掌握了這兩個(gè)過(guò)程,就抓住了火炮射擊的主線,抓住了課程的重點(diǎn),本文選取了火炮內(nèi)彈道計(jì)算模型和外彈道計(jì)算模型作為虛擬實(shí)驗(yàn)系統(tǒng)的基礎(chǔ)。內(nèi)外彈道方程組都是微分方程組,不具備熟練的編程技巧很難求解,MATLAB中提供了專門用于求解微分方程組的函數(shù)ode45,可以使微分方程組的求解過(guò)程大大簡(jiǎn)化,更加凸顯了MATLAB在數(shù)學(xué)計(jì)算中的優(yōu)勢(shì)。
2.2 創(chuàng)建輸入頁(yè)面
一個(gè)虛擬實(shí)驗(yàn)系統(tǒng),首先要建立輸入頁(yè)面,用戶通過(guò)頁(yè)面輸入?yún)?shù)和請(qǐng)求,之后頁(yè)面將相應(yīng)內(nèi)容傳送到服務(wù)器。輸入頁(yè)面可以直接使用html語(yǔ)言建立,也可利用Frontpage、Dreamweaver等開發(fā)工具建立。
輸入頁(yè)面中必須包含與MATLAB Web服務(wù)相關(guān)的關(guān)鍵代碼:
% 設(shè)置一隱藏輸入框mfile,其值為在MATLAB Web服務(wù)器中運(yùn)行的m文件的名稱。
% 創(chuàng)建“提交”或“計(jì)算”按鈕。
2.3 編寫虛擬試驗(yàn)系統(tǒng)計(jì)算m文件
用于計(jì)算的m文件是虛擬實(shí)驗(yàn)系統(tǒng)的主體,它必須是一個(gè)function函數(shù),用于接收、處理頁(yè)面輸入的數(shù)據(jù),并將結(jié)果輸出為html文件。m文件由MATLAB腳本語(yǔ)言編寫,可靈活調(diào)用MATLAB內(nèi)置的各個(gè)函數(shù),如上述用于求解微分方程組的ode45函數(shù)等,其數(shù)據(jù)結(jié)構(gòu)、運(yùn)算過(guò)程與MATLAB其他程序基本相同。
輸出結(jié)果時(shí)首先將計(jì)算結(jié)果寫入到一個(gè)結(jié)構(gòu)數(shù)組outstruct中,如:outstruct.h=h;然后調(diào)用htmlrep函數(shù)將結(jié)果返回給輸出文件,格式為:
retstr=htmlrep (outstruct,temlatefile);其中templatefile是一個(gè)預(yù)先編制好的用于輸出的HTML文件。
2.4 創(chuàng)建輸出頁(yè)面
輸出頁(yè)面包含頁(yè)面布局、文字說(shuō)明、圖形等信息,是最終呈現(xiàn)給用戶的界面。輸出頁(yè)面通常預(yù)先定義模板,再由m文件調(diào)用。模板中用到MATLAB計(jì)算程序輸出變量的地方用用$var_ name$的形式替換即可。如果輸出結(jié)果中包含圖形,則輸出頁(yè)面模板中要預(yù)先寫好,圖形的文件名也作為變量保存在(下轉(zhuǎn)第170頁(yè))(上接第154頁(yè))outstruct數(shù)組中。
3 虛擬實(shí)驗(yàn)系統(tǒng)實(shí)例
本文根據(jù)上述開發(fā)過(guò)程,編寫了火炮原理課程網(wǎng)絡(luò)虛擬實(shí)驗(yàn)系統(tǒng)。學(xué)生進(jìn)入頁(yè)面后,通過(guò)下拉框可選擇不同種類的火炮,頁(yè)面即給出該火炮的基本參數(shù),同時(shí)頁(yè)面提供了五個(gè)輸入?yún)?shù),分別是裝藥量、藥室容積、彈丸質(zhì)量、環(huán)境溫度和射角,輸入五個(gè)參數(shù),點(diǎn)擊“計(jì)算”按鈕,頁(yè)面即返回計(jì)算結(jié)果和相應(yīng)的內(nèi)外彈道曲線圖。如圖2所示。
通過(guò)改變輸入?yún)?shù),學(xué)生可以直觀感受到某一參數(shù)的變化對(duì)火炮射擊帶來(lái)的影響,如裝藥量的增加會(huì)帶來(lái)膛壓上升,射程增大等,從而更深刻地理解理論知識(shí),加深對(duì)課程的印象。該虛擬實(shí)驗(yàn)系統(tǒng)不占用課時(shí),可由學(xué)生利用課余時(shí)間自行完成,從而成為課程教學(xué)的必要補(bǔ)充。
4 結(jié)束語(yǔ)
基于MATLAB Web Server的網(wǎng)絡(luò)虛擬實(shí)驗(yàn)系統(tǒng),充分發(fā)揮了MATLAB軟件強(qiáng)大的數(shù)值計(jì)算功能,又利用了網(wǎng)頁(yè)豐富多彩的表現(xiàn)形式,給用戶提供了一個(gè)簡(jiǎn)單易用、功能強(qiáng)大的網(wǎng)絡(luò)實(shí)驗(yàn)環(huán)境,成為理論課程教學(xué)的重要拓展內(nèi)容,在遠(yuǎn)程教學(xué)領(lǐng)域擁有廣闊的應(yīng)用前景。
【參考文獻(xiàn)】
[1]徐望明.基于MATLAB Web Server的數(shù)字圖像處理仿真實(shí)驗(yàn)[J].信息技術(shù),2007,31(10).
[2]何強(qiáng),何英.MATLAB擴(kuò)展編程[M].清華大學(xué)出版社,2002.
[3]鐘麟,王峰.MATLAB仿真技術(shù)與應(yīng)用教程[M].國(guó)防工業(yè)出版社,2004.
[4]錢林方.火炮彈道學(xué)[M].北京理工大學(xué)出版社,2009.
[責(zé)任編輯:劉展]