徐 陽(yáng)
(長(zhǎng)江大學(xué)工程技術(shù)學(xué)院, 湖北 荊州 434023)
聲速測(cè)量仿真軟件的設(shè)計(jì)
徐 陽(yáng)
(長(zhǎng)江大學(xué)工程技術(shù)學(xué)院, 湖北 荊州 434023)
隨著虛擬技術(shù)的普遍應(yīng)用,利用該技術(shù)進(jìn)行計(jì)算機(jī)仿真成為大學(xué)物理實(shí)驗(yàn)教學(xué)的發(fā)展趨勢(shì)。以聲速測(cè)量實(shí)驗(yàn)為研究對(duì)象,利用 Visual C++ 6.0設(shè)計(jì)了聲速測(cè)量仿真軟件。該軟件可實(shí)現(xiàn)友好人機(jī)交互界面并能進(jìn)行實(shí)時(shí)仿真聲速測(cè)量。
?長(zhǎng)江大學(xué)教學(xué)研究計(jì)劃項(xiàng)目 (JY06017)。
聲速測(cè)量;虛擬儀器;仿真軟件
由物理學(xué)知,振動(dòng)狀態(tài)在彈性介質(zhì)中的傳播形成聲波,波速u(mài)、聲源振動(dòng)頻率f和波長(zhǎng)λ的關(guān)系為:
u=λ·f
(1)

注:X,Y1,Y2分別表示示波器的外通道 圖1 聲速測(cè)量實(shí)驗(yàn)裝置示意圖
在物理實(shí)驗(yàn)教學(xué)中通常采用超聲波測(cè)量聲速,聲速測(cè)量實(shí)驗(yàn)裝置示意圖如圖1所示,S1、S2分別為超聲波發(fā)射換能器和超聲波接受換能器,信號(hào)源提供給S1高頻驅(qū)動(dòng)電壓信號(hào)使其產(chǎn)生平面超聲波,信號(hào)源頻率即為聲源振動(dòng)頻率。測(cè)量時(shí)S2沿軸線(xiàn)水平移動(dòng),用來(lái)改變S1、S2間的距離L,通過(guò)觀察示波器熒光屏上檢測(cè)信號(hào)變化,用駐波干涉法或位相比較法測(cè)量超聲波的波長(zhǎng)λ,記錄聲源振動(dòng)頻率f,即可求出聲速u(mài)。

圖2 聲速測(cè)量主程序基本結(jié)構(gòu)框圖
仿真聲速測(cè)量在可視化聲速測(cè)量虛擬平臺(tái)上進(jìn)行,該平臺(tái)由虛擬儀器構(gòu)建。用戶(hù)可以在虛擬化的實(shí)驗(yàn)環(huán)境中操作相關(guān)虛擬儀器測(cè)量數(shù)據(jù)、觀察實(shí)驗(yàn)現(xiàn)象等,達(dá)到與真實(shí)實(shí)驗(yàn)相同的效果。根據(jù)聲速測(cè)量實(shí)驗(yàn)教學(xué)內(nèi)容,將聲速測(cè)量仿真軟件主程序結(jié)構(gòu)設(shè)計(jì)為5個(gè)模塊(見(jiàn)圖2),具體 內(nèi)容 如下: ①輸入當(dāng)前室內(nèi)溫度模塊。用戶(hù)通過(guò)鍵盤(pán)輸入0~50℃的溫度值,用于確定數(shù)據(jù)處理時(shí)計(jì)算聲速理論值的溫度條件。②輸入聲源振動(dòng)頻率模塊。用戶(hù)通過(guò)鍵盤(pán)輸入頻率范圍在34.5~37.5kHz的聲源振動(dòng)頻率值。因?yàn)橐粋€(gè)聲波系統(tǒng)只有一個(gè)諧振頻率,只有當(dāng)外加的驅(qū)動(dòng)信號(hào)頻率與聲波換能器系統(tǒng)諧振頻率相等時(shí),才能進(jìn)行聲能與電能的相互轉(zhuǎn)換以得到較好的實(shí)驗(yàn)效果。③駐波干涉法測(cè)量聲速模塊。通過(guò)該項(xiàng)操作用戶(hù)可進(jìn)入駐波干涉法測(cè)量聲速實(shí)驗(yàn)操作的各個(gè)環(huán)節(jié),進(jìn)行實(shí)驗(yàn)現(xiàn)象的觀察和實(shí)驗(yàn)數(shù)據(jù)的實(shí)時(shí)測(cè)量
及處理等。④位相比較法測(cè)量聲速模塊。通過(guò)該項(xiàng)操作用戶(hù)可進(jìn)入位相比較法測(cè)量聲速的各個(gè)實(shí)驗(yàn)環(huán)節(jié)完成操作內(nèi)容,觀察實(shí)驗(yàn)現(xiàn)象、實(shí)時(shí)測(cè)量數(shù)據(jù)等。⑤退出模塊。通過(guò)該模塊可退出聲速測(cè)量程序。

圖3 聲速測(cè)量仿真軟件主界面
一個(gè)優(yōu)秀的應(yīng)用軟件必須具有良好的人機(jī)交互功能,對(duì)話(huà)框則是Window應(yīng)用程序與用戶(hù)交換信息的重要技術(shù)手段[1]。在程序運(yùn)行過(guò)程中,對(duì)話(huà)框可用來(lái)獲取用戶(hù)輸入的信息,同時(shí)對(duì)話(huà)框還能使用ActiveX控件接受和處理各種控制消息[2]。采用Visual C++ 6.0按模塊化設(shè)計(jì)導(dǎo)航按鈕,包括位相法測(cè)聲速按鈕(IDC_WEIMEASURE)、駐波法測(cè)聲速按鈕(IDC_MEASURE)、溫度輸入按鈕(IDC_TEMPER)、頻率輸入按鈕(IDC_FREQUENCY)和退出按鈕(IDC_OK)。聲速測(cè)量仿真軟件主界面如圖3所示。采用面向?qū)ο蟮南Ⅱ?qū)動(dòng)接口技術(shù)設(shè)計(jì)了一套模塊間通訊的協(xié)議,其消息映射如下:
BEGIN_MESSAGE_MAP(CXYDlg, CDialog)
//{{AFX_MSG_MAP(CXYDlg)
ON_BN_CLICKED(IDC_TEMPER, OnTemper) // 溫度輸入
ON_BN_CLICKED(IDC_MEASURE, OnMeasure) // 駐波干涉法
ON_BN_CLICKED(IDC_WEIMEASURE, OnWeimeasure) //位相比較法
ON_BN_CLICKED(IDC_FREQUENCY, OnFrequency) //頻率輸入
ON_BN_CLICKED(IDC_OK, OnOk) //退出
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

圖4 位相比較法測(cè)量聲速實(shí)驗(yàn)界面
采用ActivX控件開(kāi)發(fā)技術(shù),分別設(shè)計(jì)了用于位相比較法和駐波干涉法測(cè)量聲速的控件,實(shí)現(xiàn)聲波接收換能器S2沿軸線(xiàn)水平移動(dòng)的功能,達(dá)到實(shí)時(shí)測(cè)量波長(zhǎng)的目的。以位相比較法測(cè)量聲速為例,其實(shí)驗(yàn)界面如圖4所示。
用戶(hù)通過(guò)操作超聲波換能器S2來(lái)改變S1和S2之間的距離L,同時(shí)觀察示波器信號(hào)的變化。波長(zhǎng)λ與換能器間的距離關(guān)系為[3]:
λ=2|L2-L1|
(2)
式中,L1和L2分別表示2次測(cè)量S1和S2之間距離值。
只要精確地測(cè)出L1和L2,即可確定波長(zhǎng)λ,從而可由式(1)計(jì)算出聲速u(mài)。利用ActiveX控件的屬性,同時(shí)以事件形式接收ActiveX控件的通知,用戶(hù)可以在任何時(shí)候調(diào)用該控件完成特定動(dòng)作。調(diào)用接口如下:
BEGIN_DISPATCH_MAP(CWeiEarCtrl, COleControl)
//{{AFX_DISPATCH_MAP(CWeiEarCtrl)
DISP_FUNCTION(CWeiEarCtrl, “Pinlu”, Pinlu , VT_EMPTY, VTS_R9) //聲源頻率
DISP_FUNCTION(CWeiEarCtrl, “SentT”, SentT, VT_EMPTY, VTS_R8) // 室內(nèi)溫度值
DISP_FUNCTION(CWeiEarCtrl, “Measure”, Measure, VT_EMPTY, VTS_BOOL) // 測(cè)量開(kāi)始
DISP_FUNCTION(CWeiEarCtrl, “Start”, Start, VT_EMPTY, VTS_BOOL) // 重新測(cè)量
DISP_FUNCTION(CWeiEarCtrl, “Reasult”, Reasult, VT_EMPTY, VTS_BOOL) // 輸出測(cè)量結(jié)果
DISP_STOCKFUNC_DOCLICK() //觸發(fā)控件的Click事件調(diào)用
//}}AFX_DISPATCH_MAP
圖4中包括4個(gè)標(biāo)準(zhǔn)控件命令按鈕,分別表示開(kāi)始測(cè)量按鈕(IDC_MEASURE)、重新測(cè)量按鈕(IDC_REM)、輸出結(jié)果按鈕(IDC_OUTR)和返回按鈕(IDC_RETURN),按鈕消息映射如下:
BEGIN_MESSAGE_MAP(CweiMearsure, CDialog)
//{{AFX_MSG_MAP(CweiMearsure)
ON_BN_CLICKED(IDC_MEASURE, OnMeasure1) // 測(cè)量開(kāi)始
ON_BN_CLICKED(IDC_OUTR, OnOutr) // 輸出測(cè)量結(jié)果
ON_BN_CLICKED(IDC_REM, OnRem) // 重新測(cè)量
ON_BN_CLICKED(IDC_REM, OnRETURN) //返回主界面
//}}AFX_MSG_MAP
當(dāng)用戶(hù)從主界面中選擇當(dāng)前室內(nèi)溫度為18.0℃、輸入頻率為3598.0Hz時(shí),選擇位相比較法測(cè)量聲速按鈕進(jìn)入圖4所示實(shí)驗(yàn)界面,再根據(jù)導(dǎo)航按鈕提示逐步完成實(shí)驗(yàn)操作,最后選擇輸出結(jié)果按鈕,系統(tǒng)自動(dòng)調(diào)用如下代碼:
void CWeiEarCtrl::Reasult(BOOL RRS)
…
if(RESULT&&STARTMEASURE) //測(cè)量完成后,輸出結(jié)果
if(!STOPCOUNT)
{
count(); //調(diào)用數(shù)據(jù)處理函數(shù)

圖5 測(cè)量結(jié)果輸出界面
STOPCOUNT=true;
}
最后用戶(hù)獲得實(shí)驗(yàn)結(jié)果,測(cè)量結(jié)果輸出界面如圖5所示。
采用Visual C++ 6.0集成開(kāi)發(fā)環(huán)境設(shè)計(jì)了聲速測(cè)量仿真軟件,其具有優(yōu)良的模塊重用特性,能對(duì)超聲波的發(fā)射與接收、反射波的半波損失、駐波的形成等聲速測(cè)量實(shí)驗(yàn)教學(xué)內(nèi)容進(jìn)行仿真模擬,能有效地幫助學(xué)生理解相關(guān)原理和實(shí)驗(yàn)操作方法,具有較好的實(shí)用性。
[1]王華,葉愛(ài)亮,祁立學(xué),等.Visual C++ 6.0編程實(shí)例與技巧[M].北京:機(jī)械工業(yè)出版社 1999.
[2]陳建春. Visual C++高級(jí)編程技術(shù)[M].北京: 電子工業(yè)出版社 1999.
[3]楊長(zhǎng)銘.大學(xué)物理實(shí)驗(yàn)[M].武漢:武漢大學(xué)出版社,2005.
[編輯] 李啟棟
10.3969/j.issn.1673-1409.2011.02.034
2010-12-12
徐陽(yáng)(1984-),男,2005年大學(xué)畢業(yè),助教,現(xiàn)主要從事計(jì)算機(jī)軟件應(yīng)用技術(shù)方面的教學(xué)與研究工作;E-mail:ajxu@tom.com。
TP391.9
A
1673-1409(2011)02-0094-03