張衛(wèi)山,尚劍鋒,劉雪林,劉 冰
(中國石油大學(xué)(華東),山東 青島 266580)
該仿真平臺(tái)構(gòu)建的原則是使最終的平臺(tái)具有系統(tǒng)性、交互性、實(shí)時(shí)性、保密性和實(shí)用性的特點(diǎn)。為了解決現(xiàn)在仿真項(xiàng)目單一不系統(tǒng)的問題,該平臺(tái)利用GUI設(shè)計(jì)編制了人機(jī)友好的圖形用戶界面,采用交互式動(dòng)態(tài)的展現(xiàn)各物理參數(shù)對波動(dòng)光學(xué)現(xiàn)象的影響,擺脫了一個(gè)界面只能模擬一個(gè)實(shí)驗(yàn)現(xiàn)象的局限。該仿真平臺(tái)分兩大模塊,即主界面和次界面,具體系統(tǒng)結(jié)構(gòu)見圖1。在主界面中通過下拉式菜單進(jìn)入不同的次界面中,在次界面上有參數(shù)輸入?yún)^(qū)和圖像繪制區(qū),輸入不同參數(shù)即可模擬出相應(yīng)波動(dòng)光學(xué)條紋及光強(qiáng),改變參數(shù)可模擬出另一組圖像,與前一組可進(jìn)行觀察對比,可模擬平面圖像,也可模擬出三維光強(qiáng)圖像,此外還可從部分界面中顯示出相應(yīng)波動(dòng)光學(xué)實(shí)驗(yàn)的器材圖片。為了使該平臺(tái)具有易操作性和便攜性,脫離龐大的MATLAB平臺(tái)運(yùn)行,提高該平臺(tái)的實(shí)用性,在項(xiàng)目的最后階段利用mcc編譯生成可脫離matlab環(huán)境獨(dú)立運(yùn)行的可執(zhí)行文件,從而也提高了系統(tǒng)的保密性。
圖1 波動(dòng)光學(xué)仿真平臺(tái)結(jié)構(gòu)圖
用Matlab GUI設(shè)計(jì)的波動(dòng)光學(xué)仿真界面,主要有以下幾個(gè)步驟:
(1)整理草圖,構(gòu)思控件的布局。打開Matlab程序,在file菜單中選擇new gui,打開guide設(shè)計(jì)界面模板,界面模板左邊各個(gè)控件可以在編輯框內(nèi)進(jìn)行編排。
(2)主界面和次界面的設(shè)計(jì)。該仿真平臺(tái)包括光的干涉和衍射實(shí)驗(yàn)兩個(gè)方面。主界面見圖2,點(diǎn)擊相應(yīng)的選項(xiàng)即可進(jìn)入下一界面,同時(shí)在部分子界面中加入相關(guān)實(shí)驗(yàn)器材圖片以及繪制三維的光強(qiáng)圖像等功能,并且可以通過get()和close()函數(shù)隨時(shí)擴(kuò)展實(shí)驗(yàn),將各個(gè)實(shí)驗(yàn)?zāi)K化,增強(qiáng)平臺(tái)的拓展性[8]。
圖2 系統(tǒng)主界面
(3)設(shè)置各個(gè)控件的屬性。比如設(shè)置各控件的顏色、大小、文字等。
(4)代碼的設(shè)計(jì)。關(guān)鍵是OpeningFcn(初始界面函數(shù))和控件的Callback(回調(diào)函數(shù))代碼的設(shè)計(jì)?;卣{(diào)函數(shù)是關(guān)鍵,是對界面控件觸發(fā)時(shí)的事件響應(yīng)函數(shù)[9]。
(5)mcc編譯。為了實(shí)現(xiàn)平臺(tái)的保密性以及實(shí)用性,該平臺(tái)利用mcc編譯生成可脫離matlab環(huán)境獨(dú)立運(yùn)行的可執(zhí)行文件。
在進(jìn)入ADC中斷服務(wù)程序之前一定要對EV和AD初始化并打開相應(yīng)中斷,ADC中斷程序主要是處理采集的10次數(shù)據(jù)先按從小到大排列后,然后經(jīng)過中值濾波,再按獲得的增益量和偏移量來校準(zhǔn)采集的結(jié)果,最后把校準(zhǔn)后的結(jié)果保存在DSP內(nèi)部寄存器中,等待DSP讀取最后結(jié)果通過SPI總線輸出到LCD上顯示。AD轉(zhuǎn)化流程圖,如圖5所示。
2.2.1 夫瑯和費(fèi)雙縫衍射實(shí)驗(yàn)的仿真設(shè)計(jì)
本文以夫瑯和費(fèi)雙縫衍射實(shí)驗(yàn)和牛頓環(huán)實(shí)驗(yàn)為例,介紹其仿真界面設(shè)計(jì)過程及仿真結(jié)果。雙縫衍射實(shí)驗(yàn)的示意圖如圖3所示。
圖3 夫瑯和費(fèi)雙縫衍射實(shí)驗(yàn)示意圖
設(shè)雙縫S1、S2的距離為d,屏幕到雙縫的距離為z,且z?d,則在演示屏上觀察到的光強(qiáng)分布為[10]:
其中:α=πasinθ/λ,β=πdsinθ/λ。
根據(jù)設(shè)計(jì)步驟,在編輯框中設(shè)置相應(yīng)控件,文本框用來輸入相應(yīng)參數(shù),坐標(biāo)軸Axes1用來顯示三維衍射強(qiáng)度曲線,另外彈出的Figure1用來顯示雙縫衍射條紋,界面可直接輸入縫的中心間距d、波長λ和雙縫到屏幕的距離z等參數(shù)。設(shè)計(jì)“繪制圖形”控件的回調(diào)函數(shù)的代碼,在界面中輸入相應(yīng)的參數(shù),點(diǎn)擊“繪制圖形”控件,即可得到夫瑯和費(fèi)雙縫衍射實(shí)驗(yàn)的仿真結(jié)果,如圖4所示。
圖4 夫瑯和費(fèi)雙縫衍射實(shí)驗(yàn)仿真結(jié)果
2.2.2 牛頓環(huán)實(shí)驗(yàn)的仿真設(shè)計(jì)
牛頓環(huán)實(shí)驗(yàn)的示意圖如圖5所示。
圖5 牛頓環(huán)實(shí)驗(yàn)示意圖
設(shè)輸入透鏡曲率半徑為R,光波長為λ,m級干涉條紋半徑為r則屏幕上的牛頓環(huán)光強(qiáng)分布的公式為[11]
同樣的方法設(shè)計(jì)界面,可調(diào)節(jié)的參數(shù)有:λ,R和r。在界面中輸入不同的參數(shù)可以分析比較在不同條件下的實(shí)驗(yàn)仿真結(jié)果,如圖6所示。隨著參數(shù)的變化可以看出,干涉條紋也在發(fā)生變化,變化規(guī)律與理論相吻合。還可以改變其他參數(shù),觀察分析參數(shù)的變化對牛頓環(huán)光強(qiáng)的影響。
2.3.1 編譯文件
在mcc編譯前安裝編譯器,通過在Matlab命令窗口輸入:mbuild-setup,按提示選擇 MATLAB自帶編譯器LCC,在文件路徑下命令行輸入(以牛頓環(huán)的制作為例):mcc-mniudunhuan.m,將M文件編譯為脫離matlab環(huán)境運(yùn)行所必需的可執(zhí)行文件:niudunhuan.exe等文件。
圖6 牛頓環(huán)實(shí)驗(yàn)的仿真結(jié)果
2.3.2 運(yùn)行編譯文件
在 MATLAB\toolbox\compiler\deploy\win32下找MCRInstaller.exe文件,在沒有安裝MATLAB的電腦上安裝 MCRInstaller到D:\MATLAB Component Runtime。
設(shè)置環(huán)境變量,右鍵點(diǎn)擊我的電腦-屬性-高級-環(huán)境變量-新建。
變量名:Path
變量值:D:\MCR\v70\runtime\win32
運(yùn)行exe文件,每次都是出現(xiàn)DOS界面后,幾秒鐘會(huì)自動(dòng)關(guān)閉。
2.3.3 消除DOS黑窗口
去除獨(dú)立可執(zhí)行程序運(yùn)行時(shí)的“DOS黑窗口”時(shí),在 MATLAB命令行輸入:cd(prefdir)和edit compopts.bat,此時(shí)compopts.bat打開,在文件 最 后 添 加:set LINKFLAGS =%LINKFLAGS%-subsystem windows。然后再重新生成.exe文件,運(yùn)行此文件即可消除黑色窗口界面[12]。
通過以上方法構(gòu)建的波動(dòng)光學(xué)仿真平臺(tái)具有界面友好、操作方便、可移植性強(qiáng)、實(shí)用性及保密性好等優(yōu)點(diǎn)。該平臺(tái)能夠?qū)崿F(xiàn)實(shí)驗(yàn)項(xiàng)目的選取和實(shí)驗(yàn)參數(shù)的靈活設(shè)置,為光學(xué)理論教學(xué)和實(shí)驗(yàn)教學(xué)提供一個(gè)新的途徑,其理論和實(shí)際意義在于突破了教學(xué)空間、儀器設(shè)備等因素的限制,減少了實(shí)驗(yàn)損耗,把抽象的問題進(jìn)行簡明直觀的動(dòng)態(tài)展示,讓學(xué)生直觀、方便地觀察到模擬的實(shí)驗(yàn)現(xiàn)象以便更好地理解理論知識,進(jìn)一步推動(dòng)了基礎(chǔ)課程教學(xué)方法的現(xiàn)代信息技術(shù)的應(yīng)用。
[1] 符運(yùn)良.MATLAB在光學(xué)教學(xué)中的應(yīng)用[J].華南熱帶農(nóng)業(yè)大學(xué)學(xué)報(bào),2004,10(3):55-57.
[2] 曲偉娟.基于 Matlab的光學(xué)實(shí)驗(yàn)仿真[D].西安:西北工業(yè)大學(xué),2004.
[3] 唐慧琴,鄭小娟.工科大學(xué)物理“光學(xué)”課程建設(shè)的實(shí)踐與思考[J].紅河學(xué)院學(xué)報(bào),2010,8(2):16-17.
[4] 陳小莉,鐘生海.MATLAB在光學(xué)實(shí)驗(yàn)中的應(yīng)用[J].安康師專學(xué)報(bào),2003(15):64-67.
[5] 莊建,青莉.基于 Matlab的光學(xué)實(shí)驗(yàn)仿真平臺(tái)[J].成都大學(xué)學(xué)報(bào):自然科學(xué)版,2006,25(1):70-72.
[6] 孫緒保,光學(xué)實(shí)驗(yàn)與仿真[M].北京:北京理工大學(xué)出版社,2009.
[7] 趙盾.光學(xué)實(shí)驗(yàn)計(jì)算機(jī)仿真平臺(tái)的構(gòu)建[D].武漢:武漢理工大學(xué),2010:4-5.
[8] 胡昌奎,楊應(yīng)平等.光學(xué)實(shí)驗(yàn)計(jì)算機(jī)仿真平臺(tái)的構(gòu)建[J].大學(xué)物理實(shí)驗(yàn),2011,24(1):69-70.
[9] 鐘可君,張海林.基于 Matlab GUI設(shè)計(jì)的光學(xué)實(shí)驗(yàn)仿真[J].實(shí)驗(yàn)室研究與探索,2010,29(10):52-53.
[10] 游璞,于國萍.光學(xué)[M].北京:高等教育出版社,2008:121-124.
[11] 張慧蘭.牛頓環(huán)干涉中光強(qiáng)分布的探討[J].南方冶金學(xué)院學(xué)報(bào),1996,17(4):17-21.
[12] 羅華飛.MATLAB GUI設(shè)計(jì)學(xué)習(xí)筆記[M].北京:北京航空航天大學(xué)出版社,2008:328-329.
[13] 宋璐.基于MATLAB GVI的拍頻實(shí)現(xiàn)方法的研究[J].大學(xué)物理實(shí)驗(yàn),2012,06:98-99.
[14] 王秀芳.Matlab-GVI在偏振光實(shí)驗(yàn)中的應(yīng)用[J].大學(xué)物理實(shí)驗(yàn),2013,02:70-74.