1 、引言
虚拟仪器(vi-viituaiinstrument)是指通过应用程序将通用计算机与功能化硬件结合起来,用户可通过友好的图形界面操作计算机,就像在操作自己定义、自己设计的单个仪器一样,从而完成对被测量的采集、处理、分析、判断、显示、数据存储等。在这种仪器系统中,各种复杂测试功能、数据分析和结果显示都完全由计算机软件完成,在很多方面较传统仪器有无法比拟的优点,如使用灵活方便、测试功能丰富、价格低廉、一机多用等,这些使得虚拟仪器成为未来电子测量仪器发展的主要方向之一。
当今虚拟仪器系统开发采用的总线包括传统的rs232串行总线、gpib通用接口总线、vxi总线、pci总线和ieee 1394总线即firewire(也叫做火线)。
本文介绍基于pci总线接口的compus,cope82g型高速数据采集卡和visual c++编程工具的快速虚拟示波器试验系统,该系统集波形采集、数据分析、输出、显示为一体。为了保证数据采集和波形显示的实时性,设计中还采用了多线程技术。
2、 系统组成和采集卡的硬件结构
2.1 系统组成
虚拟示波器系统主要由数据采集卡、计算机和专用软件组成,其中,数据采集卡完成对输入测量信号的调理采集和缓存,并通过计算机pci总线送入内存;计算机在应用程序控制下对数据进行处理、运算,最后完成各种电量测试并在屏幕上用图形或数据形式显示。这一切均在人机交互方式下完成。
2.2 数据采集卡的硬件结构
本虚拟示波器采用gage公司的compuscope82g型高速数据采集卡作为pci接口。采集卡的硬件结构如图1所示。
该数据采集卡主要由前置滤波器、可程控衰减器、可程控模拟放大电路、a/d转换器、d/a转换器、计数,定时电路、振荡电路、时序控制电路及pci接口电路组成,其功能电路由数字控制逻辑电路统一控制。该卡是具有2个模拟量输入通道的标准的pci总线插卡,卡上集成的2个高速8位adc的工作频率高达ighz,在单通道工作模式下,2个adc同时工作,分别在脉冲的上升沿和下降沿进行转换,所以最高采样频率可以达到2ghz。卡上配置有16m的高速存储器,解决了高采样率和相对较低pci总线数据传输速率的匹配问题。在使用之前必须对采集卡的硬件进行配置,这些控制程序用到相应的底层daq驱动程序。通过采集卡自带的dll可以在程序中灵活地对硬件进行控制,比如输入阻抗、输入电压范围、放大器增益、采样频率、每次采样点数等。
3 、系统的软件设计
3.1 虚拟示波器的软件开发环境
虚拟仪器最核心的技术是软件技术。目前,用于虚拟仪器开发的软件开发平台主要有二大类:一类是通用的可视化软件编程环境,主要有microsoft公司的visual c++和visual basic、inprise公司的delphi和c++builder等;另一类是一些公司推出的专用于虚拟仪器开发软件的编程环境,主要有ni公司的图形化编程环境labview及文本编程环境iabwindows/cvi、agilent公司的图形化编程环境agilent vee。考虑到软件的灵活性、高效性和可移植性,本设计中采用visual c++作为虚拟示波器的开发环境。
3.2 软件功能模块
该虚拟示波器有5大功能模块:信号采集、用户界面、频谱分析、数字滤波、波形显示。
3.2.1信号采集模块
信号采集模块主要完成数据的采集,根据采集信号的不同选用不同的采样频率。该模块中的应用程序通过采集卡的驱动程序和硬件进行通信,如果把该模块放在程序主线程中实现,那么,当应用程序与驱动程序进行数据通信时主界面就会冻结。为了解决这个问题,本文直接创建一种子线程来单独完成与驱动程序的通信任务,让主界面专用于响应视窗界面的信息。在子线程中通过调用gage_start_capture()函数进行数据的采集。图2示出数据采集流程。数据采集的主要代码如下:
3.2.2用户界面模块
界面主要切分为3个视图:主视图基类为scrollview,用于显示波形;2个视图基类为for-mview,1个用于动态显示采集数据的特征参数,另1个用于对示波器进行操作。整个软件的主界面设计如图3所示。
3.2.3频谱分析模块
本软件利用快速傅里叶变换(fft)进行频谱分析。频谱分析采用按时间抽取fft算法,然后将幅值频谱分析结果在用户界面上以坐标曲线形式显示。进行fft时可以选择点数,有1024、2048、4096 3种选择,如果点数不够,程序自动补零。
3.2.4数宇滤波模块
本软件可以对所采集的信号进行低通和高通滤波。首先根据给定通带截止频率、阻带截止频率、通带衰减和阻带衰减设计出巴特沃思(butter-worth)模拟滤波器,再用双线性变换法设计出数字滤波器。
3.2.5波形显示模块
虚拟示波器的工作原理是对信号波形进行高速采样,采样值被数字化后存储起来,当重建波形时便从缓冲区取数,然后用清晰、均匀一致的轨迹映像在屏幕上。由于采集的模拟波形经数字化后成为一串离散数据,因此,如何重建信号波形是虚拟示波器设计中的关键问题之一。当前的波形显示主要有分段显示和滚动显示。这里采用滚动显示,并且提出一种新的滚动显示算法,突破了滚动显示只能观察变化缓慢的信号的限制。算法核心思想如下:
(1)得到所采集数据块的第1个和最后1个数据点的横坐标m_xmin和rn_xmax,m_xmax-m_xmin为波形的逻辑宽度。
(2)m_xmax-m_xmin的值为逻辑坐标,把它转化为设备坐标cx,用cx设定整个滚
动视图的宽度。
(3)为了提高画图的效率,只需画出滚动视图可视部分的图形,也就是剪裁区的图形,因此要得到剪裁区。
(4)画出坐标及剪裁区内的一段波形。
(5)利用csplitterwnd::doserollby()函数,根据采样间隔的大小决定断滚动视图速度的快慢。这样视图滚动以后相应的剪裁区也会发生改变,促使动态画出新的波形。
主要代码如下:
4、 实验与讨论
在实验中使用该系统对正弦信号和锯齿波信号进行了采集,并对2个通道的信号分别进行了频谱分析。实验时示波器参数设置如下:采样模式为双通道,其中通道1对正弦信号进行采样,通道2对锯齿波信号进行采样;采样率为120ms/s;采样深度为16 000点;触发源为软件触发;触发时间极限为20ms;输入信号电压范围为~5v。实验结果如图4所示。达到了预定的效果。
本文基于gage公司的compuscope 82g型高速数据采集卡,用visual c++编程工具设计出一种快速虚拟示波器试验系统,实现了高速数据的采集和动态波形的显示。同时提出一种新的波形滚动算法,大大改观了滚动波形的动态显示效果。在此基础上实现了传统示波器无法实现的频谱分析和数字滤波功能。采用visual c++作为仪器编程语言使得编写的程序通用性和可移植性强。
等离子彩电三星V3屏维修资料
供应链金融与区块链金融是一种怎样的关系
英特尔研究院与联想研究院签署研究院合作框架协议
贝加莱柔性制造业将引领智能制造新时代
医疗健康平台Brook.ai:获400万美元种子轮融资,助力糖尿病患者病情管理
基于数据采集卡和Visual C++编程工具实现虚拟示波器系统的设计
土壤含水量快速测定仪的用途以及使用方法的介绍
精密加工件外观缺陷检测系统的简单介绍
收发器是干什么用的_收发器单纤和双纤的区别
5G不仅仅是“快”,它离我们还有多远
华宇电子亮相2022世界集成电路大会
华为mate9和p9的区别,16nm工艺处理器给力升级但mate9曲屏版或跳票
C语言零基础项目:生命游戏!详细思路+源码分享
基于PLC的机器人伺服运动控制系统设计详解
用MDaemon搭建邮件服务器-设置篇
松下进一步增强加码动力电池业务的决心
谷歌发布第三季度财报,总营收461.73亿美元
华为 P20在上海发布 还有全球首款全面屏笔记本
怎么应对刘海屏机型的海报设计
相控阵雷达性能的基石:宽禁带半导体