基于VC++與OpenGL的THz-TDS系統(tǒng)測試過程仿真
東北石油大學(xué)經(jīng)濟(jì)管理學(xué)院 王學(xué)良 2014/4/4 7:37:36
(接上頁)片反射的探測光與太赫茲輻射打在探測用ZnTe晶體的同一位置。探測光再經(jīng)過 波片和渥拉斯頓棱鏡后,分為偏振方向互相垂直的兩束線偏光,入射到平衡探測器上,平衡探測器把光強(qiáng)差轉(zhuǎn)化為電信號,最后用鎖相放大器把信號從噪聲中提取出來輸入到計算機(jī)中顯示。
圖1 透射式太赫茲時域光譜系統(tǒng)實(shí)驗(yàn)裝置
3. 基于VC++與OpenGL的THz-TDS系統(tǒng)測試過程仿真
3.1系統(tǒng)分析
在系統(tǒng)設(shè)計之前,需要分析、理解整個THz-TDS系統(tǒng)設(shè)計的基本目標(biāo)和系統(tǒng)的工作原理,從而在系統(tǒng)模塊化設(shè)計的基礎(chǔ)上確定整個系統(tǒng)的基本框架與結(jié)構(gòu)。
3.1.1 仿真系統(tǒng)設(shè)計目標(biāo)
目前,一種最新的太赫茲光譜技術(shù)——太赫茲時域光譜技術(shù)(THz-TDS)日益成為太赫茲光譜技術(shù)的熱點(diǎn)[5]。本系統(tǒng)開發(fā)的主要目的有三:一是通過圖形可視化的系統(tǒng)模型設(shè)計,提高人機(jī)交互性,并能夠進(jìn)行動態(tài)實(shí)時仿真實(shí)驗(yàn);二是構(gòu)建THz-TDS系統(tǒng)各分立光學(xué)元器件模塊的仿真模型,通過對信號的離散化以及運(yùn)算和處理,實(shí)現(xiàn)對系統(tǒng)的動態(tài)模擬仿真;三是通過前后臺之間的數(shù)據(jù)交互,實(shí)現(xiàn)實(shí)驗(yàn)系統(tǒng)在調(diào)試過程中對常見故障的診斷功能。
3.1.2 仿真系統(tǒng)整體框架
THz-TDS仿真系統(tǒng)是通過前臺可視圖形化的光學(xué)元器件模型與后臺光學(xué)模塊的數(shù)學(xué)模型之間的數(shù)據(jù)交流,完成激光脈沖、太赫茲電磁波在THz-TDS系統(tǒng)中的物理過程的模擬與再現(xiàn)。其中,前臺界面顯示系統(tǒng)主要實(shí)現(xiàn)光學(xué)元器件和光在光路中的可視化,以及完成各光學(xué)模塊物理參數(shù)的設(shè)置與調(diào)整功能[6]。后臺數(shù)據(jù)處理系統(tǒng),則主要是通過物理光學(xué)理論建立各系統(tǒng)分立模塊的數(shù)學(xué)模型,實(shí)現(xiàn)在光學(xué)物理參數(shù)的數(shù)據(jù)處理功能,并實(shí)時顯示其波形和頻譜,方便相關(guān)物理化學(xué)參數(shù)的計算。
3.1.3 仿真系統(tǒng)工作原理
本系統(tǒng)利用面向?qū)ο笮缘拈_發(fā)設(shè)計語言VC++[7],被開發(fā)的人機(jī)交互性強(qiáng)并具備數(shù)據(jù)處理功能的模擬分析模塊。程序一旦運(yùn)行就會清空數(shù)據(jù)文件,以排除前數(shù)據(jù)對仿真結(jié)果的影響;在參數(shù)輸入界面中,可以輸入各分立光學(xué)模塊的位置坐標(biāo)參數(shù)以及光學(xué)特性參數(shù)等,并可以讀取不同待檢測物質(zhì)在不同頻率下的消光系數(shù)和吸收系數(shù)的數(shù)據(jù)文件;輸入適當(dāng)?shù)膮?shù)后,進(jìn)入基于VC++的開發(fā)模塊,并完成gauss脈沖信息的后續(xù)處理;數(shù)據(jù)的文件讀寫操作,可以完成不同模塊之間的數(shù)據(jù)交流,從而實(shí)現(xiàn)太赫茲脈沖信息進(jìn)入后處理模塊進(jìn)行數(shù)據(jù)處理,最終獲得透射出樣品后的太赫茲波譜信息,同時處理信息可以通過圖形界面的方式顯示出來,顯得更加生動直觀,便于調(diào)試人員及時發(fā)現(xiàn)問題。
3.2 關(guān)于混合編程
3.2.1 開發(fā)工具介紹
THz-TDS軟件平臺的開發(fā)使用Visual C++6.0、Matlab和OpenGL。C++是在C語言基礎(chǔ)上發(fā)展的一門語言,它繼承了C語言的高效,簡潔,快速和高移植性的傳統(tǒng)[8]。C++包含C語言的內(nèi)容,主要是在C語言的基礎(chǔ)上添加了面向?qū)ο缶幊?OOP)的方法。C++已成為全世界最流行的計算機(jī)編程語言之一,是一種可互操作的標(biāo)準(zhǔn)語言。通過Visual C++,開發(fā)人員能夠享用世界級的C++開發(fā)工具。
Matlab自1984年由美國Mathworks公司推向市場以來,歷經(jīng)十幾年的發(fā)展和競爭,現(xiàn)已被(IEEE評述)國際公認(rèn)為最優(yōu)秀的科技應(yīng)用軟件,其具有圖形繪制、數(shù)據(jù)處理、系統(tǒng)分析、信號和圖像處理、符號運(yùn)算功能 [9]。
OpenGL(Open Graphic Library,開放式圖形庫),是SGI公司開發(fā)的低層三維圖形API(Application Programming Interface,應(yīng)用程序接口),目前在圖形開發(fā)領(lǐng)域已成為工業(yè)標(biāo)準(zhǔn)[10]。
3.2.2 Visual C++與OpenGL、MATLAB混合編程
OpenGL獨(dú)立于窗口系統(tǒng)和操作系統(tǒng),這使得在進(jìn)行可視化三維仿真系統(tǒng)開發(fā)時,需要選擇一個開發(fā)工具來實(shí)現(xiàn)場景數(shù)據(jù)結(jié)構(gòu)、算法和圖形界面等。Visual C++6.0作為一個強(qiáng)大的集成開發(fā)工具,符合當(dāng)前先進(jìn)的軟件設(shè)計思想,是目前流行的Windows應(yīng)用軟件開發(fā)平臺。VC的MFC包含了強(qiáng)大的基于Windows的應(yīng)用程序框架,提供了應(yīng)用程序的文檔/視圖結(jié)構(gòu)(工程CAD/CAM/CAE軟件常用的結(jié)構(gòu))以及豐富的窗口和事件管理函數(shù)。
軟件平臺使用Visual C++ 6.0開發(fā),然而圖形顯示的時候使用C++語言實(shí)現(xiàn)起來非常困難和復(fù)雜。為了使算法的實(shí)現(xiàn)簡單方便,提高開發(fā)的效率,一般會利用Matlab與Visual C++混合編程的方法最終實(shí)現(xiàn)整個軟件的融合[12-13]。
3.3 仿真軟件系統(tǒng)界面設(shè)計 <(未完,下一頁)
|