徐 陽
(長江大學(xué)工程技術(shù)學(xué)院, 湖北 荊州 434023)
聲速測量仿真軟件的設(shè)計
徐 陽
(長江大學(xué)工程技術(shù)學(xué)院, 湖北 荊州 434023)
隨著虛擬技術(shù)的普遍應(yīng)用,利用該技術(shù)進(jìn)行計算機(jī)仿真成為大學(xué)物理實(shí)驗(yàn)教學(xué)的發(fā)展趨勢。以聲速測量實(shí)驗(yàn)為研究對象,利用 Visual C++ 6.0設(shè)計了聲速測量仿真軟件。該軟件可實(shí)現(xiàn)友好人機(jī)交互界面并能進(jìn)行實(shí)時仿真聲速測量。
?長江大學(xué)教學(xué)研究計劃項(xiàng)目 (JY06017)。
聲速測量;虛擬儀器;仿真軟件
由物理學(xué)知,振動狀態(tài)在彈性介質(zhì)中的傳播形成聲波,波速u、聲源振動頻率f和波長λ的關(guān)系為:
u=λ·f
(1)
注:X,Y1,Y2分別表示示波器的外通道 圖1 聲速測量實(shí)驗(yàn)裝置示意圖
在物理實(shí)驗(yàn)教學(xué)中通常采用超聲波測量聲速,聲速測量實(shí)驗(yàn)裝置示意圖如圖1所示,S1、S2分別為超聲波發(fā)射換能器和超聲波接受換能器,信號源提供給S1高頻驅(qū)動電壓信號使其產(chǎn)生平面超聲波,信號源頻率即為聲源振動頻率。測量時S2沿軸線水平移動,用來改變S1、S2間的距離L,通過觀察示波器熒光屏上檢測信號變化,用駐波干涉法或位相比較法測量超聲波的波長λ,記錄聲源振動頻率f,即可求出聲速u。
圖2 聲速測量主程序基本結(jié)構(gòu)框圖
仿真聲速測量在可視化聲速測量虛擬平臺上進(jìn)行,該平臺由虛擬儀器構(gòu)建。用戶可以在虛擬化的實(shí)驗(yàn)環(huán)境中操作相關(guān)虛擬儀器測量數(shù)據(jù)、觀察實(shí)驗(yàn)現(xiàn)象等,達(dá)到與真實(shí)實(shí)驗(yàn)相同的效果。根據(jù)聲速測量實(shí)驗(yàn)教學(xué)內(nèi)容,將聲速測量仿真軟件主程序結(jié)構(gòu)設(shè)計為5個模塊(見圖2),具體 內(nèi)容 如下: ①輸入當(dāng)前室內(nèi)溫度模塊。用戶通過鍵盤輸入0~50℃的溫度值,用于確定數(shù)據(jù)處理時計算聲速理論值的溫度條件。②輸入聲源振動頻率模塊。用戶通過鍵盤輸入頻率范圍在34.5~37.5kHz的聲源振動頻率值。因?yàn)橐粋€聲波系統(tǒng)只有一個諧振頻率,只有當(dāng)外加的驅(qū)動信號頻率與聲波換能器系統(tǒng)諧振頻率相等時,才能進(jìn)行聲能與電能的相互轉(zhuǎn)換以得到較好的實(shí)驗(yàn)效果。③駐波干涉法測量聲速模塊。通過該項(xiàng)操作用戶可進(jìn)入駐波干涉法測量聲速實(shí)驗(yàn)操作的各個環(huán)節(jié),進(jìn)行實(shí)驗(yàn)現(xiàn)象的觀察和實(shí)驗(yàn)數(shù)據(jù)的實(shí)時測量
及處理等。④位相比較法測量聲速模塊。通過該項(xiàng)操作用戶可進(jìn)入位相比較法測量聲速的各個實(shí)驗(yàn)環(huán)節(jié)完成操作內(nèi)容,觀察實(shí)驗(yàn)現(xiàn)象、實(shí)時測量數(shù)據(jù)等。⑤退出模塊。通過該模塊可退出聲速測量程序。
圖3 聲速測量仿真軟件主界面
一個優(yōu)秀的應(yīng)用軟件必須具有良好的人機(jī)交互功能,對話框則是Window應(yīng)用程序與用戶交換信息的重要技術(shù)手段[1]。在程序運(yùn)行過程中,對話框可用來獲取用戶輸入的信息,同時對話框還能使用ActiveX控件接受和處理各種控制消息[2]。采用Visual C++ 6.0按模塊化設(shè)計導(dǎo)航按鈕,包括位相法測聲速按鈕(IDC_WEIMEASURE)、駐波法測聲速按鈕(IDC_MEASURE)、溫度輸入按鈕(IDC_TEMPER)、頻率輸入按鈕(IDC_FREQUENCY)和退出按鈕(IDC_OK)。聲速測量仿真軟件主界面如圖3所示。采用面向?qū)ο蟮南Ⅱ?qū)動接口技術(shù)設(shè)計了一套模塊間通訊的協(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 位相比較法測量聲速實(shí)驗(yàn)界面
采用ActivX控件開發(fā)技術(shù),分別設(shè)計了用于位相比較法和駐波干涉法測量聲速的控件,實(shí)現(xiàn)聲波接收換能器S2沿軸線水平移動的功能,達(dá)到實(shí)時測量波長的目的。以位相比較法測量聲速為例,其實(shí)驗(yàn)界面如圖4所示。
用戶通過操作超聲波換能器S2來改變S1和S2之間的距離L,同時觀察示波器信號的變化。波長λ與換能器間的距離關(guān)系為[3]:
λ=2|L2-L1|
(2)
式中,L1和L2分別表示2次測量S1和S2之間距離值。
只要精確地測出L1和L2,即可確定波長λ,從而可由式(1)計算出聲速u。利用ActiveX控件的屬性,同時以事件形式接收ActiveX控件的通知,用戶可以在任何時候調(diào)用該控件完成特定動作。調(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) // 測量開始
DISP_FUNCTION(CWeiEarCtrl, “Start”, Start, VT_EMPTY, VTS_BOOL) // 重新測量
DISP_FUNCTION(CWeiEarCtrl, “Reasult”, Reasult, VT_EMPTY, VTS_BOOL) // 輸出測量結(jié)果
DISP_STOCKFUNC_DOCLICK() //觸發(fā)控件的Click事件調(diào)用
//}}AFX_DISPATCH_MAP
圖4中包括4個標(biāo)準(zhǔn)控件命令按鈕,分別表示開始測量按鈕(IDC_MEASURE)、重新測量按鈕(IDC_REM)、輸出結(jié)果按鈕(IDC_OUTR)和返回按鈕(IDC_RETURN),按鈕消息映射如下:
BEGIN_MESSAGE_MAP(CweiMearsure, CDialog)
//{{AFX_MSG_MAP(CweiMearsure)
ON_BN_CLICKED(IDC_MEASURE, OnMeasure1) // 測量開始
ON_BN_CLICKED(IDC_OUTR, OnOutr) // 輸出測量結(jié)果
ON_BN_CLICKED(IDC_REM, OnRem) // 重新測量
ON_BN_CLICKED(IDC_REM, OnRETURN) //返回主界面
//}}AFX_MSG_MAP
當(dāng)用戶從主界面中選擇當(dāng)前室內(nèi)溫度為18.0℃、輸入頻率為3598.0Hz時,選擇位相比較法測量聲速按鈕進(jìn)入圖4所示實(shí)驗(yàn)界面,再根據(jù)導(dǎo)航按鈕提示逐步完成實(shí)驗(yàn)操作,最后選擇輸出結(jié)果按鈕,系統(tǒng)自動調(diào)用如下代碼:
void CWeiEarCtrl::Reasult(BOOL RRS)
…
if(RESULT&&STARTMEASURE) //測量完成后,輸出結(jié)果
if(!STOPCOUNT)
{
count(); //調(diào)用數(shù)據(jù)處理函數(shù)
圖5 測量結(jié)果輸出界面
STOPCOUNT=true;
}
最后用戶獲得實(shí)驗(yàn)結(jié)果,測量結(jié)果輸出界面如圖5所示。
采用Visual C++ 6.0集成開發(fā)環(huán)境設(shè)計了聲速測量仿真軟件,其具有優(yōu)良的模塊重用特性,能對超聲波的發(fā)射與接收、反射波的半波損失、駐波的形成等聲速測量實(shí)驗(yàn)教學(xué)內(nèi)容進(jìn)行仿真模擬,能有效地幫助學(xué)生理解相關(guān)原理和實(shí)驗(yàn)操作方法,具有較好的實(shí)用性。
[1]王華,葉愛亮,祁立學(xué),等.Visual C++ 6.0編程實(shí)例與技巧[M].北京:機(jī)械工業(yè)出版社 1999.
[2]陳建春. Visual C++高級編程技術(shù)[M].北京: 電子工業(yè)出版社 1999.
[3]楊長銘.大學(xué)物理實(shí)驗(yàn)[M].武漢:武漢大學(xué)出版社,2005.
[編輯] 李啟棟
10.3969/j.issn.1673-1409.2011.02.034
2010-12-12
徐陽(1984-),男,2005年大學(xué)畢業(yè),助教,現(xiàn)主要從事計算機(jī)軟件應(yīng)用技術(shù)方面的教學(xué)與研究工作;E-mail:ajxu@tom.com。
TP391.9
A
1673-1409(2011)02-0094-03