徐 阳
(长江大学工程技术学院, 湖北 荆州 434023)
声速测量仿真软件的设计
徐 阳
(长江大学工程技术学院, 湖北 荆州 434023)
随着虚拟技术的普遍应用,利用该技术进行计算机仿真成为大学物理实验教学的发展趋势。以声速测量实验为研究对象,利用 Visual C++ 6.0设计了声速测量仿真软件。该软件可实现友好人机交互界面并能进行实时仿真声速测量。
❶长江大学教学研究计划项目 (JY06017)。
声速测量;虚拟仪器;仿真软件
由物理学知,振动状态在弹性介质中的传播形成声波,波速u、声源振动频率f和波长λ的关系为:
u=λ·f
(1)
注:X,Y1,Y2分别表示示波器的外通道 图1 声速测量实验装置示意图
在物理实验教学中通常采用超声波测量声速,声速测量实验装置示意图如图1所示,S1、S2分别为超声波发射换能器和超声波接受换能器,信号源提供给S1高频驱动电压信号使其产生平面超声波,信号源频率即为声源振动频率。测量时S2沿轴线水平移动,用来改变S1、S2间的距离L,通过观察示波器荧光屏上检测信号变化,用驻波干涉法或位相比较法测量超声波的波长λ,记录声源振动频率f,即可求出声速u。
图2 声速测量主程序基本结构框图
仿真声速测量在可视化声速测量虚拟平台上进行,该平台由虚拟仪器构建。用户可以在虚拟化的实验环境中操作相关虚拟仪器测量数据、观察实验现象等,达到与真实实验相同的效果。根据声速测量实验教学内容,将声速测量仿真软件主程序结构设计为5个模块(见图2),具体 内容 如下: ①输入当前室内温度模块。用户通过键盘输入0~50℃的温度值,用于确定数据处理时计算声速理论值的温度条件。②输入声源振动频率模块。用户通过键盘输入频率范围在34.5~37.5kHz的声源振动频率值。因为一个声波系统只有一个谐振频率,只有当外加的驱动信号频率与声波换能器系统谐振频率相等时,才能进行声能与电能的相互转换以得到较好的实验效果。③驻波干涉法测量声速模块。通过该项操作用户可进入驻波干涉法测量声速实验操作的各个环节,进行实验现象的观察和实验数据的实时测量
及处理等。④位相比较法测量声速模块。通过该项操作用户可进入位相比较法测量声速的各个实验环节完成操作内容,观察实验现象、实时测量数据等。⑤退出模块。通过该模块可退出声速测量程序。
图3 声速测量仿真软件主界面
一个优秀的应用软件必须具有良好的人机交互功能,对话框则是Window应用程序与用户交换信息的重要技术手段[1]。在程序运行过程中,对话框可用来获取用户输入的信息,同时对话框还能使用ActiveX控件接受和处理各种控制消息[2]。采用Visual C++ 6.0按模块化设计导航按钮,包括位相法测声速按钮(IDC_WEIMEASURE)、驻波法测声速按钮(IDC_MEASURE)、温度输入按钮(IDC_TEMPER)、频率输入按钮(IDC_FREQUENCY)和退出按钮(IDC_OK)。声速测量仿真软件主界面如图3所示。采用面向对象的消息驱动接口技术设计了一套模块间通讯的协议,其消息映射如下:
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 位相比较法测量声速实验界面
采用ActivX控件开发技术,分别设计了用于位相比较法和驻波干涉法测量声速的控件,实现声波接收换能器S2沿轴线水平移动的功能,达到实时测量波长的目的。以位相比较法测量声速为例,其实验界面如图4所示。
用户通过操作超声波换能器S2来改变S1和S2之间的距离L,同时观察示波器信号的变化。波长λ与换能器间的距离关系为[3]:
λ=2|L2-L1|
(2)
式中,L1和L2分别表示2次测量S1和S2之间距离值。
只要精确地测出L1和L2,即可确定波长λ,从而可由式(1)计算出声速u。利用ActiveX控件的属性,同时以事件形式接收ActiveX控件的通知,用户可以在任何时候调用该控件完成特定动作。调用接口如下:
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) // 室内温度值
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) // 输出测量结果
DISP_STOCKFUNC_DOCLICK() //触发控件的Click事件调用
//}}AFX_DISPATCH_MAP
图4中包括4个标准控件命令按钮,分别表示开始测量按钮(IDC_MEASURE)、重新测量按钮(IDC_REM)、输出结果按钮(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) // 输出测量结果
ON_BN_CLICKED(IDC_REM, OnRem) // 重新测量
ON_BN_CLICKED(IDC_REM, OnRETURN) //返回主界面
//}}AFX_MSG_MAP
当用户从主界面中选择当前室内温度为18.0℃、输入频率为3598.0Hz时,选择位相比较法测量声速按钮进入图4所示实验界面,再根据导航按钮提示逐步完成实验操作,最后选择输出结果按钮,系统自动调用如下代码:
void CWeiEarCtrl::Reasult(BOOL RRS)
…
if(RESULT&&STARTMEASURE) //测量完成后,输出结果
if(!STOPCOUNT)
{
count(); //调用数据处理函数
图5 测量结果输出界面
STOPCOUNT=true;
}
最后用户获得实验结果,测量结果输出界面如图5所示。
采用Visual C++ 6.0集成开发环境设计了声速测量仿真软件,其具有优良的模块重用特性,能对超声波的发射与接收、反射波的半波损失、驻波的形成等声速测量实验教学内容进行仿真模拟,能有效地帮助学生理解相关原理和实验操作方法,具有较好的实用性。
[1]王华,叶爱亮,祁立学,等.Visual C++ 6.0编程实例与技巧[M].北京:机械工业出版社 1999.
[2]陈建春. Visual C++高级编程技术[M].北京: 电子工业出版社 1999.
[3]杨长铭.大学物理实验[M].武汉:武汉大学出版社,2005.
[编辑] 李启栋
10.3969/j.issn.1673-1409.2011.02.034
2010-12-12
徐阳(1984-),男,2005年大学毕业,助教,现主要从事计算机软件应用技术方面的教学与研究工作;E-mail:ajxu@tom.com。
TP391.9
A
1673-1409(2011)02-0094-03