基于LABVIEW平台的数据采集卡软件设计
- 格式:doc
- 大小:291.50 KB
- 文档页数:6
《基于LabVIEW的数据采集及分析系统的开发》篇一一、引言随着科技的不断发展,数据采集及分析系统在各个领域的应用越来越广泛。
LabVIEW作为一种强大的软件开发环境,被广泛应用于数据采集、处理和分析等方面。
本文将介绍基于LabVIEW 的数据采集及分析系统的开发过程,包括系统设计、硬件配置、软件实现、数据采集与处理以及系统应用等方面的内容。
二、系统设计1. 需求分析在系统设计阶段,首先需要进行需求分析。
根据实际应用场景,确定系统的功能需求,如数据采集、数据处理、数据存储、数据分析等。
同时,还需要考虑系统的性能需求,如实时性、准确性、稳定性等。
2. 系统架构设计根据需求分析结果,设计系统的整体架构。
系统架构应包括数据采集模块、数据处理模块、数据存储模块、数据分析模块等。
各个模块之间应具有良好的接口,以便于后续的维护和扩展。
三、硬件配置1. 数据采集设备数据采集设备是系统的重要组成部分,需要根据实际需求选择合适的设备。
常见的数据采集设备包括传感器、仪表、PLC等。
这些设备应具有高精度、高稳定性的特点,以保证数据的准确性。
2. 数据传输设备数据传输设备用于将采集的数据传输到上位机进行处理。
常见的数据传输设备包括数据线、串口服务器、网络设备等。
在选择数据传输设备时,需要考虑传输速度、传输距离、抗干扰能力等因素。
四、软件实现1. LabVIEW软件开发环境LabVIEW作为一种强大的软件开发环境,被广泛应用于数据采集及分析系统的开发。
在软件开发过程中,需要熟悉LabVIEW 的基本操作和编程语言,以便于实现系统的各项功能。
2. 数据采集与处理在软件实现阶段,需要编写相应的程序实现数据的采集与处理。
程序应能够实时获取传感器等设备的测量数据,并对数据进行处理和分析。
同时,还需要考虑数据的存储和显示等问题。
五、数据采集与处理1. 数据采集数据采集是系统的重要功能之一。
通过编写相应的程序,实现从传感器等设备中实时获取测量数据的功能。
文章编号:1008-1658(2003)03-0009-05Lab V I E W 下国产数据采集卡DLL 的设计王少红,徐小力(北京机械工业学院机电系统测控实验室,北京100085)摘要:L ab V I E W 是一个高效的图形化程序设计环境,在测量、测试及工业控制领域已有广泛的应用,但所用数据采集卡必须有N I (N ational I nstru m ents )公司提供的驱动程序,大大限制了用户的选择。
分析L ab V I E W 调用外部程序代码的途径,采用调动态链接库的方法编写L ab V I E W 环境下国产数据采集卡的驱动程序。
实验证明,效果良好,满足测试要求,利用动态链接库调用外部程序代码是增强L ab-V I E W 整体性能的一条有效途径。
关键词:虚拟仪器;数据采集卡;动态链接库DLL中图分类号:TP 274文献标识码:A The desi g n of Dllf or t he dom estic DA O card i n l abV I E WW ANG S hao -hon g ,XU X iao -li(L aborator y o f m easure m ent and C ontro l of m echan ical and E lectrical S y ste m ,B e i j i n g I nstitute o f m ach i ner y ,B e i j i n g 100085,Ch i na )Abstract :V irt ual I nstru m ent develo p m ent p latf or m L ab V I E Wis a hi g h efficienc y g ra p hical p lat-f or m W it h extensi ve a pp lication i n m easuri ng ,testi n g and i ndustries contro l real m.But t he DAG (D ata A c C uisition )card needs t he com p an y o f N I (N ational I nstru m ents )to p rovi de dri ve ,Whichg reatl y li mits t he cho ice o f t he custom ers .C alli n g external code m et hod i n L ab V I E Wis dis-cussed ,and DLL (D y na m io L i nk L i brar y )dri ve f or t he dom estic data ac C uisition card is devel-o p ed.It has been p roved t hat t he m et hod is efficient ,p racticable ,and is a g ood W a y to i m p rove t he overall p erf or m ance o f L ab V I E W.K e y words :virt ual i nstru m ent ;DAG card ;DLL虚拟技术、计算机通讯技术与网络技术是信息技术最重要的组成部分,它们被称为21世纪科学技术中的3大核心技术。
引言现代技术的进步,特别是以计算机技术为代表的不断革新的计算机技术,正从各个层面上影响并引导着各行各业的技术革新,基于计算机技术的虚拟仪器系统技术也正以不可逆转的力量推动着测量控制技术、数据采集和分析等技术的发展。
传统仪器主要由信号采集与控制模块、分析与处理模块、以及测量结果的表达与输出模块这三大功能模块组成。
传统仪器的这些功能都是以硬件(或固化的软件)形式存在的。
而虚拟仪器则是将这些功能移植到计算机上完成。
它在计算机上插上数据采集卡,然后利用软件在屏幕上生成仪器面板,并利用软件进行信号的分析与处理。
相对于传统仪器,虚拟仪器具有性能高、扩展性强、开发时间少、完美的集成功能等特点。
LabVIEW是一款优秀的虚拟仪器软件开发平台。
LabVIEW以其直观、简便的编程方式,众多的源码级设备驱动程序,多种多样的分析和表达支持功能,可为用户快捷地构建实际生产中所需要的仪器系统创造有力的基础条件。
其中数据采集与仪器控制是LabVIEW最具竞争力的核心技术。
1 系统整体方案设计一个完整的LabVIEW程序主要包括前面板、程序框图、连接器三部分。
前面板是一种交互式图形化用户界面,用于设置输入数值和观察输出:框图是定义VI功能的图形化源代码,可利用图形语言对前面板的控制量和指示量进行控制;图标和连接器窗格用于把程序定义成一个子程序,以便在其他程序中加以调用。
本系统包括波形信号采集、保存标准信号、信号处理和分析、采集数据回放四个部分。
图1是信号采集与分析系统框图。
1.1 波形信号的采集该部分主要利用外部触发方式发出触发信号,以使发出信号和通道的采集达到同步。
以信号发生器发出信号为例;为了分析有限个波形的数据,必须保证采集卡采集的数据是发出的全部信号并且只有一个发出信号。
本系统通过采集卡输出一个脉冲信号来触发信号发生器,以使采集卡的输入通道和脉冲输出通道同步。
实际上,正是基于这一点,其发出的任意信号才必须被无遗漏的同步采集过来。
用户登录模块的程序设计关键点在于各界面的自动切换、各操作按钮的关联以及数据流的传递。
在该程序框图设计部分,用到了LabVIEW中的循环结构,事件结构,条件结构,顺序结构以及状态机模式。
(1)用户登录模块程序框图设计在程序开始运行时,首先将特定的输入控件初始化,以防对用户输入造成干扰。
只有当用户输入正确的登录名及密码,并且点击了登录按钮后,用户才能进入测试项目选择模块;若登录名或密码错误,界面会自动跳出提示框并且自动清除上次输入的错误登录名和密码,用户可以选择继续输入登录名和密码或者选择退出系统或者点击帮助按钮查阅帮助文档或者点击修改密码按钮,进入密码修改模块。
该部分功能是利用while循环,事件结构、VI引用和执行系统命令函数实现,登录名及密码比较程序被封装成子VI。
while循环能保证程序连续运行,事件结构能实现用户不同的动作产生不同的响应,VI引用和执行系统命令函数实现完成操作界面的自动转换。
需要说明的是,在事件结构中内嵌条件结构,只有当按钮值为新值才进行条件为真的程序,能有效避免用户在程序运行未运行时已点击了按钮值,从而出现错误响应。
图4.5为用户登录模块部分程序框图。
图1 用户登录模块部分程序框图(2)修改密码模块程序框图设计同样在程序运行初始,会首先将特定的输入控件进行初始化。
考虑到修改密码子模块存在回答问题,修改密码,关闭程序三个步骤,故采用状态机模式和事件结构来实现该功能,用户若是能正确回答所设置好的问题,能进入下一步,修改好密码后,自动退出程序,回到用户登录模块;若是用户无法正确回答所设置好的问题,用户可以选择继续回答问题或者退出系统。
该部分功能利用顺序结构,while循环,事件结构和VI引用实现。
需要注意的是,在事件结构的超时事件框中也要给移位寄存器赋状态值,否则在执行事件结构中的超时事件时,会默认回到初始状态,从而实现不了状态机应有的功能。
图4.6为修改密码模块部分程序框图。
《基于LabVIEW并行通信的数据采集与处理系统研究》篇一一、引言随着信息技术的飞速发展,数据采集与处理系统的性能与效率在各个领域均有着迫切的需求。
尤其是在工业控制、生产制造以及自动化技术等方向,高效率、高准确性的数据采集与处理显得尤为重要。
本文旨在研究基于LabVIEW的并行通信技术,以实现高效、稳定的数据采集与处理系统。
二、LabVIEW并行通信技术概述LabVIEW是一种基于图形化编程的语言,具有直观、易学、易用的特点,广泛应用于数据采集、仪器控制、自动化测试等领域。
而并行通信技术则是一种通过多线程或多核处理器同时处理多个任务的技术,能够显著提高数据处理的速度和效率。
将两者结合起来,可以实现基于LabVIEW的并行通信的数据采集与处理系统。
三、系统设计与实现(一)硬件设计本系统主要涉及到的硬件设备包括传感器、数据采集卡、工控机等。
传感器负责实时监测和采集现场数据,数据采集卡则负责将传感器采集的数据传输到工控机中。
此外,为了实现并行通信,还需要使用多核处理器或多线程技术来同时处理多个任务。
(二)软件设计在软件设计方面,主要采用LabVIEW图形化编程语言进行开发。
首先,通过编写相应的VI(虚拟仪器)来对传感器进行配置和数据采集。
其次,利用LabVIEW的并行计算技术,对采集到的数据进行并行处理和分析。
最后,将处理结果通过界面展示给用户。
(三)系统实现在实现过程中,需要首先搭建好硬件平台,包括传感器、数据采集卡、工控机等设备的连接和配置。
然后,根据需求编写相应的VI,实现数据的采集、处理和展示。
在编写VI时,需要充分利用LabVIEW的并行计算技术,以实现高效的数据处理。
此外,还需要对系统进行调试和优化,以确保其稳定性和准确性。
四、系统性能分析(一)数据处理速度通过采用并行通信技术,本系统能够同时处理多个任务,显著提高了数据处理的速度。
与传统的串行通信相比,本系统的数据处理速度有了显著的提升。
基于LabVIEW的数据采集系统的实现一、本文概述随着科技的飞速发展,数据采集系统在众多领域如工业自动化、环境监测、医疗设备、科研实验等中发挥着越来越重要的作用。
数据采集系统的主要任务是从各种传感器或设备中收集数据,然后对这些数据进行处理、分析和存储,以供后续使用。
为了实现这些功能,需要一个高效、稳定、易于使用的数据采集软件平台。
LabVIEW (Laboratory Virtual Instrument Engineering Workbench)作为一种由美国国家仪器(National Instruments,简称NI)公司开发的图形化编程语言,以其直观易用的界面和强大的数据处理能力,在数据采集领域得到了广泛应用。
本文旨在介绍基于LabVIEW的数据采集系统的设计与实现。
文章将首先介绍LabVIEW的基本概念和特点,然后详细阐述数据采集系统的整体架构、硬件组成和软件设计。
在硬件组成部分,将介绍传感器的选择与连接、数据采集卡的功能与配置等;在软件设计部分,将详细介绍如何利用LabVIEW实现数据采集、数据处理、数据存储以及用户界面设计等。
文章还将讨论系统的性能测试与优化,以及在实际应用中的案例分析。
通过本文的阅读,读者可以对基于LabVIEW的数据采集系统的实现有一个全面而深入的了解,从而为相关领域的研发和应用提供有益的参考。
二、LabVIEW概述LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是由美国国家仪器(National Instruments,简称NI)公司开发的一款图形化编程语言,它采用了图形化的代码块,以数据流编程方式实现各种功能的开发。
相较于传统的文本编程语言,如C、C++或Python等,LabVIEW提供了更加直观、易于理解和学习的编程环境,特别适合于工程师和科学家进行数据采集、仪器控制、自动化测试以及数据分析等应用。
虚拟技术及应用实验指导书概述实验是科学研究与探索的重要手段,也是学生掌握知识和基本技能的重要环节。
通过实验教学可以有效辅助理论教学,验证理论的正确性,进而培养学生的实验技能、工程意识、创新意识和创新能力。
根据专业人才培养目标,明确学生应掌握和达到的实验技能培养要求,并按照认知——验证(基础)——综合(中期)——设计——探究的层次安排实验课程,形成分层次、多模块、与理论教学有机结合的科学系统的实验教学体系,将会进一步适应社会对人才创新能力的需求。
虚拟仪器技术应用广泛、发展迅速,近几年已成为数据采集、检测、控制等领域最为常用的编程环境之一,其中LabVIEW(Laboratory Virtual Instrument Engineering Workbench)以其独特的图形化编程方式,在虚拟仪器技术领域广泛地被工业界、学术界和研究实验室所接受,视为一个标准的数据采集和仪器控制软件。
LabVIEW尽可能利用了技术人员、科学家、工程师所熟悉的术语、图标和概念,可以增强构建自己的科学和工程系统的能力,提供了实现仪器编程和数据采集系统的便捷途径。
使用它进行原理研究、设计、测试并实现仪器系统时,可以大大提高工作效率。
国内一些重点高校,例如清华大学、合肥工业大学、山东大学等均开设了与虚拟仪器相关的课程。
目前“虚拟技术及应用”是我校机电工程学院测控技术及仪器专业的一门专业课,实践性较强。
通过实验,可使学生熟悉LabVIEW的编程环境,及时掌握和巩固LabVIEW的基本编程方法。
通过有计划的操作和思维完成各种训练,增强学生的实际编程能力,掌握LabVIEW在数据采集和处理、仪器控制等方面的基本方法和步骤。
进而培养学生动手能力和解决实际问题的能力。
还应进一步培养学生认真严谨,相互合作,共同探索,实事求是的科学研究素质。
我校测控技术及仪器专业将“虚拟技术及应用”课程安排在第四学年第一学期,学生在学习该门课程之前应修完C语言、传感器与测试技术、微机测试与接口技术、信号分析与处理、仪器电路、等课程。
基于LABVIEW平台的数据采集卡软件设计引言作为专业测控领域的软件开发平台,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 的各种数据类型进行了定义。