虚拟仪器系统中,硬件解决信号的输入和输出,软件可以很方便地修改,改变仪器系统的功能,以适应不同使用者的需要。其中信号的输入部分一般使用数据采集卡实现。商用的数据采集卡具有较大的通用性,但其价格昂贵。普通声卡,具有16位的量化精度、数据采集频率是44kHz,完全可以满足特定应用范围内数据采集的需要。
2 虚拟仪器软件开发工具LabVIEW介绍
LabVIEW是一种基于G语言(Graphical programming language)的可视化(图形化)优秀开发平台,主要用于数据的采集、分析、处理和表达,总线接口、VXI仪器以及GPIB与串口仪器的驱动程序编制和驱动虚拟仪器。它与C、Pascal等传统编程语言有着诸多相似之处,如相似的数据类型、数据流控制结构、程序调试工具等。与传统编程语言最大的区别是LabVIEW使用图形语言(即各种图标、图形符号、连线等),以框图的形式编写程序。
一个LabVIEW程序包括三个主要部分:前面板、框图程序、图标/接线端口。前面板是交互式图形化用户界面,用于设置输入数值和观察输出量。框图程序是利用图形语言对前面板的控制量和指示量进行控制。图标/接线端口用于把LabVIEW程序定义成一个子程序,以便在其它程序中加以调用[1]。
3 虚拟示波器的设计与实现
本虚拟数字示波器主要由普通的声卡和相应的软件组成。其操作与显示主面板如图1所示。
图1 虚拟示波器前面板图
3.1数据采集的实现
在一块声卡上有晶振、AD/DA转换芯片和数字信号处理芯片及其他辅助电路。因此,它可以作为数据采集卡使用,不过被采信号的频率被限制在音频范围之内。设定了采样频率、采样位数、缓冲区大小之后,再利用声卡的DMA方式进行数据采集工作[2]。本文在LabVIEW环境下,借助硬件驱动程序对声卡的采样频率、采样位数、缓冲区大小等分别进行控制,根据用户的需要调整波形显示,进行波形分析,从而构成功能强大的虚拟存储示波器。
本虚拟示波器所能测量的信号全部为弱电,大约为1 VAC以下的信号(一般由声卡的性能决定),如果需要测量更大的信号,需要将信号衰减到量程以内。
3.2 软件设计
虚拟示波器主要由软件控制完成参数的设置,信号的采集、处理和显示。系统软件总体上包括音频参数的设置,音频信号的采集、波形显示、频谱分析及波形存储和回放等五大模块,功能结构框图如图2所示。
3.2.1 音频格式设置模块
由于本软件设置了一块声卡,所以只能实现单踪数字示波器。本模块主要完成对声卡采样频率、采样位数、缓冲区大小等参数的设置。其中:
·采样频率(Hz):8000、11025、22050、44100
·采样位数:8位、16位
3.2.2 数据采集模块
LabVIEW环境下的功能模板中提供了声卡的相关VIs,如SI Config、SI Start、SI Read、SI Stop等。当设定好声卡的音频格式并启动了声卡后,声卡就可以实现数据采集,采集到的数据通过DMA传送到内存中指定的缓冲区,当缓冲区满后,再通过查询或中断机制通知CPU执行显示程序显示缓冲区数据的波形。数据采集的部分G代码如图3所示。
图3 数据采集的部分G代码
3.2.3 波形显示和频谱分析模块
通过幅值和基准时间两个旋钮分别实现波形横纵坐标的变化范围。频谱分析测量音频信号的最大、最小幅值和频率。采用快速FFT算法,完成频域信号分析,显示自功率谱波形。