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

发布者:数字梦行最新更新时间: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-04 03:25

基于虚拟仪器技术的温度、湿度无线检测系统的研究
  环境试验设备和高温高压灭菌装置是保证产品质量以及人民健康免受病菌侵害不可或缺的试验设备,温度、湿度的控制在环境试验设备中起着相当重要的作用。随着各行业温湿度检测需求的增加,要求相应的检测、验证手段必须不断提高和完善。一些传统的计量检测仪器和方法无法满足某些特殊环境下的测量要求。为了确保环境试验设备温度、湿度检测的可靠性,必须采用特定的技术对该类环境试验设备温度、湿度测量的准确性进行检验和验证。   该检测系统基于 NI 公司推出的 Labview 虚拟仪器 图形化语言环境,选择含有已校准数字信号输出的温度、湿度复合传感器SHT11单芯片制作传感探头,采用CC1100射频收发芯片制作无线发射接收通信模块,不需要连线便可直接探测
[测试测量]
基于<font color='red'>虚拟仪器</font><font color='red'>技术</font>的温度、湿度无线检测系统的研究
实时视频数据采集的FPGA实现
视频监控系统利用现存的企业计算机网络平台,将监控范围内所需的视频、音频等数据以数字形式通过网络进行传输、存储和共享,使安全监控部门及时获得关于监控现场实时、准确、具体、直观的数据,为安全生产提供一种新的技术手段。FPGA以其高性能、高可靠性以及现场修改、现场验证、现场实现的数字系统单片化的应用优势而日益成为视频信号处理领域的热门技术。特别是其高速并行处理能力,使其在处理速度、成本、可靠性、开发周期和扩展能力等方面具有明显的优势。   本文设计一种用于工矿监控系统的实时视频数据采集系统,系统中由CCD摄像头采集到模拟视频信号,通过视频解码芯片转换为PAL制式的数字视频信号,采用FPGA对其进行格式转换,在现场使用VGA显示器进行视
[嵌入式]
实时视频<font color='red'>数据采集</font>的FPGA实现
中频电源的零压启动装置结构及工作原理
中频电源的启动性能是最重要的性能指标,它的好坏直接影响设备的品质和使用性能。因此,启动问题一直是业内研究的重点和难点,人们采用各种方法改善启动性能,如:充电启动法、并联启动法、他激转自激法、预充磁启动法等,这些方法在一定程度上改善了启动性能,但这些传统的启动方式还是存在线路复杂、成本较高、故障率高等缺点。为降低设备成本、优化和简化设备结构,在工程实践中摸索出了一种全新的启动方式——零压启动。本文对其结构原理加以阐述。 1 零压启动装置的结构和工作原理 1.1 零压启动装置的结构 零压启动是一种全新的启动方式,它没有额外增加任何辅助装置,线路简洁,成本低,经长期生产实践检验,其启动性能非常优越。 图1为逆变主电路的原理图,L
[电源管理]
<font color='red'>中频</font>电源的零压启动装置结构及工作原理
基于AT89S52控制的光谱数据采集系统的设计
概述 在光谱测量中,常用光电倍增管(PMT)和电荷耦合器件(CCD)作为光电转换器。在慢变化、高精度光谱测量中使用PMT;对于闪光灯、荧光和磷光等强度随时间变化时的光谱信号则采用CCD。PMT和CCD输出的信号形式是不同的:光电倍增管输出的是连续的模拟信号;CCD输出的是视频脉冲信号。由于输出信号的不同,相应的信号采集电路也不尽相同。本文所述的系统通过设定控制开关的不同状态,由单片机检测、判断和执行相应的操作,完成对不同形式输入信号的采集。采集到的光谱强度通过并口送入计算机进行处理、计算,并显示和打印出光谱曲线。 由于CCD像元几何尺寸小、精度高,有光积分时间和信号存储功能,因此,可以用来进行光谱测量。被测光源发出的光线
[单片机]
基于AT89S52控制的光谱<font color='red'>数据采集</font>系统的设计
苹果地图数据采集车本月将驶入美国13个州
    摘要: 苹果地图数据、街景采集车将在7月15日至31日之间在美国13个州进行数据采集,包括科罗拉多州,爱达荷州,印第安纳州,肯塔基州,马里兰州,明尼苏达,密西西比,新墨西哥,俄亥俄,俄勒冈,宾夕法尼亚州,南达科他州和怀俄明州。苹果地图采集车目前已经在15个州进行了数据采集,本月采集完成后,苹果地图数据收集将覆盖28个州。     苹果上个月确认了正在使用地图数据采集车收集数据改善苹果地图。苹果希望为地图服务推出可以与谷歌街景模式竞争的功能。  
[汽车电子]
基于USB接口的高增益数据采集系统的设计
  0 引言   在现代工业生产和科学技术研究等各行业中,通常需要对各种数据进行采集。目前常用的通过数据采集板卡采集的方法存在着以下缺点:安装麻烦,易受机箱内环境的干扰而导致采集数据的失真,容易受计算机插槽数量和地址、中断资源的限制,可扩展性差。而带RS-232串口的数据采集器,在需要大批量、高速传输的场合下,其应用也受到限制。通用串行总线USB(Universal Serial Bus)的出现,很好地解决了上述问题,很容易实现便捷、高速、低成本、易扩展、高可靠性的数据采集,代表了现代数据采集系统的发展趋势。   1 硬件设计与实现   USB总线传输速度快,为了充分发挥USB总线这一优势,易选用速度较快的微处理器。另外,USB
[单片机]
基于USB接口的高增益<font color='red'>数据采集</font>系统的设计
利用中频压控振荡器实现车载免提通话
图1所示电路能够将手机音频信号转换到FM广播频段。将手机扬声器靠近麦克风,用户即可借助车载FM广播听到手机的语音信号,从而得到一个车载免提通话手机。 图1. FM发射电路配合麦克风,实现手机的免提通话功能 IC1为集成IF-VCO,采用差分输入,支持70MHz~150MHz整个FM频率范围。电感L1用于设定VCO的中心频率调节范围。选择适当的L1,将输出频率置于100MHz,这取决于IND和GND之间的有效电感,该频率是FM的中心频率。270nH的电感可以保证97~128MHz的调节范围。随后,调节RADJ电阻使得VCO符合某个FM频道的频率。电阻R2和RADJ为内部变容二极管提供偏压。FM电台以0.2MHz的奇数倍为频率
[嵌入式]
基于ADuC848的钻井压力数据采集系统
   摘要 应用ADuC848新型微控制器和Keil仿真下载软件,设计开发了钻井压力敷据采集系统。本系统具有16位高精度A/D转换器,数据实时采集上传存储,最高作业温度为125℃,具有功耗低和集成度高等特点。使用ISP在线编程时,要针对现场需要及时调整系统软件,灵活应用。    引 言   目前国内的随钻测量钻井压力工具大部分是引进国外设备,成本高、维修困难。已经使用的国内设备在体积、集成度和精度上有着明显的不足,并且老化程度高。基于此种情况,笔者开发了一个基于ADuC848微控制器的、可扩展采集通道的钻井压力数据采集系统。ADuC848是美国ADI公司最新推出的一款具有军品标准,单片最多可带8路模拟信号输入转换通道,扩展主机
[应用]
小广播
最新测试测量文章
换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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