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

作者:拉菲官网 发布时间:2020-12-06 20:09

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

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

  驱动程序隐藏了复杂的硬件底层编程细节,为用户提供容易理解的接口。NI公司为基于NI数据采集设备的数据采集系统提供了相应的接口驱动及VI函数 (VI,Virtual Instrument)。对于一些不常见的硬件设备或用户研发的硬件设备,NI没有提供合适的驱动。但是,如前所述,LABVIEW还提供了很多其它的通信接口,包括调用库函数节点(Call Library FuncTIon Node, CLF)、代码接口节点(Code Inace 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方式实现驱动程序的调用。

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

  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函数作为提供给用户进行系统应用开发所需的各类操作。采用该结构,能够使用户在运行时修改虚拟仪器系统的运行逻辑与人机界面,可立即执行,因此在用户需要改变需求的情况下能迅速适配,数据采集卡具有可重构的特点,用户也不必去关心硬件的实现细节。

  在LABVIEW 中调用DLL时,把编写好的DLL放在当前目录或特定目录下,然后根据应用程序的需要,确定参数个数和参数类型及调用规则,在LABVIEW中正确地配置DLL 。首先从函数模板FuncTIon 中调用CLF 节点,双击弹出设置对线所示。对话框中,第一个参数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所示。

  在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数组。

  此外,布尔类型在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 和底层硬件的通信能力。

  为了保证高精度的模/数转换结果,要求输入信号接近A/D模块的满量程值。信号调理的作用是使输入信号满足....

  根据自然资源部在2020年《关于加快宅基地和集体建设用地使用权确权登记工作的通知》中提出的目标,20....

  气体微流量的测量原理是:当气体流出其变容室时,伺服电机通过平动机构驱动活塞在油室中水平运动,活塞运动....

  USB已经成为连接PC的接口选择。所有现代PC上都有USB接口,它提供标准化的连接器,可以为外设提供....

  就像兔子诱惑狗赛跑一样,兔子必须要比狗跑的快,要求最严格的数据采集系统的性能自然要高于民用模数转换器....

  为了衡量炮弹爆炸所产生的爆炸力,往往需要测量炮弹弹片的飞行速度。然而,炮弹爆炸所产生的弹片不仅数量不....

  AD522集成数据采集放大器可以在环境恶劣的工作条件下进行高精度的数据采集。它线性好,并具有高共模抑....

  而异地同步测量是工程中经常用到的方法,如果用传统的授时模式,其时钟频率的产生是用晶体,而晶体会老化,....

  汽车产业已成为国民经济增长的一个亮点,随着科学技术的发展,汽车检测经历了人工检验、简单仪器仪表测量、....

  油井的抽油机数据采集传输管理是油田生产关键环节之一,生产计划的决策依赖于大量现场数据的及时正确的采集....

  3700系列提供了易拓展的、仪器级的开关系统与多通道数据采集解决方案,优化了电子产品与元器件的自动化....

  目前虚拟仪器主要有以下几种构成方式:PC总线方式的插卡型虚拟仪器;GPIB总线方式的虚拟仪器;VXI....

  当您需要在很宽的频率范围测试某种产品时,扫频正弦波很有用。例如某个大型研究项目需要确定波浪在远洋的传....

  深圳面元智能科技有限公司(DTCC)是一家集研发、生产和销售为一体的智能震动数据采集设备科技公司,公....

  油井的抽油机数据采集传输管理是油田生产关键环节之一,生产计划的决策依赖于大量现场数据的及时正确的采集....

  体感试衣镜将智能试衣与传统零售业的结合,让我们真实地感受到科技产品带来的便捷试衣体验。 体感试衣镜能....

  系统结构框架如图1所示。通过导联由人体采集到的心电、脑电、肌电等信号调理电路后,由FPGA内部逻辑控....

  二维码扫描器是一种嵌入式工业二维码扫描器。它是一种读取装置,用于读取条形码中包含的信息解码条形码的内....

  动态链接是一种应用程序在运行时与库文件连接起来的技术。动态链接库(DLL)是一个可以多方共享的程序模....

  为了能更精确地获取事件信息,为事故分析提供有力的证据,同时参照供电企业实际要求,所设计的SoE系统需....

  虚拟仪器是全新概念的仪器,它是对传统仪器概念的重大突破,它的出现开始了仪器发展的全新时代,是仪器领域....

  最近一系列围绕AI进行的调查、研究、预测和其他定量评估突显了目前全球企业采用AI的状态、深度学习的未....

  MLK-1Q-4G智能配变综合监测终端是一种通用型数据采集设备,内嵌高性能 ARM处理器,针对配变市....

  MLK-IM221是针对数据采集终端、数据中心监控需求开发的一款专业数据采集单元。可接入各种智能设备....

  LabVIEW是一种基于图形程序的虚拟仪器编程语言,与传统仪器相比,虚拟仪器技术以计算机为平台,在程....

  温室是利用可调控的技术手段,在不适宜露地植物生长的季节用来栽培植物的设施。它可改变植物生长的外部环境....

  因此,实际环境对无线信号的覆盖情况有重要影响,无线信号的衰落与多径分布情况将直接影响到宽带无线移动通....

  自动气象站由传感器、数据采集器、数据处理终端等组成。传感器感应气象要素的变化;数据采集器可对气温、湿....

  虚拟仪器的设计方法和实现步骤与一般软件的设计方法和实现步骤基本相同,只不过虚拟仪器设计时要考虑硬件部....

  波形采集和连续采集需要使用更多的计算机资源,也需要使用缓冲区,而且在连续采集中一般需要在采集数据的同....

  教学用虚拟仪器实验平台和科研、工业用虚拟仪器平台在技术上有其共性,但也有其特殊需求。例如,必须易学、....

  目前城市中汽车保有量的大幅度增加,给人们的日常生活带来了极大的便利,同时也带来了严峻的环境问题,其产....

  对于数字通信系统测试来说,绝大多数参数指标是在频域完成的,这就需要通过控制频谱分析仪和矢量信号分析仪....

  基于电力线载波通信的供电测控系统是集数据采集、载波通信、网络传输、数据存储、功率计算、数据显示、计算....

  健身房智能无脂镜是一款打破传统健身的智能设备,内置LED灯带,通过蓝牙与手机进行连接,可以通过手机 ....

  多媒体技术是一项传统技术,但同时也是在不断发展与进步的,我们可以形象的用细胞分裂来表示,即多媒体技术....

  电缆故障是通信行业中的常见故障,电缆测距是排除故障的前提条件,准确的电缆测距可以缩短发现故障点的时间....

  在军事装备保障中,计量测试是极其重要的技术基础,计量对军事装备特别是尖端技术的重要性尤为突出。标志军....

  本文介绍的航向姿态系统自动测试设备正是基于ATE技术的自动测试设备,对某型飞行器机载航姿系统各部件进....

  在一些实时数据采集与信息处理电路中,要满足数据采集的精度和速度要求,以必须采用分辨率高,转换速度快的....

  一、什么是智能温室控制系统? 所谓智能温室控制系统,它是现代化的一种集数据采集、中心计算和设备自动控....

  随着石油天然气勘探开发工作的不断发展,我们所面临的勘探对象和开发环境也越来越复杂、越来越困难。地震方....

  本文所介绍的数据采集系统是基于ARM的信号处理系统中的一部分,该信号处理系统用于导弹的数字式自动驾驶....

  但在实际的工业现场中,伴随着大量设备的运行,还会产生许多有害的干扰。主要是浪涌、群脉冲以及一些高频的....

  在进行石油和天然气地震勘探时,整个勘探网格通常会建立 2,000到30,000个用于采集地壳内岩层反....

  数据采集系统是计算机测控系统中不可或缺的组成部分,是影响测控系统的精度等性能指标的关键因素之一。常用....

  传统的数据采集系统,通常采用单片机或DSP作为主要控制模块,控制ADC、存储器和其他外围电路的工作。....

  近年来,由于半导体技术、数字信号处理技术及通信技术的飞速发展,A/D、D/A转换器近年也呈现高速发展....

  发动机性能虚拟仪器测试系统主要由主控机模块、cFP实时监控模块、测功机模块以及待测发动机模块四部分组....

  北京普源精电科技有限公司(RIGOL)宣布,VS5000系列虚拟数字示波器进入市场后,受到用户的普遍....

  美国NI公司推出的虚拟仪器开发平台LabVIEW(LaboratoryVirtual Instrum....

  对于国内而言,正如DSP在20年前出现的情形一样,如今,FPGA正处于数字信号处理技术的前沿。而DS....

  超声相控阵列已经在医学图像处理领域内应用多年,但由于成本和复杂度的限制,该技术直到最近才在无损探伤(....

  NI-9219采集卡,官网显示采样率100S/s,在采集程序中设置采样率100,但效果不佳,目测就一秒钟就更新了电压2次,但...

  比如说 我采集到了一个数值Gray 我这样写了代码 while(1) { Gray=(u8)Get_Data();&n...

  信号来了,找到他的幅度最大值和最大值的索引,如何只采集到幅度最大值附近的波形...

  NI-DAQmx是National Instruments现阶段的数据采集驱动,NI-DAQmx集成了全新的驱动架构和API,用于控制...

  企业中控室与两台数采仪采用Modbus RTU协议通信,每台数采仪提供一个RS232串口与中控室通信,数采仪作为Modbus...

  hive电商日志流量分析1--流程及flume数据采集及表结构建立...

  IGT-SER智能网关支持国家环境保护标准数据上报协议HJ212,通过网关...

  【乐拓USB示波器免费试用连载】可移动示波器平台虚拟仪器比较你可以得出?

  一、可移动示波器 可移动示波器以FLUKE的手持示波器和国产带电池的示波器...

  首先感谢乐拓仪器与电子发烧友平台提供的试用机会! 西安乐拓科技(LOTO Instruments...

  本人新手,努力自学中,想使用DAQ函数实现数据采集(感觉DAQ助手还是不太合适),一直报错说是尝试读取的数据超...


拉菲官网
© 2013 北京格林吉能源科技有限公司.版权所有