LabVIEW环境下基于声卡的虚拟示波器软件设计图文精.docx
- 文档编号:15892367
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:16
- 大小:1.49MB
LabVIEW环境下基于声卡的虚拟示波器软件设计图文精.docx
《LabVIEW环境下基于声卡的虚拟示波器软件设计图文精.docx》由会员分享,可在线阅读,更多相关《LabVIEW环境下基于声卡的虚拟示波器软件设计图文精.docx(16页珍藏版)》请在冰点文库上搜索。
LabVIEW环境下基于声卡的虚拟示波器软件设计图文精
第24卷第3期 计算机应用与软件
Vol124,No.32007年3月 ComputerApplicationsandSoftwareMar.2007
收稿日期:
2004-10-25。
全国教育科学十五规划项目
(ECB030477。
吕红英,助教,主研领域:
虚拟仪器技术,远程实验技术。
LabVIEW环境下基于声卡的虚拟示波器软件设计
吕红英
1,2
吴先球2 刘朝辉2 陈俊芳
2
1
(华南农业大学理学院 广东广州510642
2
(华南师范大学物理与电信工程学院 广东广州510631
摘 要 基于计算机声卡的虚拟仪器成本低、通用性强,在对采样频率要求不高的情况下,可以用声卡取代数据采集卡进行采样
和输出。
利用虚拟仪器开发工具软件LabVIEW及其数字声音记录节点,研制出基于声卡的虚拟双踪数字存储示波器,其功能和界面都与真实示波器相同。
重点阐述了数据采集、触发控制、显示控制几个主模块的设计方法。
关键词 虚拟仪器 声卡 LabVIEW 虚拟示波器
SOFTWAREDESIGNOFVIRTUALOSCILLOSCOPEBASED
ONSOUNDCARDUNDERLabVIEW
LüHongying1,2 WuXianqiu2 LiuZhaohui2 ChenJunfang
2
1
(CollegeofSciences,SouthChinaAgriculturalUniversity,GuangzhouGuangdong510642,China
2
(SchoolofPhysicsandTelecommunicationEngineering,SouthChinaNormalUniversity,GuangzhouGuangdong510631,China
Abstract ThevitrualinstrumentbasedonPCsoundcardhasthevirtuesoflowcostandpowerfulgenerality,andthesoundcardcantaketheplaceoftheplug2indata2acquisitionboardonlow2frequencycondition.Inthisarticle,thevirtualdouble2tracedstorageoscilloscopebasedonsoundcard,whosefunctionandinterfaceweredesignedaccordingtotheactualoscilloscope,wasdevelopedusingvirtualinstrumentsoftwareLabVIEWanditsdigitalsoundrecordnodes.Thedesignsforseveralmainmodulessuchasdataacquisition,triggeringcontrolanddisplaycon2trolwerechieflyexpounded.
Keywords Virtualinstrument Soundcard LabVIEW Virtualoscilloscope
1 引 言
随着计算机技术和虚拟仪器技术的发展,虚拟仪器逐渐成
为现代仪器的发展方向,其中大部分虚拟仪器都是基于各种数
据采集卡,如NI公司的Lab2PC21200数据采集卡[1]
研华公司
的PCL21800型数据采集卡[2],ISA型数据采集卡AC1820[3]
。
在对采样频率要求不高的情况下,可以利用计算机的声卡进行数据的输入和输出[4,5]。
声卡是一个非常优秀的音频信号采集系统,其数字信号处理器包括模数变换器ADC(AnalogueDigitalConverter和数模变换器DAC(DigitalAnalogueConverter,ADC用于采集音频信号,DAC则用于重现这些数字声音。
声卡已成为多媒体计算机的一个标准配置,因此基于声卡的虚拟仪器具有成本低、兼容性好、通用性和灵活性强的优点,可以不受硬件限制,安装在多台计算机上。
本文利用LabVIEW6.1中的数字声音记录节点,编程实现了基于声卡的虚拟双踪数字存储示波器,采样速率为44.1KHz,线路输入端口最高电压限制为1V,对高于1V的信号可衰减后输入,能适合很多场合的需要。
2 LabVIEW中的声音记录节点
LabVIEW(LaboratoryVirtualInstrumentEngineeringWork2bench是美国国家仪器公司的基于图形化编程G语言的开发
环境,具有各种各样、功能强大的函数库,包括数值采集、串口控
制、数据分析、数据显示及数据存储等。
采用旋钮、开关、波形图等构造用户界面,人机交互界面友好。
LabVIEW函数库中SoundInput子模板(FunctionsPalette→Graphics&Sound→Sound→SoundInput提供了数字声音记录的
节点[6],可以通过声卡采集外部模拟信号。
包括以下节点:
SIConfig节点 用于设置声卡的参数和数字声音格式,如
缓存区大小、采样速率、采样通道数(单通道或双通道、样本位数(8bits或16bits。
本文虚拟示波器用双通道采集数据,缓存区大小为32768bytes,样本位数为16bits。
SIStart节点 驱动声卡开始采集数据。
SIRead节点 从缓存区读取数据。
根据不同的数字声音
格式,读取相应数据格式的数组。
SIStop节点 停止采集数据。
SIClear节点 释放声卡占用的计算机资源。
利用这些数字声音记录节点,在LabVIEW6.1环境中编程,设计了具有仿真面板的虚拟双踪数字存储示波器,通过声卡采集外部数据,并用软件实现了触发控制、波形显示、波形调节、数据存储等功能。
62
计算机应用与软件2007年
3
虚拟示波器用户界面和使用设置
图1 虚拟示波器用户界面
虚拟示波器面板的设计参考了真实的示波器SS2020,用户
界面与真实示波器的操作面板相似,如图1所示,其中显示的波形为虚拟示波器用于RLC串联电路特性实验时,电路频率为2000Hz时的波形。
虚拟示波器面板上各个旋钮、开关的功能与真实示波器相同,包括“TIME/DIV”时间/分度选择旋钮、“X-Y”水平-垂直按钮、“X-POS”水平位置调节旋钮、“VAR”扫描速度微调旋钮、“SOURCE”触发选择开关、“SLOPE”触发极性选择开关、“VOLT/DIV”电压/分度衰减器、“Y-POS”位置调节旋钮、“VAR”幅度微调旋钮、直流-接地-交流开关。
不同于真实示波器的部分有:
1显示屏 用于显示声卡采集的信号波形。
水平方向和垂直方向各有10个格,每个格又分5个小格。
用户可以通过单击鼠标右键,选择“VisibleItems”选项,显示“PlotLegend”和“GraphPalette”,实现传统示波器无法实现的操作,如查看显示屏上未显示的部分、进行波形的多倍放大,以完成特定的测量。
2“LEVEL”触发电平调节旋钮 触发电平默认值为“0”。
当用户设置的触发电平大小超出触发电压信号的范围时,不再进行触发。
若进行设置后需调节回零值,可在旋钮上单击鼠标右键,选择“ReinitializetoDefaultValue”即可。
3“PAUSE”暂停按钮 按下此按钮,可暂停信号采集,方便用户仔细观察显示屏上的波形。
4“SAVE”存盘按钮和存盘路径设置文本框 用户可在文本框中指定保存文件的位置,点击“SAVE”按钮,以文本文件的格式存储数据。
文本文件可导入EXCEL、MATLAB等软件进行处理。
用户亦可用“PrintScreen”键直接剪取波形图。
5“VERTMODE”显示模式选择开关 只观测A或B通道信号时,选择器置于“A”或“B”。
设计程序时,线路输入插孔左声道采集的信号送入A通道,右声道采集的信号送入B通道。
“A&B”用于同时显示两通道信号。
“A+B”和“A-B”用于显示两通道信号相加和相减后的波形。
6电压显示 虚拟示波器附加了电压表的功能,显示屏下两个文本框分别用于显示A、B通道的电压幅值。
使用前,需要制作一根测试电缆用于输入信号。
方法是用一个立体声插头,接一段1~2m长的双芯屏蔽线,分别对应立体声插头的地线、左声道、右声道,构成测试电缆,电缆的另一端接上三个鳄鱼夹。
为确保虚拟仪器正常工作,要正确设置声卡:
送入虚拟示波器的信号若为线路输入信号,通过LINEIN插孔输入,在音量控制面板的录音属性中选择“线路输入”一项;若为麦克风信号,通过MIC插孔输入,在录音属性中选择“麦克风”一项。
输入电压不能超过声卡的承受范围,以免损坏声卡,对于线路输入插孔,一般为-1V~1V。
若测量的信号超过此范围,需先将信号衰减。
虚拟示波器程序安装在不同计算机上时,对于信号频率的
测量没有影响,由波形计算出的信号频率与真实值一致;对于信号幅度的测量,由于线路输入音量大小的不同,在使用前需要定标,以后的测量中,不必再调节线路输入音量大小。
4 虚拟示波器软件设计
4.1 总体结构
虚拟示波器程序采用While循环结构,示波器的电源开关状态作为循环的控制条件,包含数据采集、电压显示、触发控制、垂直方向波形调节、水平方向波形调节、显示模式选择、波形显示和波形存储8个模块,各模块之间的关系如图2所示。
框图程序见图3
。
图2 虚拟示波器总体结构
图3 虚拟示波器框图程序
4.2 数据采集
SIConfig节点和SIStart节点放在循环的外部,设置声卡参
数和数字声音格式,并驱动声卡开始采集数据。
SIClear节点也
放在循环外部,并由数据流程控制,在程序停止时释放声卡占用的资源。
“PAUSE”按钮按下时,用SIStop节点停止数据采集,进入While循环,直到弹起“PAUSE”按钮,循环中止,用SIStart节点重新驱动声卡采集数据。
SIRead节点读取包含16bits立体声数据的数组,由IndexArray函数分别提取左声道和右声道数据,作为示波器CHA与CHB的输入信号。
需要注意的是:
在各个声道声卡每次读取的数据点数为8192,即SIRead节点读取的数组维数为8192行×2列,提取左、右声道数据时,要按列进行,“0”列对应左声道数据,“1”列对应右声道数据。
样本位数为16bits的数据其范围为-32768~32767,为便于虚拟示波器电压读数与信号真实参数相同,将声卡采集的数据除以某个数值。
根据声卡线路输入插孔的输入电压范围,设定虚拟示波器可测到的最高电压为1V,可将此除数设为32767,当输入的信号高于1V时,示波器的波形失真。
4.3 触发控制
图4 软件触发原理图
触发控制子程序实现选择触发源、根据触发电平的大小和触发极性进行触发。
其原理如图4所示,首先判断用户设置的触发电平大小是否在波峰和波谷范围内,在此范围内则进行触发。
对输入电压信号的第i点和第
第3期
吕红英等:
LabVIEW环境下基于声卡的虚拟示波器软件设计63
图5 触发控制框图程序
i+1点的值进行比较,
正极性触发时,若第i
点的值等于或小于触发电平,同时第i+1点的值大于触发电平,则第i点为触发点,将此值送入触发控制子程序后的ArraySubset函数的“in2dex”端口,每次采集数
据后,都从触发点开始提取子数组,送入显示屏,实现波形的同步显示。
负极性触发时与之相反。
子程序框图如图5所示。
4.4 电压灵敏度调节
可以采用不同档位时对显示屏waveformgraph的三个属性节点“YScale.Maximum”、“YScale.Minimum”和“YScale.Incre2ment”赋不同值的方法。
但这样调节CHA电压/分度衰减器时,CHB的波形也随之变化。
故采用另一种方法。
固定显示屏waveformgraph的Y轴刻度即电压刻度,范围为-0.5V~0.5V,在垂直方向占10个格,每个格分为5个小格。
为使波形在垂直方向所占的格数与档位变化相一致,采用按比例放大或缩小数组数据的方法。
电压/分度衰减器“VOLT/DIV”的值作为Case结构条件,Case“0~9”中,分别将数组除以不同的数值。
由于Y轴刻度值固定,因此选择不同档位时,波形在垂直方向上所占的格数与其档位相乘,其值是恒定的。
如对于幅值为0.2V的正弦信号,当档位为0.1V/格时,在Y轴刻度范围为-0.5V~0.5V的显示屏上,其半波形占2个格;当档位变为0.2V/格时,由于除数由“1”变为“2”,数据值减小为原来的一半,即电压幅值变为0.1V,此时在显示屏上,其半波形占1个格。
两种情况下波形在垂直方向上所占的格数与其档位的乘积相等。
就可以分别调节CHA和CHB波形的电压灵敏度。
4.5 水平方向波形调节
(1时间灵敏度调节
与电压灵敏度的调节相似,可以采用不同档位时对显示屏
waveformgraph的三个属性节点“XScale.Maximum”、“XScale.Minimum”和“XScale.Increment”赋不同值的方法。
但用这种方
法时,X轴的格数不能保持恒定,不能根据波形在水平方向所占的格数计算波形的周期。
故采用另一种方法。
波形显示控件waveformgraph实际上为一个簇,包含三个元素,起始位置x0、步长Δx和yarray。
默认情况下,X轴刻度是从初始位置x0=0处开始的,刻度值按照步长1递增,X轴刻度是对应的数据点的序号。
对于时间灵敏度的调节,采用改变步
长Δx的方法,此时,X轴的刻度值为X=X0+n×
Δx,其中n为数据在数组中的序号。
固定显示屏waveformgraph的X轴刻度即时间刻度,设定X轴刻度范围为0~100。
对waveformgraph的两个属性节点“XS2
cale.Increment”和“XScale.MinorInc”分别赋值为10和2,使水
平方向格数为10个,每个格分为5个小格。
为使波形在水平方向所占的格数与档位变化相一致,采用按比例放大或缩小步长Δx的方法。
时间/分度选择旋钮“TIME/DIV”的值作为Case结构条件,Case“0~22”中,分别放置不同的步长值。
由于X轴刻度值固定,因此选择不同档位时,一个周期的波形在水平方向上所占的格数与其档位相乘,其值是恒定的。
如对于1000Hz的波
形,在档位为1ms时占一个格,即一个周期波形占据刻度值为
10;在档位变为0.5ms时,将Δx值增加一倍,此时一个周期波形占据的刻度值也增加为原来的一倍,即为20,在显示屏上占据两个格。
两种情况下一个周期的波形在水平方向上所占的格数与其档位的乘积相等。
(2波形位置调节
将位置调节旋钮“X-POS”的值作为显示屏waveformgraph的X轴刻度的初始位置,即可实现波形水平方向位置调节。
“X-POS”旋钮的值的范围为-50~50。
默认情况下“X-POS”旋钮的值为“0”,顺时针旋转旋钮,波形右移;逆时针旋转旋钮,波形左移。
4.6 数据存储
布尔控件“SAVE”按钮的值作为Case结构的条件,当按下按钮时,将显示模式选择模块中输出的数组(2行×8192列送入WriteToSpreadsheetFile函数的“2Ddata”端口,布尔常量“TrueConstant”连接“transpose?
”端口,将二维数组转置为8192行×2列数组,便于EXCEL或MATLAB软件导入,其中“0”列对应CHA数据,“1”列对应CHB数据。
4.7 波形显示
将处理后的起始位置x0和步长Δx与显示模式选择模块中输出的二维数组按顺序经Bundle节点打包,组合为“簇”,送入波形显示控件waveformgraph,实现根据各个旋钮和开关的位置显示波形。
显示李萨如图形时,要用XYgraph控件,此时CHA的信号作为X轴。
用属性节点“Visible”控制waveformgraph和XYgraph的显示,布尔控件“X-Y”按钮作为Case结构的条件。
正常显示波形时,waveformgraph的“Visible”属性节点值为“True”,XYgraph的“Visible”属性节点值为“False”;按下“X-Y”按钮,进入Case“True”结构,显示李萨如图形,将CHA和CHB的信号经Bundle节点打包,送入XYgraph,此时“Visible”属性节点的赋值方法与前相反。
5 结果和结论
本文利用LabVIEW中的数字声音记录节点,编程实现了基
于声卡的虚拟双踪数字存储示波器,通过声卡采集外部数据,用软件方法实现了触发控制、电压测量、波形显示、波形调节和数据存储,这些方法还可移植到基于数据采集卡、串口、并口的虚拟示波器中。
本文的虚拟示波器已安装在实验室的多台计算机上,应用于电磁学、声学部分的学生实验,在音频范围内完全可以满足实验要求。
图6所示图形为测量正弦信号的频率实验中,fx/fy=2∶3时的李萨如图形。
图7所示图形为微机辅助的非超声方法测量声速实验中,计算两列波形起点的时间差,利用了虚拟示波器的波形多倍放大、查看显示屏上未显示的部分等功能
。
图6 fx/fy=2∶3时
的李萨如图形
图7 微机辅助的非超声方法测量声速实验
64
计算机应用与软件2007年
参考文献
[1]郑利锋、杨小雪、张汉全,“基于LabVIEW的虚拟频谱分析仪设
计”,《自动化与仪器仪表》,2002(5:
4~7.
[2]张锐、陈励军,“一种基于虚拟示波器技术的数据采集系统”,《计
算机测量与控制》,2003(2:
122~124.
[3]肖宇峰,“一款虚拟示波器的设计”,《器件与仪表》,2002(5:
58~
60.
[4]J.Saliga,L.Michaeli,SoftwareformetrologicalcharacterizationofPC
soundcards,ComputerStandards&Interfaces,2003(25:
45~55.[5]M.H.Levin,Useofasoundcardinteachingaudiofrequencyandana2
logmodemcommunications,ACMSIGCSEBulletin,1999(3:
79
~83.
[6]LabVIEWUserManual,NationalInstrumentsCorporation,2001,11.
(上接第7页
3实现耦合(RC
定义4 RC=|RS|
RS={x|x∈CS∧ϖRealization(x,t}
RS是系统中类t所实现的所有接口的集合。
观点:
一个类型实现的接口过多,表明该类型被赋予的职责过多,需要考虑对其拆分。
4泛化/继承耦合(GC
定义5 GC=|GS|
GS是系统中类型(类/接口t所泛化(继承的所有类型(类/接口的集合。
GS={x|x∈TS∧ϖGeneralization(x,t}
其中,TS是系统中定义的所有类型(类/接口的集合。
观点:
(1当某个类型同时泛化(继承多个类型时,由父类型继承而来的属性和操作相互影响的可能性也越大。
通常多重泛化(继承是应当避免的。
事实上,一些面向对象语言,如Java,根本不支持多重泛化(继承。
4 数据分析
Eclipse对度量信息的获取提供了很好的支持。
它支持将Java文件建模成抽象语法分析树(AST,并提供了丰富的接口方便地遍历AST。
在FrankSauer开发的Eclipse度量计算插件的基础上,我们实现了OCMOOD的自动计算。
JUnit是由KentBeck和ErichGamma合作开发的一个开源小工具。
KentBeck和ErickGamma都是公认的面向对象领域的专家。
JUnit3.8.1在3.7的基础上进行了多次重构。
功能和软件质量都有了提高。
JUnit3.7和Junit3.8.1的OCMOOD计算结果见表1和表2。
表 1
JUnit3.7ACDCGCRC
最大值5711
最小值0000
平均值0.3141.0200.2350.255
标准差0.8741.4750.4240.436
表 2
JUnit3.8.1ACDCGCRC
最大值5611
最小值0000
平均值0.3091.0180.2180.255
标准差0.8501.4210.4130.436
从度量结果看,JUnit3.8.1AC,DC,GC,RC的均值都比JUnit3.7低,这也说明JUnit3.8.
1较3.7
有更好的质量。
图1和图2分别是这两个指标计算值拟合后对比图。
从图1可以看出,两个版本的AC度量值均小于5,并且在[0,2.5]区间上,JUnit3.8.1的度量曲线位于3.7度量曲线的上方,(2.5,5]区间上位于3.7度量曲线下方,这说明JUnit3.8.1的关联耦合度较3.7要小。
图 1图 2
从DC度量结果上,可以看出,两条DC度量曲线在度量值为2处有一个交点,在[0,2]区间上,JUnit3.8.1的曲线位于JUnit3.7的上方,这说明JUnit3.8.1DC耦合度低于2的类比JUnit3.7要多,可见,JUnit3.7的依赖耦合度比JUnit3.8.1要高。
由于Java中不允许多继承,所以GC度量值始终为1,又因为所选JUnit样本的特殊性,所有的RC度量值也为1。
所以在此不对这两个度量的拟合曲线进行讨论。
通过上述讨论,我们得到在软件规模大致相近的情况下,质量好的软件的OCMOOD度量值比质量差的要低,反之亦然。
从而对OCMOOD的有效性进行了验证。
5 总结和将来的工作
本文分析了CBO的不足,提出了一组新的面向对象耦合度量OCMOOD,并验证了它的有效性。
由于面向对象编程中继承,多态等技术的应用,只依靠软件的静态特征已经很难准确度量软件的实际质量。
通过捕获软件的运行期特征来实现软件的动态耦合度量,是我们将来的工作目标。
参考文献
[1]Chidamber,S.R.,andKemerer,C.F.,Ametricssuite
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LabVIEW 环境 基于 声卡 虚拟 示波器 软件设计 图文