基于C语言开发环境实现虚拟示波器测试系统的设计

2019-12-03来源: elecfans关键字:C语言  开发环境  虚拟示波器  测试系统

引 言

随着虚拟仪器技术的发展,采用“虚拟仪器”来取代传统仪器的新的测控方法正在取代传统的测控系统,即利用数据采集卡、信号调理卡或其他计算机外围硬件进行信号的采集与检测,然后由计算机来实现对信号的处理、计算和分析以及测试结果的显示。


Labwindows/CⅥ是基于标准C语言的集成软件开发环境,其开发虚拟仪器的步骤主要是先确定程序的基本框架,创建用户界面,然后完成程序代码的编写,最后创建工程文件,将程序文件、头文件、用户界面文件加入工程中,编译调试生成可执行文件。


1 数据采集卡的设计

传统的数据采集卡包括多路开关、放大器、采样/保持器、A/D转换器、D/A转换器等器件组成。PCI(peripheral component interconnect)总线即外部部件互连总线,是一种高性能32/64位地址数据复用高速外围设备接口局部总线。随着微处理机的性能不断提高,人们对微机系统的I/O带宽不断提出新的要求,原有的标准总线,如ISA、EISA和Mc已经逐渐不能胜任现代数据采集技术的要求。PCI局部总线的引入,打破了数据传输的瓶颈,以其优异的性能和适应性,成为微机总线的主流,基于PCI总线的数据采集系统是高速数据采集系统的发展方向。基于PCI总线的数据采集卡的整体结构可以设计如图1所示:

基于C语言开发环境实现虚拟示波器测试系统的设计

完成数据采集卡的硬件设计后,需要进行板卡的驱动程序编写。其中的WDM(Window Driver Model)是Microsof讼司力推的驱动模型,其提供了更多特性,包括即插即用、电源管理、WMI等,且WDM还是一个跨平台的驱动程序模型,可以在不修改代码的情况下重新编译就可以在不同平台上运行了。


2 虚拟示波器软件设计

虚拟示波器测试系统是通过外围硬件电路获得离散数据并对该信号进行时域的显示和分析。从而获得近似真实仪器的测试结果。本设计利用数据采集卡获得模拟信号,其软件结构如图2所示:

基于C语言开发环境实现虚拟示波器测试系统的设计

1)信号采集模块

由于本设计采用非NI数据采集卡,不能直接运用LabWindows/CVI的函数库来实现。但是板卡设计的驱动程序一般是以动态链接库的形式提供的,所以对于LabWindows/CVI而言,可以直接利用驱动程序中的动态链接库来实验数据文件的采样。我们把采集到的数据存储在一个一维数组中以便进行分析运算。


2)波形显示模块

设计采用LabWindows/CVI提供的Graph来显示波形,对于采集到的数据,存放在一个大小可调节的动态数组中,对该数据进行时域分析并画图显示。波形显示模块还包括AB通道波形的叠加,相减等基本运算。其实现方法就是利用C语言对数据元素的简单加减。


3)时域分析模块

时域分析包括A、B通道的自相关,AB通道信号互相关分析,AB通道的卷积,AB通道的李沙育图。相关运算设计利用LabWindows/CVI函数库中的Convolve()函数来完成。卷积是通过Correlate()函数来完成。图2左侧是AB通道的信号,其中脉冲信号可表示为:

基于C语言开发环境实现虚拟示波器测试系统的设计

正弦信号可以表示为:x(n)=sin(k),0≤k≤1024,k∈Z图3右侧表示x(n)卷积u(k)的结果。其中横坐标表示采样点数共1024个点,纵坐标表示幅值。幅值增益1V/d.

基于C语言开发环境实现虚拟示波器测试系统的设计

4)信号调节模块

信号调节模块主要设计完成信号的垂直增益,垂直位移,水平增益的调节。设计的具体实现也是通过C语言对数组的操作实现。图4表示信号调节模块程序流程图。

基于C语言开发环境实现虚拟示波器测试系统的设计

5)存储模块

真实示波器由于存储硬件的限制,只能存储2~4个数据,而在在虚拟的数字存储示波器中,利用硬盘等存储介质,可以任意存取无限多个数据,而且存储更加安全。具体实现方法是:存储对被测信号取样,然后转换成数组,再将数组保存到文件中,读取时恰好相反,其工作流程如图5所示。

基于C语言开发环境实现虚拟示波器测试系统的设计

3 测试结果及仿真分析

按照LabWindows/CVI的设计流程,我们完成虚拟示波器的设计,并对正弦信号进行采样分析,结果如图6所示:

基于C语言开发环境实现虚拟示波器测试系统的设计

虚拟仪器的主要问题就是仪器的仿真,而仿真包括两个方面的内容,一个是仪器功能的仿真,另一个就是仪器外观及面板的仿真。本设计着重于仪器功能的仿真。


1)数据处理功能及波形存储功能的仿真

通过虚拟仪器软件功能设计,我们完成信号的显示、相关运算、卷积运算、文件的存储与读取,基本实现了示波器的功能。达到仿真的目标。

2)频带宽度仿真

一般来说,用计算机直接生成的虚拟示波器的带宽实际上就是计算机的带宽,其所能测量的频率的上限取决于计算机的性能。而实际上示波器受到种种因素的限制,其带宽远远低于计算机的带宽。限制示波器带宽的因素主要有:


①示波器上限工作频率的限制。

②Y通道放大器带宽的限制。

③时基电路扫描速度的限制。


为了达到仿真的效果,为虚拟示波器设计了一个100MHz,-3dB的低通数字滤波器。使用契必雪夫等IIR滤波器虽然能够较好的保持被测信号的幅频特性,但其相频特性很不理想。因此,采用矩形窗设计了一个FIR滤波器,保证了经过滤波器的信号能够线性的逼近被测信号的相位。矩形窗的频谱特性如下式(见图7)所示。

基于C语言开发环境实现虚拟示波器测试系统的设计

基于C语言开发环境实现虚拟示波器测试系统的设计

如图7所示


4 结束语

虚拟仪器的出现对于测试测量行业是一个转折点,它意味着我们可以根据自己的需要随时随地的通过对虚拟仪器软件模块的更改而改变仪器的性能。但是,想要完成一个高性能的虚拟测试系统的开发仍然很困难。不同的接口总线之间的不可交换性,使得我们必须得为每一种接口总线开发不同的硬件驱动程序,从而降低了虚拟仪器的通用性。高性能虚拟仪器接口电路的复杂与数据高速测量需求之间的矛盾也是制约其广泛应用的原因。然而,虚拟仪器技术作为新兴的仪器仪表技术,它的发展也不过短短的数十年,相信随着计算机技术,虚拟仪器技术的不断发展与完善,其必将取代传统仪器而成为仪器仪表行业的主力军。

关键字:C语言  开发环境  虚拟示波器  测试系统 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/Test_and_measurement/ic481778.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:利用FPGA芯片进行逻辑芯片功能测试系统的设计与验证
下一篇:使用RIGOL程控数字示波器对电源纹波进行有效测量

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

pic单片机io口控制教程之c语言编程实现
而是C语言来按下和松开这些按键。TRISA寄存器是方向控制寄存器。就是控制I/O输入还是输出。比如 TRISA寄存器中的TRISA5位 设置成为0 RA5口是输出 设置成为1 RA5口为是输入。 4、C语言的具体实现:将RA5口设置成输入的几种方式第一种 TRISAbits.TRISA5=1; //简单明了,只影响一个位 设置单个I/O比较方便第二种 TRISA |= 0x20;//不够明了,只影响一个位第三种 TRISA =0x20;//不够明了,影响到其他位,设置多个I/O用比较方便将RA5口设置成输出的几种方式第一种 TRISAbits.TRISA5=0;第二种 TRISA &= ~0x20;第三种
发表于 2019-12-14
pic单片机io口控制教程之c语言编程实现
使用C语言进行单片机电子时钟课程设计
介绍:(1)P0口的第一功能是作为一般I/O口使用,第二功能是在CPU访问外部存储器时,分时提供低8位地址和8位双向数据。(2)P1口是8位准双向I/O口,51子系列中P1只能用作一般I/O口,52子系列中P1.0和P1.1引脚还具有第二功能。(3)P2口是8位准双向I/O口,第二功能是在CPU访问外部存储器时,作为高8位地址总线,输出高8位地址。(4)P3口是8位准双向I/O口,其第一功能是用作一般I/O口,第二功能是作为中断信号和外部数据存储器的读写控制信号。(5)RES,复位信号高电平有效。2.Keil的简单介绍Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。Keil提供了包括
发表于 2019-12-06
使用C语言进行单片机电子时钟课程设计
C语言编程程序的内存如何布局
  重点关注以下内容:  C语言程序在内存中各个段的组成  C语言程序连接过程中的特性和常见错误  C语言程序的运行方式  一:C语言程序的存储区域  由C语言代码(文本文件)形成可执行程序(二进制文件),需要经过编译-汇编-连接三个阶段。编译过程把C语言文本文件生成汇编程序,汇编过程把汇编程序形成二进制机器代码,连接过程则将各个源文件生成的二进制机器代码文件组合成一个文件。  C语言编写的程序经过编译-连接后,将形成一个统一文件,它由几个部分组成。在程序运行时又会产生其他几个部分,各个部分代表了不同的存储区域:  1.代码段(Code或Text)  代码段由程序中执行的机器代码组成。在C语言中,程序语句进行编译后,形成机器代码
发表于 2019-12-02
PIC单片机C语言简记
到的所有可执行文件,其中有汇编编译器“PICC Assembler ”、C 原程序编译器“PICC Compiler”和连接定位程序“PICC Linker”。同时在此列表中还显示了对应的可执行程序名,请注意在这里都是“PICC.EXE”。用鼠标分别点击选中这三项可执行文件,观察对话框下面“Location ”一栏中显示的文件路径,用“Browse…”按纽,从计算机中已经安装的 PICC编译器文件夹中选择PICC.EXE 文件。     实际上PICC.EXE 只是一个调度管理程序,它会按照所输入的文件扩展名自动调用对应的编译器和连接器,用户要注意的是C 语言原程序扩展名用“.c ”,汇编原程序
发表于 2019-11-26
PIC单片机4X4矩阵键盘检测原理及实现C语言程序
;  0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};   uchar key_num;   void delay(uint x);   void init();   void scan();   void didi(uchar num);   void disp();   void main()   {       init();      
发表于 2019-11-25
打造最强Eclipse-嵌入式开发环境(AVR)
,所以当前MinGW是最好的选择,当然你也可以选择CodeBlocks、C-free等等以上安装都比较简单,在网上检索相关博客即可,需要注意的是要添加必要的系统环境变量。为此我使用批处理脚本做了一个插件,敬请期待我的其他博文。推荐其他相关博文:搭建Eclipse IDE AVR开发平台搭建AVR-C语言开发环境eclipse+winavreclipse 环境搭建_百度经验我将其分别安装在D:CODEMinGW   D:CODEeclipse-Luna目录下,这样便于管理我的Eclipse必备插件列表: AVR-Eclipse       辅助配置AVR项目  
发表于 2019-12-10
小广播
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved