版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
可编辑版/XX科技大学本科毕业设计〔论文学院电子信息学院专业电子信息工程学生姓名赵越班级学号1140302124指导教师张贞凯二零一五年六月XX科技大学本科毕业论文基于NImyDAQ的数据采集系统的设计DesignofdataacquisitionsystembasedonmyDAQ可编辑版摘要在从前,各种数据采集都是通过人工的方式进行的,所以一直存在很大的局限性,即无法做到对大量的实验数据的分析处理。随着电子科技的发展,人们可以同时采集大量的信号数据并且通过计算机处理分析这些数据。虚拟仪器仅是一个程序化的仪器,这种仪器和计算机结合使用,使得人们可以在事先编好的程序下完成对数据的一系列处理分析工作。本文着重研究了几种典型的基于NImyDAQ的数据采集系统,设计了很多实用的虚拟仪器。如虚拟数字电压表,它代替了传统的电压表,提高了测量效率和精准度。连续脉冲序列产生VI,它能够产生任意占空比,任意频率的方波。在脉冲宽度测量中,可以通过设置计数方式等方便快捷地测量出脉冲序列的宽度。连续信号采集则是通过DAQmxAPI采集信号,执行连续的硬件定时信号采集。简单的边沿计数VI可以选择计数的方式,方便快捷地统计出一个方波的波峰个数。同时本文在原有数据采集系统的基础上对部分系统进行升级改进,实现了更加丰富的功能。关键词:虚拟仪器;LabVIEW;NImyDAQAbstractInthepast,avarietyofdataacquisitionisperformedbyartificialmeans,ithasalotoflimitations,whichcannotbedoneonalargenumberofexperimentaldata.Withthedevelopmentofelectronictechnology,peoplecancollectandprocessinglargeamountsofsignaldataandanalyzethedatathroughcomputers.Virtualinstrumentisonlyaproceduralinstrument.Itispossibletocompleteaseriesofdataprocessingandanalysisworkinthepre-programmedprocedureswiththecombinationofvirtualinstrumentandcomputers.ThispaperfocusesonsometypicaldataacquisitionsystembasedonNImyDAQanddesignsmanyusefulvirtualinstrument.SuchasVirtualdigitalvoltmeter,whichreplacedthetraditionalvoltmeterandimprovedtheefficiencyandaccuracy.ContinuouspulsesequenceVI,itcangenerateaanydutyandanyfrequencysquarewave.Pulsewidthmeasurementcanmeasurethewidthofthepulsesequencequicklyandeasilybysettingthecountingmethods.ContinuoussignalacquisitionistoacquiresignalsbyusingDAQmxAPI.SimpleEdgeCountVIcanchoosethewayofcounting,itcancountthenumberofasquarewavecrestquicklyandeasily.Meanwhile,basedontheoriginaldataacquisitionsystem.Thispaperupgradepartofthesystemtoachievearicherfunction.Keywords:Virtualinstrument;LabVIEW,;NImyDAQ目录TOC\o"1-3"\h第一章绪论11.1研究背景及意义11.2国内外发展现状11.3虚拟仪器21.3.1虚拟仪器产生的背景2虚拟仪器的概念3虚拟仪器的开发语言31.4本文的主要结构4第二章DAQ简介52.1数据采集卡的硬件简介52.2数据采集卡的软件简介62.3设置NImyDAQ设备62.4本章小结10第三章LabVIEW简介113.1LabVIEW和G语言的概述113.2LabVIEW编程环境12启动界面13前面板13程序框图143.3
浅谈G语言163.3.1G语言简介163.3.2G语言的特色——数据流183.3.3G语言的基本结构203.4LabVIEW界面设计233.5本章小结23第四章基于NImyDAQ的数据采集系统244.1虚拟数字电压表24电压表的前面板布置244.1.2电压表的程序框图244.1.3测试过程254.1.4测试结果254.2连续信号采集264.2.1程序框图的设计264.2.2系统前面板的布置264.2.3测试过程274.2.4测试结果274.3简单的边沿计数274.3.1程序框图的设计274.3.2系统前面板的布置284.3.3测试过程28测试结果294.4脉冲宽度测量294.4.1程序框图的设计294.4.2系统前面板布置304.4.3测试过程304.4.4测试结果314.5连续脉冲序列产生314.5.1程序框图的设计314.5.2系统前面板的布置324.5.3测试过程324.5.4测试结果334.6本章小结33本文总结34致谢35参考文献36第一章绪论本章主要讲述了基于NIMyDAQ的数据采集系统设计的背景和意义,国内外所设计的数据采集系统的开发现状以及尚未解决的问题,随后简要提及了虚拟仪器的基本知识,最后列出本文的主要结构。1.1研究背景及意义由于科技的局限,先前测试现场的几乎所有数据都是采用人工的方法进行读取和记录,无法同时准确有效的处理分析大量实验数据,所带来的后果就是无法对其进行准确全面的分析,计算,所以阻碍了科学技术的发展以及仪器的大量普及[1]。第三次工业革命发生以后,计算机技术得到了飞速的发展,伴随着精度越来越高、性能越来越好的数据采集系统的广泛应用,使得多路数据不需要使用人工进行采集并且分析全部由计算机自动完成,从而提高了测量精度和可信度。而虚拟仪器的良好灵活多变性,使得虚拟仪器可以在PC端完美地兼容运行,同时在这个整体中是必不可少的[2]。把传感器和硬件设备连接起来,需要一个媒介能够进行信号处理,使得该信号能够被计算机识别,分析,处理。虚拟数据采集系统一般是由以下几个部分组成,首先是一个软件程序,其次要有一个能够分析处理数据的PC端,然后必备一个数据采集卡,最后是各种传感器和数据分析仪[3]。1.2国内外发展现状<1>在科技比较发达的现代,数据采集系统几乎都有高速度,高性能计算机的影子,高性能计算机的应用,极大的提高了对数据处理分析的准确性和可靠性,更重要的是数据采集系统不再需要很多硬件支持,节省了人力,物力,财力。<2>配套的软件控制在每一次的数据测量采集中扮演着重要的角色,从而使得系统设计变得更加方便和高效。<3>数据采集与数据处理完美地结合成一个整体,因而可以完成数据采集与数据处理、数据分析的几乎所有工作。<4>数据采集过程几乎都是随时随地的,随时随地的标准是能满足实际需要;对于一般用户所使用的数据采集系统,开发者则希望此系统能有比先前更高的速率和更大的准确率,以满足更复杂,更多变的实际情况。<5>工业革命以来,微型电子电路技术也得到了空前的发展。电路设计得比先前更小更精炼,数据采集系统的速度得到了质的飞跃,同时可信度非常之大,近几年来单片机也被应用到该系统中,出现了突破传统数据采集系统[4]。<6>近年来,随着总线技术概念的提出,该技术在数据采集系统中取得了重要的地位,总线技术在一整套的测量测试系统中扮演着重要的角色。1.3虚拟仪器1.3.1虚拟仪器产生的背景传统仪器技术经历了漫长的改进,一直到现在,已经度过了从传统的模拟仪器、后来的数字仪器和近代的虚拟仪器这三个过程,从1980年开始这些测量工具的发展进入到了一个更高的阶段即:虚拟仪器时代。在大多数的实际情况下,在要测量某些数据时需要很多工具,如函数发生器、示波器、电压表、频率仪、电流表等,如果要测量更加庞大,功能更多的数字或者模拟电路系统还需要分析仪、IC测试仪等。这么多的测量仪器有很多缺点和不便,比如:需要很多钱、测量仪器太过庞大、小的实验室容纳不下,相互关联起来使用时很容易发生错误,而且经常由于仪器之间的连接、信号带宽等方面的问题给每一次的测试测量造成很多不便利因素,使得数据测量变得更加困难[5]。要提高电子测量仪器的测量可信度和准确性,就要求设计的仪器本身具有自动调节、自动校准、量程转换、处理分析和寻找故障的功能,实现了自己保存大量测量数据并在开发者需要调用的时候自动调出并参与运行处理,这些指标对于传统仪器来说几乎不可能实现,在智能虚拟仪器实现之前几乎被认为是不可能完成的任务。然而,计算机科学和微型电路电子技术的一步步发展壮大,极大的地加快了近几年来虚拟仪器科技向前迈进的步伐。目前,科学家正在努力钻研的的第五代全自动测试测量系统中,计算机扮演着非常重要的角色,计算机软件技术和测量控制系统的强大兼容性,使得他们能够很有效的融为一体并且更加高效,更加便捷[6]。随着观念的变化,科学家对传统意义上仪器设计思路和方法等都发生了质的转化,人们提出了不同于传统的仪器概念——虚拟仪器。由于虚拟仪器软件能够拥有测量采集、过程指导、数据分析、数据处理、结果显示和人机交互界面等能力,使得先前老旧的传统仪器能够被后来开发者设计的软件程序所替代。1.3.2虚拟仪器的概念虚拟仪器首次是由美国国家仪器公司提出来的,虚拟仪器实际上是虚拟现实技术的一个分支,其实虚拟仪器是仅仅是一种功能意义上的仪器,但它能充分发挥高性能计算机系统快速分析数据,处理数据能力的优势,在高度集成的以及必要的硬件条件允许的情况下,利用事先编好的程序完成数据的一系列复杂的处理分析工作。,利用软件程序、计算机的配合来完成那些老旧的传统仪器不能完成的任务,大大地提升了传统仪器在一系列数据分析和处理方面的能力,让使用者能够随时随地对虚拟仪器进行更新升级,甚至增强其功能[7]。虚拟仪器离不开计算机的支持,因为它是通过计算机编写的程序,高性能计算机和仪器的紧密结合是以后虚拟仪器发展的重要突破口,所谓的虚拟仪器就是在常见的计算机上编写一些软件程序,并通过外界接口搭建硬件环境,使得使用者在使用这些虚拟的仪器的时候,就像在使用为自己量身定制的测量测试仪器。在上述系统中,外接硬件用来接收外界所要测量处理的信号,开发者自己编写的软件程序才是整个系统的核心内容。几乎所有操作者都可以利用编写程序的方法,很快速并且高效地改变、添加,删除虚拟仪器系统能实现的模块,业内把它称之为"软件程序等同于传统仪器"。1.3.3虚拟仪器的开发语言目前,开发者把虚拟仪器定义为"基于高性能计算机的测控系统",这里并没有说明这个虚拟系统的程序开发语言,目前许多种语言都有开发成功的虚拟仪器案例,但是众多的开发人员经过多方实践,摸索和探究。考虑到各个方面的内容,一致认为LabVIEW是虚拟仪器领域最便捷的图形语言开发外在条件[8]。由于"G"语言的构成基础是一个个形象的图形,所以把这种用图像表示的编程方式称为G语言,它和传统意义上的C++,JAVA,汇编语言等存在很大的相似点,如相似的编程结构、相似的控制语句流、程序调试工具以等。但G语言和其他编程语言也有着显著的差异,常见的编程方法用一个个字符,字母来表示,而G语言用更加通俗易懂的图像化语言来构成编程基础,以一个个小模块来完成最终的程序编写。在这样的开发环境下,一般使用者只需要少许的编程知识,因为这个开发环境下使用的都是开发者所熟悉的,形象的图形和图像,比如:各种旋钮、开关和波形图等,界面友好是它的一大特点。因此在这样的开发环境下,就算没有很多编程知识,也能设计出高效的产品,软件。LabVIEW目前已经广泛地被社会各界所接受,LabVIEW可以说是一个完美的数据采集测量处理分析软件。LabVIEW本身包含了很多数据库和函数包含了所有满足GPIB、HUI、ZNNX-2893和UY-987协议的硬件和NImyDAQ的所有功能。该软件自带了很多库函数,由于它具备这么多功能,所以其强大的灵活性深受开发者的喜爱。LabVIEW设计的初衷是提供一个大众化的,方便的,快捷的开发工具。这个软件极大的发展了虚拟仪器科学和数据采集系统,使得人们可以在很多情况下的测量处理分析数据变得更加方便,当我们利用这个平台进行数据采集,分析,处理,显示,规划的时候,极大的节省了使用者的时间,避免耗费巨大的人力和物力[9]。1.4本文的主要结构在接下来的章节中,将更深入的描述本课题所介绍的基于NImyDAQ的数据采集系统的设计。第二章主要介绍了NImyDAQ的运行原理和使用方法。第三章主要介绍了LabVIEW的使用方法以及G语言的基本知识。第四章着重分析了几种典型的基于NImyDAQ的数据采集系统,并在已有的基础上拓展了他们的功能。在论文的结尾,对基于NImyDAQ的数据采集系统作了个简单的总结,同时也指出了尚未完全克服的问题。第二章DAQ简介本节详细介绍了数据采集器的软件,硬件以及这个设备的基本配置方法。2.1数据采集卡的硬件简介USB接口技术被应用在NImyDAQ上,NI数据采集卡采提供了模拟输出<AO>、数字输入和输出<DIO>、电源和数字万用表<DMM>函数。NImyDAQ的硬件电路和模拟输入输出模块中的电路电子板是由美国XX仪器公司<TexasInstruments>提供。图2-1所展示的是NImyDAQ的硬件设备[10]。图2-1硬件程序框图NImyDAQ提供了两个模拟输入通道。通过修改参数这两个模拟输入通道可被使用该软件的人设置差分放大输入和音频输入。数字输入被应用了一种叫做多路复用的技术,业界认为的多路复用技术就是通过模拟和数字转换器〔ADC>对低阻抗差分放大输入以及音频输入通道在同一时间进行速率很高的采样识别。在一般的实际情况下,信号有范围限制,区间在负10伏到正10伏。如果使用者把它调节到音频模式,则数据采集卡的两个模拟信号可以看作是音频的信号输入。输入到这个通道的信号频率可高达20000HZ,如此高的模拟输入速率满足了波形采集的要求。要分析处理模拟输入,开发者在大部分情况下必须使用NIELVISmx示波器、动态信号分析器和Bode分析仪[11]。数据采集卡上一般带有8个数字输入输出的数据线接口。数据采集卡提供+15V,-15V,+5V的电压的电源。+15V和–15V通常被用于模拟组件。例如,电阻和变压器。+5V的电源通常用于电源数字组件。例如:数字输入输出等。电源、阻抗和数字I/O的总功率是有范围限制的,最大上限为500mW,最小下限为100mW。2.2数据采集卡的软件简介NIELVISmx是使NImyDAQ能正常实现其功能所不能缺少的驱动软件。NIELVISmx能使用基于LabVIEW的软件,并且他最重要的功能是能够控制NImyDAQ设备并且该软件配备许多常见的使用的功能供开发者使用。NIELVISmx安装时还会安装LabVIEWExpressVI这个不能缺少,当开发者在编写程序的时候能够用它给软件实现更多更丰富的功能。在NIMultisim中使用NIELVISmx可模拟信号、与NImyDAQ两者联合测量实际的信号并且可以处理分析计算总结采集的信号。2.3设置NImyDAQ设备DAQ中有一个连接器他有20位螺栓,要正确安装这个连接器需注意与NImyDAQ保持在同一水平面上。如果插入该复杂的连接器时与NImyDAQ不对齐或者有角度的时候,势必会造成硬件破损[12]。为保证正确的信号连接,螺栓端子必须按规定规范的插入数据采集卡中。图2-2显示了我们该如何正确的插入连接器。图2-2数据采集卡的连接框图图2-3为可通过3.5mm音频插头和螺栓端子连接器访问的音频、AI、AO、DIO、GND和电源信号。表2-1为信号的详细说明。图2-3数据采集卡的I/O连接器表2-1螺栓端子信号说明信号名称参考方向说明AUDIOIN-输入音频输入-立体声连接器的左侧和右侧音频输入AUDIOOUT-输出音频输出-立体声连接器的左侧和右侧音频输入+15V/-15VAGND输出音频输出-立体声连接器的左侧和右侧音频输出AGND--+15V/-15V电源AO0/AO1AGND输出模拟地-AI、AO、+15V和-15V的参考接线端AI0+/AI0-;AI1+/AI1-AGND输入模拟输出通道0和1DIO<0.7>DGND输入或输出模拟输入通道0和1DGND--数字地-DIO数据线和+5V电源的参考地5VDGND输出5V电源图2-4为NImyDAQ上DMM连接的示意图。表2-2为信号说明。图2-4DMM测量的连接表2-2DMM的信号说明信号名称参考方向说明HI〔VΩCOM输入电压、电阻和二极管测量的正接线端COM--DMM测量的参考端HI<A>COM输入电流测量的正接线端〔熔断:F1.25A250V快速反应开发者要正确设定输入通道和连接信号,就必须分清什么是浮接信号和什么是接地信号,所以我们必须明确信号到底是属于什么。接下来的一节里我专门介绍了上述两种信号。用作接地-参考的信号源必须连接大地或者建筑物。具有非隔离的特性,并且输出并导入建筑物或者大地供电系统的设备或仪器是被认定为接地参考信号源。连接至同一供电系统的数字仪器之间是一定会存在电势差的,但他们电势差的范围很小,通常是1mV~100mV之间。如果电势差显著增大,则提示电子线路接线不规范。接地信号测量方式也很重要,如果测量方法不规范,则电势差是引起巨大误差的主要原因。被称作是浮接的信号源由于没有连接至数据采集卡的参考地。常见的浮接信号源有通过传统锂电池供电的设备、降压器输入、热阻抗、电池设备、声学检测器输出和隔离放大器。一般情况下定义一个浮接信号源是看它是否具有隔离输出的功能。要建立信号的参考一定要用跳线或者电阻把浮接信号连接都数据采集卡的工地引脚。否则,需要测量的输入信号会在信号源超出共模电压最大或者最小极限时产生误差,从而影响测量。如果要配置信号源到共地引脚参考的最快捷方便的做法是用数据线把信号的正接线端和数据采集卡的AI+端相联系起来[13]。然而也有特殊情况,如果电路中出现了较大的源阻抗,上述连接方式将导致测量结果产生明显误差。由于导线连接在大地端,所以正极线产生的静电会导致耦合并导致噪声的产生,噪声有可能会单独存在。噪声不会以共模信号的形式出现,而是以差分模拟信号的方式出现,并且将会干扰使用者的测量结果。如图2-5,在该情况下,通过一个电阻连接负极线至AGND,需要注意的是这个电阻的阻值是源阻抗的100倍,如果直接把连线负极连接至共地端是不对的。阻值大小要恰到好处,最理想的情况是源阻抗100倍的电阻,只有这样能使信号路径趋于稳定[14]。图2-5浮接信号源的非差分关联连接另一个等值电阻至共地端的正极输入可完全稳定信号路径,如图2-6所示。虽然这个平衡输入方法能更有效的降低噪声,抑制噪声的产生,从而提高测量精度,缺点是会算入两个电阻阻值总和,并且是在串联方式下的阻值总和,从而加大了电路的负载。例如,源阻抗为2k,每个电阻为100k,则为源引入了200k的多余的电路阻值负载,同时生成了一个–1%的误差范围[15]。图2-6带2个电阻的差分连接方式满足模拟输入数据线的正端口和负端口均为直流路径接地的条件下,才能保证该电子电路放大器的正常工作。如信号源的阻抗不是很大,则优先考虑阻值较大的负载。开发者不但要注意电阻阻值太小产生载入源,同时也要注意电阻阻值太大产生的显著输入误差,这两种情况均会导致误差的产生,影响精度。解决方法是,直接连接负输入端至共地端。2.4本章小结本章主要介绍了数据采集卡的软硬件基本知识,同时列出了该仪器的基本配置使用方法。第三章LabVIEW简介本节从四个方面详细介绍了LabVIEW,首先介绍了LabVIEW和G语言,接着探讨了LabVIEW的编程环境,然后详细展示了G语言的基本使用方法,最后给大家展示了LabVIEW的界面设计过程。3.1LabVIEW和G语言的概述LabVIEW它的编程环境是用一个个图像模块完成,所以更加形象。该软件编写的程序是基于图像的;在LabVIEW中使用的G语言和通常意义上的编程语言有很大的不同,传统意义上的编程语言运行的方向是由上而下的,是根据代码的先后顺序运行的,采用数据流进行编程方式是该软件使用上的一大特色,在程序中常见的模块用图表表示,并且用不同颜色的数据线表示运行的方向。业界通常把这种图形化的编程语言称为"G"语言即用图形编程,LabVIEW写软件的最大好处是它不用写复杂繁琐的代码,取而代之的是非常直观形象的流程图。整个编程过程所用到的点都是使用者常见的图形和图表。LabVIEW有以下几个特点:〔l上手很容易。与传统的编程语言相比,LabVIEW这种图像化的编程软件存在一个巨大的优势:代码的产生不是通过文本的方式来生成,而是使用图形来完成软件的编写。所以由它书写的的程序是图形化的,用图形,非常直观形象的颠覆了程序就是代码的观点。〔2通用编程系统。采用图形化编程方式不但没有禁锢LabVIEW的能力,反而增强了其实用性,同时兼备了传统的编程系统的优点。由于LabVIEW有一个丰富的函数库,所以可完根据不同的需要完成几乎是任何软件的编写。LabVIEW既有突破传统的优势,也保留了一般常见的程序编译软件。LabVIEW对数据的处理采用了一种叫做实时动态监控的的方法,所以它比传统意义上的编程语言更高效,更快捷。〔3模块化。LabVIEW中的程序由许多小模块组成,可以不用特别的编写,直接使用;另外,通过该开发环境编写的程序,不但可以单独执行,而且可以作为其他更复杂的程序的子系统,同时协调使用。LabVIEW已经渗透到了在社会的很多领域:测试测量:LabVIEW当初设计的初衷是为了采集数据,所以现在很多虚拟仪器和数据采集系统都配备有对应的LabVIEW驱动程序,LabVIEW也包含了很多采集处理的工具包,开发者能够在第一时间检索并利用这些工具。有时一个复杂的测量工作只需要调用,组合几个简单的子程序。控制:LabVIEW同时配备有适用于控制的子程序——LabVIEWDSC。仿真:大量的高等算法函数也包含在该软件的中,为模拟、编译、软件编程等方面提供了更快捷的方式。高速研发:完成一个功能强大的,使用方便的,并且可以在很多场合应用的大型应用软件,熟练的开发者所需的研发时间更短,比其他语言的编程时间缩短了将近二分之一。跨平台:LABVEWI具有良好的兼容性。体现在LabVIEW的图形化语言不需要考虑兼容性就可以在几乎所有的操作系统上执行:Windows、MacOS及Linux。3.2LabVIEW编程环境通过G语言开发的软件程序,即虚拟仪器〔VI,它包括前面板、程序框图两部分。一个经典的LabVIEW程序结构如图3-1所示,类似于几乎所有的软件设计,在创建一个虚拟仪器程序前,开发人员需要根据实际要求构思友好的人机交互界面,对于虚拟仪器而言,界面设计最大的难点就是前面板的设计,其中就有添加各种显示控件控件、布尔变量、必要的文字概述和图片等,其次就是通过具体的图像化编程实现开发者想要所需要的能力。然而在一般情况下,开发人员都是上述两种方法的穿插施行。图3-1LabVIEW程序图启动界面双击LabVIEW图标,启动LabVIEW,就打开了LabVIEW的启动界面,如下图3.2所示。在这个界面中可以看到有菜单栏,编辑栏,帮助栏等。3.2.2前面板前面板就是最直观的人和机器交流的界面。开发者尝试编写一个虚拟软件时第一部步是设计这个人机交互界面,然后根据实际需要设计前面板上的显示控件等。开发者要新建一个LabVIEW程序时,便出现下图3-2的前面板:图3-2程序框图界面菜单:在LabVIEW中菜单的作用是为了用户方便修改和操作程序框图上的对象。在图3-2中,最顶上一栏被称为通用菜单栏。工具栏:工具栏按钮用于执行运行、连续运行、设置断点、终止、编译、修改字体、组合、分布对象.即时帮助窗口:选择"帮助→显示即时帮助"显示即时帮助窗口。图标:图标是子模块的图形化表示,一般有文字、图形穿插其中。如果打开一个子VI,程序框图上就会出现该子VI的图标。3.2.3程序框图创建前面板后,由于该软件中自带了很多函数,可通过图形化的函数来丰富各种功能,从而间接影响前面板的显示内容。下图3-3展示了LabVIEW的程序界面框图。图3-3程序界面框图函数选板:在函数选板中可以找到很多常用的函数。函数选板中包含大量的函数库,所以一些常见的功能函数都能找到。按照程序和函数的类型,程序和函数有不同的分类方式。最终设计好的软件中包括接线端和节点。用图形化的数据线把各个子模块关联融合到一起,程序框图就这样做成了[16]。〔1接线端:前面板中的显示或者输入控件在程序框图中一般显示为接线端。它的作用是传递前面板和后台程序之间的信息。开始执行后,经过分析后的输出数据值经由前面板中的显示控件接线端流出处理后的数据到程序框图而重新进入前面板,在后来让前面板中设置的显示控件显示出具体的数值。〔2节点:节点就是开发者事先创建在程序框图上的小模块,它们通常带有输入输出端,在VI运行时进行运算。节点就相当于一般意义上语言中的语句、循环结构、模块和数组。LabVIEW有以下类型的节点:函数——系统自带的执行小模块,把他和传统编程语言中的数值常量、函数或模块相比。ExpressVI——即可以帮助人们测量的小模块,由于其包含强大的数据库,所以他使用快捷,方便,但缺点是速度并不是太快。所以,如果程序对效率要求高,一般不考虑使用该模块。〔3多态VI和函数:当输入的数据类型多,且互不相同时,多态VI便会根据实际情况作出调整。3.3浅谈G语言3.3.1G语言简介图形化的编程语言和传统的编程语言有着天壤之别,最大的优势是把用文本编辑的代码用直观的图形表示。因此,LabVIEW是一个通俗易懂的很容易上手的软件开发工具。同时由于它可以很方便的编写程序,编写通俗易懂的图形语言,所以它可以极大的扩展你的科学和工程系统的能力,为编写虚拟仪器和实现高速高效数据采集系统提供新的方法。当然开发者通过他可以大大提高工作效率。把G语言与C语言进行比较分析,我们能对G语言有更加深刻的了解。我们举一个简单的例子,每个学生在学习C语言编程的时候编写的第一个程序最后都是在电脑上出现"HELLOWORLD!"。我们分析这两种语言的书写方法,看看有什么区别和相似。〔1用C编写程序"HELLOWORLD!"以下是C实现的代码:#include<stdio.h>Voidmain<>{printf<"HelloWorld!\n">;}然后编译执行即可。<2>用LabVIEW编写程序"HELLOWORLD!"为了显示最后的结果,开发者需要在前面板中加入一个显示控件,这个控件的位置在菜单的控制板里。在我们加入的这个显示控件是输入控件,为了避免错误,我们得把他转换成输出控件,这样才能显示最后的结果。如图3-4所示:图3-4程序前面板然后点击窗口,在弹出来的对话框中选择"程序视图",可以看到流程图中增加了一个与之对应的接线端。接下来在流程图中添加一个字符串常量〔位于函数选板—编程—字符串—字符串常量来存放"HELLOWORLD!",为了能够显示成功,需要将常量和显示控件连接起来,如图3-5所示。至此,整个程序就编写完成了。图3-5程序框图单击工具条上第一个箭头图案的按钮,运行VI,就能看到如图3-6的最终效果:图3-6运行结果以上分别用C和LabVIEW编写的显小程序,从中可以看到两者最大的区别是:C语言是使用传统的字母代码来实现各种显示功能,然而LabVIEW使用的是图像化的语言。3.3.2G语言的特色——数据流在C语言中,程序的基本执行顺序基本按照代码的书写顺序一步步执行。在LabVIEW中,代码运行的顺序是根据数据线的连接方向来控制的:一个数据从程序框图上的某个起始节点出发,沿着与它相连的数据线流动到下一个节点的某个输入端,数据在这个节点被加工处理后,再从这个节点的输出端点沿着连线流出,流向下一个节点,如此反复直到流入某个终止节点为止。下面举了个小例子,通过这个例子我们可以直观的看到数据流的移动方向。我们先编写一个G语言程序,将华氏温度和摄氏温度之间的转化变得直观:华氏温度到摄氏温度的转换公式为:1℃=5×<℉-32>/9〔℉-华氏温度,℃-摄氏温度,实现的功能两种程序如下:〔1用C编写程序的代码:#include<stdio.h>voidmain<>{flaotx,y;printf<"请输入华氏温度:\n">;scanf<"%f",&x>;y=<x-32>*5/9;printf<"摄氏温度为%f!\n",y>;}〔2用LabVIEW编写程序,在程序框图的程序如下图3-7所示:图3-7程序节点以及连线在前面板中华氏温度下的一栏里随便输入一个数值,然后点击向右的箭头,表示开始运行,在另外一个显示控件里,就显示出了转换后的数值,如图3-8所示:图3-8运行结果在这个程序中,数据℉从输入控件中输入,沿着连线先后经过了减法器〔℉-32=X、乘法器〔X*5=Y、除法器〔Y/9=℃,最后从输出控件中输出,完成了整个程序执行的流程。3.3.3G语言的基本结构LabVIEW相比于传统的编程语句它的数据类型有很多种,导致布尔与数据类型的相互联系紧密严谨。一般而言,每一个数据类型可以对应多个输入输出组件;另一方面,存在不少的输入输出模块可以同时对应多个不同类型的数据。〔1数值控件:在LabVIEW的控件栏中可以找到是数值控件。数值控件不能通过外表判断,虽然有些控件的外表不同,但它们都对应相同的数据类型,即数值类型[17]。此外,有很多例外的控件,虽然不在常规的位置,但这些控件也可以表示成数值型控件。表示法、数值范围的作用是规范数据的大小,而不会影响数据其他属性,以避免程序编译时出现数值过大或者过小;显示格式不影响程序的运行,主要是为了提供更加方便快捷可靠的人机交互界面。〔2枚举型:顾名思义,枚举控件所对应的数据类型就是属于枚举型。在实际开发中,表示个数不多的几种数值、几种流程等定义时,枚举控件是最好的选择,一般而言枚举控件的数据类型定义很严格,目的是防止代码执行过程中可能出现的错误。〔3布尔型:"真"和"假"是构成布尔型数据的基础。一般而言,用一个布尔型数据〔bit就能准确地表示真和假。在一般情况下,字节是现代计算机处理数据的最小单位,真和假恰好可以用一个字节的0或者1来代替。〔4数组型:如果出现一组相同类型的数据,一般而言,可以用数组型来进行表示。数组元素的数据类型可以表示成其他所有的数据类型,需要注意的是,数组本身不能重复嵌套作为另一个数组的元素。与传统意义上的编程语言相类似,在LabVIEW这样的开发环境下,开发者也使用"结构"来控制代码的执行顺序。较常用的结构有:顺序结构、条件结构、循环结构、事件结构以及定时结构等[18]。顺序结构:如下图3-9所示,程序的运行顺序是按照数据在连线上的流动方向执行。同时,G语言不但是一种图像化的语言,而且一种自动执行有多线程的语言。所谓多线程就是,如果在程序中有两个并行放置、相互独立没有联系的模块,则LabVIEW会根据实际情况把它们放置到不同的线程中,同时执行。顺序结构可以让两个或者多个相互独立的模块按照开发者所需要的顺序来执行。图3-9顺序结构顺序结构运行时,系统会按照框架的先后顺序依次执行。只有每个框架中的代码运行结束,程序才会跳转到下一个框架。开发者可以根据实际需要把能实现不同功能的代码放置在不同的框架中,系统就会按框架的顺序依次执行。条件结构:如下图3-10所示,LabVIEW中的条件结构类似于树枝,有很多分支,每个分支分别对应不同的的程序代码。条件结构可以按照开发者实际需要的变化,每次只运行其中的一个分支,或者多个分支。类似于传统编程语言中的ifelse和switch语句。如果要选择到底运行哪一个树枝,可通过使用选择器接线端,选择器接线端可以连接布尔、整型,整数或者枚举类型[19]。图3-10条件结构循环结构:和大部分传统意义上的编程语言一样,LabVIEW也有循环结构,它们分别是for循环和while循环。其能力也与传统意义上的编程语言的功能相仿,可以通过改变数值来改变循环体中的代码运行次数。〔1For循环如下图3-11所示,配置For循环的相关参数可以设定某个代码运行规定的次数。For循环的初始值一般是从0开始,重点是每执行一次循环,数值一般只增加1。需要注意的是For循环要么运行完毕,要么不运行,而不能运行到一半就退出。图3-11for循环〔2While循环如下图3-12所示,While循环作用是能够多次执行循环体中代码,直至满足开发者设定的参数为止。图3-12while循环一般而言,外部数据要想跳进循环体只有通过隧道才可以进入,有这样几种进入隧道的方法:索引隧道、移位寄存器〔shiftregister、一般隧道。一般隧道,就是把数据传入传出循环结构。数据的类型和值在传入传出循环结构前后不发生变化。索引隧道是LabVIEW的一种独特功能。索引隧道的作用是把一个不相干的数组和循环结构关联起来,隧道在循环内一侧会自动取出数组的元素,依顺序每次循环取出一个元素。用索引隧道传出数据,可以自动把循环内的数据组织成数组。移位寄存器可以将数据从一个循环周期传递到另外一个周期。通过移位寄存器传入传出数据,也是数据的类型和值都不会发生变化。移位寄存器的特殊之处在于在循环结构两端的接线端是强制使用同一内存的。因此,上一次迭代执行产生的某一值,传给移位寄存器右侧的接线端,如果下一次迭代运行需要用到这个数据,从移位寄存器左侧的接线端引出就可以了。3.4LabVIEW界面设计使用LabVIEW编写一个复杂并且功能强大的程序,在实际情况下是按照如下方法进行的:结合实际需要、构思、编程、编译、发布及维护。细分设计阶段,任何复杂功能强大的程序都必须先考虑程序的人机交互界面[20]。使用传统的文本语言编程,人机交互界面通常需要开发者事先在图纸上画出原型。LabVIEW在这方面比其他种类的编程语言更好,由于图像化编程做的非常成熟。由于数据库中包含有大量现成的函数,界面设计变得非常方便。有些软件,人机界面设计的非常友好,非常便捷,让人感到非常舒适。但漂亮视觉感不能作为评判的唯一标准,一个人机交互界面如果能更好的完成它的交互功能则可以说它是一个好的界面。用户可以通过前面板输入你已经得到的数据,交由程序自动处理;用户也可以通过前面板得到程序处理分析后的数据。最后才是界面的美观程度。做到这些才能算是一个优秀上档次的人机交互界面:安排合理,画面简洁,运行流畅,通俗易懂,一致性和合理性。3.5本章小结本章主要介绍了LabVIEW的基本使用方法,并且通过对比G语言和其他编程语言指出了G语言的编程方法和注意点,为下文要设计的虚拟仪器奠定基础。第四章基于NImyDAQ的数据采集系统本节主要介绍了基于NImyDAQ所设计的几种典型的数据采集系统,如虚拟数字电压表,连续信号采集,简单的边沿计数,脉冲宽度测量以及连续脉冲产生。下面将做详细的介绍。4.1虚拟数字电压表在本文设计中,数字电压表的设计运用了现在比较流行的虚拟仪器编程技术,使其突破了传统发的禁锢,缩小了系统的提及,提高了系统执行的效率,大幅提升了测量的可信度。4.1.1电压表的前面板布置虚拟电压表的前面板如图4-1所示。左边一个通道选择框,右边是模拟电压表的量程等。图4-1电压表前面板布置4.1.2电压表的程序框图数据采集可和LabVIEW两者结合设计的数字电压表具有测量直流电压和交流电压的能力,数字电压表的设计原理如下图4-2所示。电压-时间变换型原理是指测量时将被测电压值转换为时间间隔△t,电压越大,△t越大,然后按△t大小控制定时脉冲进行计数,其计数值即为电压值。电压-时间变换型又称为V-T型或斜坡电压式。图4-2电压表程序框图展示4.1.3测试过程1.用AO0通道的输出电作为测试源信号:在MAX中的myDAQ图表上点击右键,选择测试面板,此时会弹出测试面板对话框。选择模拟输出选项卡。设置输出值为3V到5V,然后点击刷新按钮。2.在前面板中选择物理通道为Dev/1ai0,然后运行程序。3.在测试面板上改变AO0通道的输出值,每次改变后都要点击刷新,同时观察模拟输入值变化。4.1.4测试结果测试结果如下图4-3所示,在测试面板中,我们选择不同的输出值,数字电压表的指针也会指向对应的值。图4-3测试结果4.2连续信号采集这个数据采集系统通过使用DAQmxAPI采集信号,执行连续的硬件定时信号采集。4.2.1程序框图的设计连续信号采集程序框图如下图4-4所示,DAQmx创建虚拟通道的多态选择器应选择模拟输入电压,DAQmx的多态选择器应选择采样时钟,并设置常量为连续采样。在循环内放置一个等待函数,等待时间先设置为1ms,用模拟将来可能在循环中对读取数据的处理等操作所需要的时间。图4-4连续信号采集的程序框图4.2.2系统前面板的布置连续信号采集前面板如图4-5所示,我们可以看到前面板中物理通道选择框,采样速率选择框,右边是采样波形的显示器。图4-5连续信号采集前面板布置4.2.3测试过程1.打开NIELVISmx的FGEN软面板,产生10kHz的正弦波形〔注意signalroute选择通过Prototypingboard。2.将编写好的VI前面板控件中的物理通道设置为Dev1/ai0〔假设已在MAX软件中将ELVIS的逻辑名命名为Dev1,采样率设置为100000,运行VI。3.观察每通道可用采样显示,如果采集的速度大于读取的速度,缓冲区会逐步填满并最终溢出。观察降低采样率或增加循环等待时间的影响。4.2.4测试结果测试结果如下图4-6所示,当采样速率设置为1000时,采样波形为一正弦波,接近原信号波形。图4-6测试结果展示4.3简单的边沿计数4.3.1程序框图的设计边沿计数的程序框图如图4-7所示,可以看出,我们使用的第一个函数节点是创建虚拟通道节点,在虚拟通道函数中,首先要选择我们想使用的计数器,然后启动任务函数负责采集任务的启动,不仅仅是计数器,其他类型的采集采用同样的启动任务函数,在循环中,我们通过软件设置时间间隔,上面的例子中,每100毫秒读取一次计数器的当前值。图4-7简单边沿技术的程序框图4.3.2系统前面板的布置边沿计数的前面板如图4-8所示,有通道选择选框,下面有初始计数次数,同时我们可以选择计数方向:升值计数或者是降值计数。在面板的右边显示最终的计数个数。图4-8边沿计数的前面板布置4.3.3测试过程1.用ELVIS的FGEN软面板产生一个TTL方波信号作为测试的计数源信号:打开信号发生器〔FGEN软面板,点击方波以产生方波信号,频率设置为1Hz,幅度设置为5V,DCOffset设置为2.5V,其他参数不变,点击Run按钮运行。2.在LabVIEW程序前面板上的计数器通道设置为Dev1/ctr0〔如果在MAX中配置的设备名不是"Dev1",则选择其他相应的设备名,然后运行程序,应该可以观察到前面板计数控件的值每秒钟加1。3.可改变FGEN产生的方波信号的频率,观察计数值变化速度的情况。4.3.4测试结果测试结果如图4-9所示,通过自带的函数发生器,产生频率是1HZ的正弦波,运行程序,我们可以看到前面板计数控件的值每秒钟增加1。图4-9边沿计数测试结果和函数发生器4.4脉冲宽度测量利用自带的计数器,通过LabVIEW编程测量单个脉冲的脉宽。4.4.1程序框图的设计脉冲宽度测量如图4-10所示,流程为:配置虚拟通道、读取计数器值和清除任务。在配置虚拟通道VI中,需要选择CI脉冲宽度。因为一个计数器就可以完成单脉宽测量,因此可以选择不同的计数器,这也可以通过选择不同的物理通道配置。图4-10脉冲宽度测量的程序框图4.4.2系统前面板布置脉冲宽度测量的前面板如图4-11所示。在该前面板中,我们可以看到有通道选择选框,同时可以选择上升沿计数或者下降沿技术两种方法,在前面板的右边,有脉冲宽度显示框,显示要测的脉冲宽度。图4-11脉冲宽度测量前面板布置4.4.3测试过程用函数发生器产生待测脉冲源:打开ELVIS的函数发生器〔FGEN软面板,点击方波以产生TTL方波信号。其中频率设置为10Hz,占空比为20%,幅度为5Vpp,DCOffset为2.5V,点击Run按钮运行。1.将编写好的VI前面板控件中的物理通道设置为Dev1/ctr0,开始边沿设置为上升。2.设置脉冲的高电平持续时间,单位为秒,最大最小值分别为0.1和0.000001,运行VI,应该可以观察到脉冲宽度的测量值为0.02秒[9]。改变FGEN产生的信号频率或占空比,可以再次运行VI观察测试结果的变化。4.4.4测试结果测试结果如图4-12所示。用函数发生器产生10HZ的方波,在前面板中,我们可以看到需要测量的脉冲宽度为0.02。图4-12测试结果和函数发生器4.5连续脉冲序列产生利用软件库中自带的计数器同时编写LabVIEW程序,可以连续的产生方波序列。4.5.1程序框图的设计连续脉冲产生序列的程序框图如图4-13所示,首先通过一个DAQmx驱动来产生所需要的连续脉冲。同时,我们可以配置该脉冲的占空比,频率,初始延迟等基本参数。然后把该任务送到DAQmx定时器中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《施工人员培训》课件
- 保洁合同补充协议书范本
- 班组长消防安全知识培训
- 《外贸单证资料》课件
- 《科学小品文的学习》课件
- 2024年度地铁食堂承包经营合同
- 委托书合同范文
- 2024年度工程内部承包违约责任处理协议2篇
- 2024年度高速公路车辆保险合同:全路网
- 货车合伙经营协议书
- 化工仪表基础培训调节阀
- 视觉设计行业SWOT分析报告-第2篇
- 伪装隐身技术
- 【上教版九年级化学上册】《化学反应中的质量关系》示范公开课教案
- 富宁县方鑫黄金矿业有限责任公司毛姐山金矿矿山地质环境保护与土地复垦方案
- 1000个好听的男孩英文名字大全
- 《中小学美术教学论》第五章 中小学美术教学的过程
- (57)-25.2.1五味子与五倍子
- 企业文化、廉政考试
- 生态文旅休闲片区控制性详细规划
- 04SG518-3 门式刚架轻型房屋钢结构(有吊车)
评论
0/150
提交评论