基于虚拟仪器技术实现中频数据采集与处理卡软件的设计

发布者:数字梦行最新更新时间:2023-06-08 来源: elecfans关键字:虚拟仪器技术  中频  数据采集 手机看文章 扫描二维码
随时随地手机看文章

作为专业测控领域的软件开发平台,LABVIEW内含丰富的数据采集、数据信号分析以及功能强大的DAQ助手,搭建数据采集系统更为轻松,便于硬件设计人员直接对硬件的操控展开设计。此外,它可通过DLL、CIN节点、ActiveX、.NET或MATLAB脚本节点等技术,实现与其它编程语言混合编程,通过调用外部驱动代码使它与设备的连接变得非常容易。由于采用数据流模型,LABVIEW可以自动规划多线程任务,可充分利用PC系统处理器的处理能力,从而提高模块的采集效率。本文基于LABVIEW开发环境,以库函数节点的调用方式及结构,实现了一种中频数据采集与处理卡软件的设计。


数据采集卡软件结构

采集卡软件是基于PC的数据采集系统重要组成部分,它与硬件形成一个完整的数据采集、分析和显示系统,软件分为上层应用程序和驱动程序。上层应用程序用以完成数据的分析、存储和显示等。驱动程序则可直接对数据采集硬件的寄存器编程,管理数据采集硬件的操作并把它和处理器中断、DMA和内存这些计算机资源结合在一起。


驱动程序隐藏了复杂的硬件底层编程细节,为用户提供容易理解的接口。NI公司为基于NI数据采集设备的数据采集系统提供了相应的接口驱动及VI函数 (VI,Virtual Instrument)。对于一些不常见的硬件设备或用户研发的硬件设备,NI没有提供合适的驱动。但是,如前所述,LABVIEW还提供了很多其它的通信接口,包括调用库函数节点(Call Library Function Node, CLF)、代码接口节点(Code Interface Node, CIN)、TCP/IP、Data Socket、OPC、共享变量、DDE和.NET等。通过这些通信接口,LABVIEW能够实现与任何设备的通信。值得留意的是LABVIEW具有调用库函数节点和代码接口节点两种方法,可以结合C语言的编程灵活性和LABVIEW G语言的直观便捷特点,大幅提高LABVIEW对用户数据采集卡的软件设计支持。可进一步利用LABVIEW丰富的数据分析资源,节约系统开发成本。


LABVIEW提供的数据采集卡的常用驱动方式有两种,调用C语言源代码方式(CIN方式),以及调用动态链接库方式(CLF方式)。


CIN方式是实现LABVIEW与C语言混合编程的一种媒介,CIN通过输入、输出端口实现两种语言之间的数据传递。输入、输出端口的个数可由设计者根据实际需要确定,当LABVIEW的程序运行到CIN节点时,数据由CIN的输入端口传递给C源代码图标,程序转去执行C源代码,代码执行完后,执行的数据结果由CIN输出端口返回至LABVIEW。


CLF是一种动态链接库(DLL)的调用方式。DLL是一种应用程序在运行时与库文件连接起来的技术,在WINDOWS的管理下,应用程序与对应DLL之间建立链接关系,根据链接产生的重定位信息,转去执行DLL中相应的代码。LABVIEW中,可通过CLF(调用路径为Function》》Advanced》》Call Library Function)功能模块实现调用。


调用CIN节点需要有C语言编程的支持,它能够将代码集成在VI中作为单独的一个VI发布,CIN 支持的参数类型比DLL 函数多,可使用LABVIEW 定义的任何参数类型,但制作CIN的过程复杂得多。使用这种方法的缺点是在数据采集过程中不能实时地进行数据的显示,只能在数据全部采集结束后再一起显示所采集的全部数据,这样在需要较高执行效率的场合就不适用。其次由于CIN节点在制作数据采集卡的驱动时,需要提供采集卡的硬件参数,需编制对硬件设备进行底层操作的库函数,对于不清楚函数内核的程序员不适用。相比CIN方式,CLF方式更加简单易学,开发者只需要熟悉DLL中的各个函数功能以及函数的参数及类型,在本文设计中,拟采用CLF方式实现驱动程序的调用。


基于CLF方式的采集卡软件设计

本文所涉及的软件控制对象是一款中频数据采集与处理卡,具有14位A/D精度,最高采样频率为105MHz,4路模拟量输入,提供高精度中频信号数字化、多通道、多模式数字下变频(DDC)等数字处理,软件结构详见图1。

图1 采集卡的软件结构

图2 VI的层级结构

LABVIEW应用程序分为用户界面和图标代码,通过搭建和调用子VI编写主体程序,各VI利用LABVIEW的CLF技术调用动态链接库中的驱动函数,实现与硬件设备的数据交换。子VI将基本的驱动函数进行功能封装。一个完整的LABVIEW应用程序通常由若干个子VI及其外部编程连线构成,VI的层级结构设计是设计虚拟仪器驱动程序的核心,各VI分别为组成驱动程序的模块化子程序。设计中,动态链接库由VC编写,调用底层的驱动函数与设备通信。软件包括两类子VI函数集合,一类是低层组件VI集合,分为若干个独立的软件功能模块,每个模块负责控制仪器的某项特殊功能,这类VI是仪器驱动程序的基础;另一类为高层应用VI集合,应用VI通过调用合适的组件VI以实现最通常的仪器设置和测量任务。显然,就驱动程序开发而言,能否根据硬件特性成功构建组件VI集合是关键所在。VI层次结构如图2所示。


如图所示,按功能有两个高层应用子VI集合:Config.vi,Config DDC.vi,这两个子VI又分别调用低层组件子VI来完成特定的设置、配置任务。Config.vi完成采集卡的常规配置,例如对采集卡单次采集数量、FIFO满深度、寄存器(硬件通道、时钟、触发、采集方式、采集模式等的控制)设置、采集卡的状态查询等;Config DDC.vi完成DDC的所有配置工作,包括对DDC的模式、抽取率、输出格式、本振频率、本振相位、增益、CFIR滤波参数、PFIR滤波参数等的设置,从而实现DDC的数字IQ分离、抽取、数字滤波、重采样、多级增益调节、多种调制方式的解调等功能。其余低层组件VI实现设备的打开关闭、数据从数据采集卡到主机内存的传送、数据保存等。无论应用子VI或组件子VI均为独立可执行程序,实现特定功能,各VI函数作为提供给用户进行系统应用开发所需的各类操作。采用该结构,能够使用户在运行时修改虚拟仪器系统的运行逻辑与人机界面,可立即执行,因此在用户需要改变需求的情况下能迅速适配,数据采集卡具有可重构的特点,用户也不必去关心硬件的实现细节。


DLL的调用

在LABVIEW 中调用DLL时,把编写好的DLL放在当前目录或特定目录下,然后根据应用程序的需要,确定参数个数和参数类型及调用规则,在LABVIEW中正确地配置DLL 。首先从函数模板Function 中调用CLF 节点,双击弹出设置对话框,如图2所示。对话框中,第一个参数Library Name Path 填入需要调用的动态链接库文件的名字和路径。第二个参数Function Name 是链接库中要调用的函数名称。第三个参数为线程调用方式,在DLL只被一个线程调用的情况下,两种调用方式都可选择,但在多线程调用情况下,需注意选择。Run in UI Thread 表示在用户接口线路中调用,DLL 的执行期将等到用户接口线程(即LABVIEW环境下的VI 应用程序) 执行DLL 的导出函数调用时才开始;Run in any Thread 表示允许多个线程同时调用这个DLL。在编制DLL 过程中,充分考虑了线程保护的同步机制,如使用临界区、互斥、信号量等,线程安全较为确定,那么可以选用Run in any Thread方式,这将有助于提高DLL调用的性能;反之,可选Run in UI Thread。第四个参数是对DLL的调用规则,可选择C或stdcall,在此选择stdcall。LABVIEW调用库函数设置界面如图3所示,其中Parameters项是对参数选项的设置,根据调用的函数,添加和设置相应的参数,参数名称、类型和数据类型,且要与被调用函数中的参数名相同。需要注意的是,当调用多个函数时要分别填写参数的个数和对应的类型,而且在调用过程中应保持数据位的一致。由于LABVIEW中的数据类型和不同编程语言对应的数据类型在形式上有些不一致,因此需要知道它们是如何对应的。如:LABVIEW中I16表示有符号16位整型,对应C语言中的short型。


设置后,LABVIEW将自动生成各参数的入口及出口状态,完成调用库函数节点的配置。对于外部的编程和连线,如Trigger.vi,如图4所示。

图3 LABVIEW调用库函数设置界面

图4 Trigger子VI程序框图

DLL调用中的参数类型匹配

在LABVIEW中调用动态链接库,难点在于参数类型匹配。最常用的三种数据类型是:数值类型、字符串、数值型数组。设计中,将采集数据传送到内存块过程涉及到带数组参数的函数调用,值得注意的是,LABVIEW 只支持 C 数据类型中的数值型数组,调用含有数组参数函数时,传递数组类型“Array Format”要选择“Array Data Pointer”。这个设置中还有其他两个选项(Array Handle,Array Handle Pointer),这种带有“Handle”的参数类型都是表示LABVIEW定义的特殊类型的,在第三方的DLL中不会使用到。按前述步骤设置好CLF节点,连接外部输入(采集数量size)和输出(存放采集数据的数组)后,输出没有反应,检查分析得知,数组参数作为输出值时,要为输出的数组数据开辟空间,将输入数据的指针复制给输出数组数据指针并传给驱动函数。在LABVIEW中开辟数据空间的方法有两种:

1.创建一个长度满足要求的数组,作为初始值传递给输入参数,输出数据就会被放置在输入数组所在的内存空间内。

2.直接在参数配置面板上进行设置。在 Minimum size 中写入一个固定的数值或选择函数的其它数据参数,LABVIEW 就会按此大小为输出数组开辟空间。

详细设置如表1所示。字符串的使用与数组非常类似,实际上在C语言中字符串就是一个I8数组。

表1 调用含有数组参数函数举例


图5 采集波形显示图

此外,布尔类型在DLL函数和LABVIEW VI之间传递没有专有的数据类型,需利用数值类型来传递。输入时先把布尔值转变为数值,传递给DLL函数;输出时把数值转为布尔值。对于所调用的DLL 库函数的参数类型,如果在配置框中找不到匹配的类型,可以在Type 框中选Adapt to Type,表示编程时指定的LABVIEW数据类型与DLL中参数类型进行自动匹配。LABVIEW也定义了一些特有的数据类型,例如复数类型、LV布尔类型。为了在动态链接库中能对这些类型的数据进行操作,在LABVIEW目录中的extcode.h文件对LABVIEW的各种数据类型进行了定义。在编写动态链接库时,通过引用该文件就可以在C代码中对LABVIEW的这些独有数据类型进行操作。


实验与结论

程序设计采用循环顺序执行结构,主要设置三个调用动态链接库节点。循环顺序执行结构中包括三帧,第一帧调用Config函数进行数据采集卡的初始化;第二帧循环调用datatrans函数采集数据至内存,并用波形图显示出来;第三帧调用deviceshut函数释放采集卡所占资源,程序结束。图5是设计完成的采集卡软件工作界面,图中显示了对系统采集参数、处理参数配置以及采集波形的显示等,波形显示了对正弦信号采集4096个有效数据点。

结果表明,数据卡的接口工作稳定,数据正确无误,达到了设计的目标。上述方法成功实现了LABVIEW与采集卡驱动程序的数据交换,进而利用LABVIEW丰富的函数库,能方便地实现采集卡的所有功能,搭建了以LABVIEW为应用程序的数字采集处理系统。很明显这种集成了VC++和LABVIEW图形化编程语言各自优势的采集处理系统不仅性价比高、通用性强、易于开发、数据处理简单,且可以大大缩短开发时间。采用CLF 技术,充分利用已有的动态链接程序库,可大大增强LABVIEW 和底层硬件的通信能力。


关键字:虚拟仪器技术  中频  数据采集 引用地址:基于虚拟仪器技术实现中频数据采集与处理卡软件的设计

上一篇:利用虚拟仪器技术实现高精度数据采集系统的应用设计
下一篇:采用虚拟仪器技术实现气体微流量测量系统的设计

推荐阅读最新更新时间:2024-11-16 21:47

多路跟踪滤波同步数据采集系统的研究
介绍了采用高速硬件锁相环技术,对多路相关联信号同时、同步整周期均匀采样和抗混叠跟踪滤波的实现方法。给出了基于此方法由TMS320LF2407和AD73360L构成的多路数据采集与处理系统。提出一种不同结构的同步串行口 接口 电路 的设计方法,给出了 电路 连接与软件流程。    关键词: 数据采集 跟踪滤波 同步采样 抗混叠   目前同步采样实现方法主要有两种,一种是使用多片采样保持器、多路 模拟 开关 和单片单通道逐次逼近型高速A/D转换器,再辅以同步信号产生电路,这样可同时采集多路信号送采样保持器保持,然后通过 模拟 开关 切换分别送入A/D转换器进行转换。该方法使用一片高速A/D转换器实现多路信号同时采样。但外置多片采样
[模拟电子]
虚拟仪器技术在石化科研装备开发中的应用
一、概述    虚拟仪器 (Virtual Instruments)可理解为利用现有的计算机、配以特殊设计的仪器硬件和专用软件,由用户根据自己的需求设计的既有普通仪器的基本功能,又与传统仪器有着本质区别的新型仪器系统。传统仪器一般由仪器生产厂家将信号的采集与控制、信号的分析处理、结果的输出这三大功能模块全部以硬件(或固化的软件)加以固定,用户只能独立操作,使用仪器单一的功能。而对于测试参数多,测试参数不断变化的面向应用的系统,则 虚拟仪器 系统可满足其多种多样的应用需求。 虚拟仪器 的核心技术是计算机技术,它把仪器的各个功能模块全部放在计算机中实现,在计算机中插上数据采集与控制接口卡,用软件在计算机屏幕上生成仪器面板,用软件来进
[测试测量]
<font color='red'>虚拟仪器</font><font color='red'>技术</font>在石化科研装备开发中的应用
可消除USB数据采集模块潜在危险的方法和案例分析
USB用于测试与测量应用的优势很多,但是在选择USB数据采集模块之前,仔细考虑目标应用。如果瞬时电压或地电位差存在,通过选择带隔离措施的USB数据采集模块可保护PC并保持信号数据的完整性。本文详细分析了使用USB数据采集模块的优势和潜在的危险,介绍了消除这种潜在危险的方法-隔离,并通过实际的应用案例了解隔离的不同作用。 由于USB的易用性,如今它已成为是计算机和电子工业增长最快的总线之一。对于测试和测量应用,USB数据采集模块具有几个显著的优势。但是要警惕,根据具体应用,它们可能也包含一些潜在的危险,甚至会导致灾难性的后果。      使用USB进行测试和测量的优势 USB由于具备下面几个优势,从而成为使用者开发测试和测
[嵌入式]
基于USB总线的虚拟仪器测量技术
  随着计算机总线技术的发展,计算机在测控领域发挥越来越重要的作用,计算机总线从最初的只有低速的ISA总线,发展到133M的PCI总线,一直到10G带宽的PCI-Epress总线,使应用于高速采集的"数据传输总线瓶颈"逐渐得到解决。 另一方面,以太网技术的发展,传输速率从10M发展到1G,使基于网络的分布式得到迅速发展,但以太网的采集模块无法实现PCI总线的中断和DMA响应功能,实现高速采集还需要采集模块具有CPU等。测量总线VXI/PXI/LXI技术虽然可以实现高速采集、同步触发与热插拔功能,但价格昂贵。 USB总线的出现,恰好解决这一问题。Intel公司开发的通用串行总线架构(USB)的目的最早是考虑基于计算机
[嵌入式]
基于C8051F020单片机的数据采集电路设计
数据采集是为了对温度、压力、流量、速度、位移、光强度、声音等物理量进行在线测量和控制,通过传感器把上述物理量转换成模拟物理量的电信号。然后将模拟电信号经过处理并转换成计算机能识别的数字量,送入计算机处理、存储、传输和显示。 在操纵杆控制器的工作过程中,需要对操纵杆X轴和Y轴输出的2路电压信号进行A/D转换,转换后的数据范围要求在-1 500~1 500,采样精度为12位。另外还需要对采集后的数据进行计算,并通过串口与两自由度光电稳定平台进行通信,实现对稳定平台的功能控制,通信周期为80 ms。出于成本的考虑,没有采用传统专用A/D芯片+单片机的设计模式,只用了一片C8051F020单片机实现了上述功能。 1 芯片简介 C
[单片机]
基于C8051F020单片机的<font color='red'>数据采集</font>电路设计
一种低噪声便携式的心电监测仪设计
0 引 言 监护仪是一种用以测量和监控病人生理参数,并可与已知设定值进行比较,如果出现超差可发出报警的装置或系统。便携式监护仪小型方便,结构简单,性能稳定,可以随身携带,可由电池供电,一般用于非监护室及外出抢救病人的监护。心血管疾病是人类生命的最主要威胁之一,而心电(Electrocardiogram,ECG信号是诊断心血管疾病的主要依据,因此实时监测病人心电活动,设计自动采集病人心电信号的便携式系统具有重要意义。 传统的导联系统采用通用的三电极方式,右胸上电极及左腹下电极为心电采样电极,右腹下电极为右腿驱动电极。这种联接方式有效实用,有利于便携使用。便携式监护仪分析处理系统可以分为两大部分,一是携带在被检查者身上的袖珍监护
[测试测量]
一种低噪声便携式的心电监测仪设计
基于USB接口的心电信号数据采集系统
摘要:介绍了基于USB接口的心电信号数据采集系统,给出了该系统的硬件组成原理及软件设计方法。由于该系统使用了高性能的USB专用芯片CY7C64613,因而具有使用方便、即插即用等特点。与笔记本电脑相连即可构成移动式心电信号检测分析仪器,具有较高的实用推广价值。 关键词:USB;心电;数据采集 1 引言 心电信号是最广泛的临床检查项目之一。心电信号数据采集系统是心电信号检查的关键部件,它能在较强的噪声背景下,通过电极将0.05~100Hz的微弱心电信号检测出来,然后经放大、A/D转换后送入计算机进行处理。计算机的使用使得该系统在信号分析、储存、打印等方面比传统的心电图机具有明显的优势。但采集系统与计算机的通讯接口都存在插卡插
[应用]
Web网络传感器的远程数据采集系统设计
  引言   随着网络技术和嵌入式技术的发展,将嵌入式系统与Internet相结合对系统进行数据、图像监控和管理,成为重要研究方向之一。嵌入式Web网络传感器技术是传感器、嵌入式、分布式信息处理和Internet等相关技术交叉结合的技术,它是在智能传感器的基础上把TCP/IP协议作为一种嵌入式应用,嵌入现成智能服务器的ROM中,利用传感器内建的Web服务器,用户可以通过浏览器采集远程监控对象的信息。   1 Web网络传感器数据采集系统工作原理   用户通过浏览器访问Web服务器上的数据,将远程采集到的数据实时显示到Internet网页上。用户需要实时看到数据的变化,而HTML网页通常只能是静态的数据,为此在Web服务
[电源管理]
Web网络传感器的远程<font color='red'>数据采集</font>系统设计
小广播
最新测试测量文章
换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved