历史上的今天
返回首页

历史上的今天

今天是:2024年12月03日(星期二)

正在发生

2019年12月03日 | 基于C语言开发环境实现虚拟示波器测试系统的设计

2019-12-03 来源:elecfans

引 言

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


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 结束语

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

推荐阅读

史海拾趣

DPA Components International公司的发展小趣事

DPA Components International公司自成立以来,一直将技术创新作为公司发展的核心动力。在电子行业的早期阶段,该公司就投入大量资源研发新型电子元件,这些元件以其高精度和稳定性迅速在市场上获得了认可。随着技术的不断进步,DPA不断推出具有创新性的产品,如智能传感器和高效能集成电路,这些产品不仅满足了客户对性能的需求,也推动了整个电子行业的发展。通过不断的技术创新,DPA Components International公司在市场上建立了良好的口碑,成为行业内的领军企业。

Echelon公司的发展小趣事

进入21世纪后,Echelon在智能楼宇领域取得了重大突破。公司凭借其先进的LonWorks技术和能源管理服务方案,成功为多个大型楼宇提供了智能化的能源管理解决方案。这些解决方案不仅提高了楼宇的能源利用效率,还降低了运行成本,赢得了客户的广泛赞誉。Echelon在智能楼宇领域的成功,进一步巩固了其在能源管理市场的领先地位。

Advanced Illumination Inc公司的发展小趣事

Advanced Illumination Inc公司成立于XXXX年,初创时期,公司便专注于LED照明光源的研发与生产。面对当时市场上众多的竞争对手,Ai公司凭借其对技术的深刻理解和对市场需求的敏锐洞察,选择了一条专注于机器视觉工业应用的道路。这一决策为公司后续的发展奠定了坚实的基础。

DuPont公司的发展小趣事

随着半导体技术的兴起,DuPont公司敏锐地捕捉到了这一领域的发展潜力。公司投入大量资源,致力于半导体材料的研发和生产。通过不断的技术创新,DuPont成功开发出了一系列高性能的半导体材料,如高纯度硅材料、光刻胶等。这些材料在半导体制造过程中发挥着至关重要的作用,极大地推动了半导体技术的进步和产业的发展。

E-Z-HOOK公司的发展小趣事

自E-Z-HOOK公司成立以来,其产品线一直在不断扩大。到了1970年代,随着电子行业的快速发展,对测试工具的需求也日益增加。公司的新主人继承了阿尔伯特·史密斯的愿景,并决定进一步扩展产品线。他们引入了一系列新的测试钩型号,以适应不同尺寸和形状的测试点。此外,公司还开始生产其他与测试相关的零部件和组件,以满足客户日益增长的需求。

Easy Braid公司的发展小趣事

Easy Braid的发展离不开一支强大的研发团队。公司注重人才的引进和培养,为研发团队提供了良好的工作环境和充足的研发资金。在研发团队的努力下,Easy Braid不断推出具有创新性和实用性的新产品,满足了市场的多样化需求。同时,研发团队还积极参与行业标准的制定和推广工作,为整个电子行业的发展做出了贡献。

问答坊 | AI 解惑

经典过热保护电路

经典过热保护电路…

查看全部问答>

wince 5.0系统启动

   我用的是ARM 的板子,cpu是pxa270的,自己做的内核,烧写完内核后,在CRT上只是显示白光,不能进入CE系统。通过串口可以看出系统可以启动,不知道为什么不能进入系统?麻烦大家帮忙分析下原因!…

查看全部问答>

请教:nboot中C代码的执行问题

  不知道什么原因,nboot的用C语言写的代码一直不能运行完整。汇编全部执行完毕了,但是一跳到C函数main,问题就来了,不能运行函数,根据我点的灯的情况来看,似乎是卡在函数里面了,就是说跳到函数里面就出不来了,如果将那些初始化代 ...…

查看全部问答>

ARM开发板无法停留在bios状态

我用的是优龙ST2410的板子,串口连接,开发板无法停留在bootloader状态,键盘输入没反应,不能选择数字01234567直接进入linux,昨天还可以选择。 linux启动后也进不了命令行,键盘“ENTER”键没反应 Power on reset Env.Os_Auto_Flag=1 ...…

查看全部问答>

太阳能相机挂带,随时随地给你的相机充电

我们外出拍照的时候是不是经常遇到相机没电的时候呢?有了这款太阳能充电挂带就方便多了,只要有亮光,我们就可以随时随地给相机充电,当然在太阳下面效果更好。它的原理就是在相机挂带上面装上太阳能电池薄膜,采用涓流式充电给相机电池充电。…

查看全部问答>

嵌入式系统含义及应用

摘要: 对目前国内流行的嵌入式系统定义提出质疑,认为嵌入式系统不是“专用计算机系统”,嵌入式系统不只“以计算机技术为基础”。从嵌入式系统的发展起源、体系结构、功能特点、知识技术体系等方面进行了分析论证,从而进一步完善了嵌入式系统的定 ...…

查看全部问答>

MSP430F149flash程序问题

我的目的是想练习使用一下flash的掉电不丢失功能,通过八位led灯指示数据t,按下按键s1时t的值会变化,然后将变化后的值存入flash中,下次上电后通过按下按键s2时读出上次存的值让led灯显示出来,程序如下有些问题,可能是我c语言指针部分学的不太 ...…

查看全部问答>

任意波形数据表生成器

replyreload += \',\' + 1164471;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

铁电到了

我是第二批,也收到铁电板了,速度够快,谢谢…

查看全部问答>

模拟信号隔离的光耦性能大比拼

快速光耦6N137,PWM与VF变换的光电隔离,线性光耦TIL300,线性光耦LOC210,电容耦合ISO124等光耦性能大比拼。…

查看全部问答>