毕业设计(论文)-基于LabVIEW的虚拟频率计设计(71页).doc
-毕业设计(论文)-基于LabVIEW的虚拟频率计设计-第 61 页摘 要虚拟仪器是在计算机基础上通过增加相关硬件和软件构建而成的、具有可视化界面的仪器,它融合了测试理论、仪器原理和技术、计算机接口技术、高速总线技术以及图形软件编程技术等于一体,利用计算机强大的数字的处理能力来实现仪器的诸多功能,打破了传统仪器的框架,形成了一种新的仪器模式。文章分析了虚拟仪器技术的现状及今后的发展趋势,介绍了虚拟仪器、LabVIEW的相关知识。叙述了虚拟频率计的理论基础,阐述了过零计数法测频原理和线性插值法原理。设计了过零计数法测频的程序框图,介绍了DAQmx驱动软件的编程方法,创建仿真设备,排除波形过零点附近的波动干扰。用仿真设备产生模拟波形并验证过零计数法测频的程序框图的正确性。介绍了数据采集理论,设计了USB2832数据采集卡驱动层程序,完成了频率测量和误差分析,验证了奈奎斯特定理。关键词:虚拟仪器,LabVIEW,过零计数法,线性插值法,数据采集卡AbstractVirtual Instrument is based on computer related hardware and software by increasing the building made with a visual interface of the instrument, which combines the test theory, theory and technology equipment, computer interface technology, high-speed bus technology and graphics software programming technology. The use of powerful digital computer processing power to achieve the instrument's many features, the traditional instruments of the framework is broken, the formation of a new instrument model is established. The Virtual Instrument technology present conditionand and future development trend are firstly analyzed in this paper, the knowledge of related virtual instrument and LabVIEW are described. The theoretical basis of virtual frequency meter are elaborated,the working principles of zero-crossing counting method and linear interpolation method are elaborated. The flow diagram of virtual frequency meter is designed.The programming method of the driver software related DAQmx are described, the simulation equipment is established, the fluctuations of waveform are excluded. analog waveform is generated by simulation equipment, The flow diagram of virtual frequency meter is verified. The theoretical data collection is described,the driver diagram of USB2832 data acquisition card is designed. Frequency measurement and error analysis are completed, Nyquist theorem is verified.Key Words: Virtual Instrument, LabVIEW ,zero-crossing counting method, linear interpolation, data acquisition card目 录第1章 引言11.1 测控技术的发展现状11.2 虚拟仪器的概述21.2.1 虚拟仪器的概念21.2.2 虚拟仪器的特点及优势31.2.3 虚拟仪器技术的发展趋势41.2.4 虚拟仪器技术在教学实验中的应用前景41.3 论文主要内容5第2章 过零计数法测频原理与系统设计62.1过零计数法测频原理62.2 线性插值法82.3 虚拟频率计系统设计102.4小结11第3章 应用层程序设计与仿真123.1 程序模块化设计概述123.1.1 程序设计的模块化原则123.1.2 软件系统的模块化设计原则133.2 虚拟频率计应用层程序设计143.2.1 LabVIEW编程语言的组成部分143.2.2 程序设计流程图153.2.3 应用层程序设计163.2.3.1 LabVIEW名词和函数163.2.3.1 应用层程序设计183.3 DAQmx仿真193.3.1 NI数据采集卡的驱动软件193.3.2 DAQmx驱动函数213.3.2.1 DAQmx驱动函数介绍213.2.3.2 DAQmx驱动函数设计243.3.2 过零点附近的波动处理263.4仿真结果283.5 本章小结29第4章 数据采集304.1 数据采集理论304.1.1 数据采集技术概论304.1.1.1 A/D转换304.1.1.2 采样定理314.1.2 采集系统的一般组成及各部分功能描述324.1.3 传感器344.1.4 输入信号的类型344.2 数据采集卡364.2.1 数据采集卡的性能指标364.2.2 数据采集卡的组成374.2.3 USB2832数据采集卡384.3 37芯D端子板394.4 AD模拟量输入的信号连接方法404.5 数据采集过程424.5.1 非空查询方式获取AD数据424.5.2 数据采集VI的层次结构474.5.3 数据采集卡的连接与检测484.6 频率测量494.7 误差分析514.8 本章小结52第5章 总结与展望535.1 全文总结535.2 展望53参考文献55致 谢57外文资料原文58外文资料译文65第1章 引言1.1 测控技术的发展现状测控技术在现代科学技术、工业生产和国防科技等诸多领域中应用十分广泛,它的现代化已被认为是科学技术、国防现代化的重要条件和明显标志。20世纪70年代以来,计算机、微电子等技术迅猛发展,在其推动下,测控仪器与技术不断进步,相继诞生了智能仪器、PC仪器、VXI仪器、虚拟仪器及互换性虚拟仪器等微机化仪器及其自动测控系统,计算机与现代化仪器设备间的界限日渐模糊,测控领域和范围不断拓宽1。近年来,以计算机为中心、以网络为核心的网络化测控技术与网络化测控系统得到越来越多的应用,尤其是在航空航天等国防科技领域。网络化的测控系统大体上由两部分组成:测控终端与传输介质,随着个人计算机的高速发展,测控终端的位置越来越多的被个人计算机所占据,其中,软件系统是计算机系统的核心,甚至是整个测控系统的灵魂,应用于测控领域的软件系统称为监控软件。传输介质组成的通信网络主要完成数据的通信与采集,这种数据采集系统是整个测控系统的主体,是完成测控任务的主力。这种“监控软件数据采集系统”构架的测控系统结构在很多领域都得到了广泛的应用,并形成了一套完整的理论2。随着科学技术的发展,在我国国防、通信、航天、航空、气象、环境监测、制造等领域,要求测控和处理的信息量越来越大、速度越来越快。同时测控对象的空间位置日益分散,测控任务日益复杂,测控系统日益庞大,因此,提出了测控现场化、远程化、网络化的要求。传统的单机仪器己远远不能适应大数量、高质量的信息采集要求,产生了由计算机控制的测控系统,系统内单元通过各种总线互连,进行信息的传输3。 网络化的测控技术兴起于国外,是在计算机网络技术、通信技术高速发展,以及对大容量分布式测控的大量需求背景下发展起来。主要可分为以下几个阶段。 第一阶段: 起始于20世纪70年代通用仪器总线(GPIB)的出现,GPIB实现了计算机与测控系统的首次结合,使得测量仪器从独立的手工操作单台仪器开始走向计算机控制的多台仪器的测控系统。此阶段是网络化测控系统的雏形与起始阶段。 第二阶段: 起始于20世纪80年代VXI标准化仪器总线的出现,VXI系统可以将大型计算机昂贵的外设、VXI设备、通信线路等硬件资源以及大型数据库程序等软件资源纳入网络,使得这些宝贵的资源得以共享。此阶段是网络化测控系统的初步发展阶段。 第三阶段: 随着技术的发展,现场总线技术的出现带动了现场总线控制系统(FCS)的迅速发展,使得可以在一个工厂范围内通过总线将成千上万个智能传感器/变送器等智能化的仪表组成一个网络化测控仪器系统,此阶段是网络化测控系统的快速发展阶段。 第四阶段: 在对现代化要求极高的领域,传统的测控系统已经逐渐无法满足用户的要求。许多部门或大型企业迫切要求构建基于Internet或大型局域网的网络化测控系统,即通常所说的分布式测控网络,此阶段是网络化测控系统发展的成熟阶段4。1.2 虚拟仪器的概述1.2.1 虚拟仪器的概念 虚拟仪器的概念是由美国国家仪器公司(National Instruments)最先提出的5。所谓虚拟仪器是基于计算机的软硬件测试平台,它可代替传统的测量仪器,如示波器、逻辑分析仪、信号发生器、频谱分析仪等;可集成于自动控制、工业控制系统之中;可自由构建成专有仪器系统。虚拟仪器是智能仪器之后的新一代测量仪器。 虚拟仪器的核心技术思想就是“软件即是仪器” 。该技术把仪器分为计算机、仪器硬件和应用软件三部分。虚拟仪器以通用计算机和配备标准数字接口的测量仪器(包括GPIB、RS-232等传统仪器以及新型的VXI模块化仪器)为基础,将仪器硬件连接到各种计算机平台上,直接利用计算机丰富的软硬件资源,将计算机硬件(处理器、存储器、显示器)和测量仪器(频率计、示波器、信号源)等硬件资源与计算机软件资源(包括数据的处理、控制、分析和表达、过程通讯以及图形用户界面)有机的结合起来6。1.2.2 虚拟仪器的特点及优势 虚拟仪器是基于计算机的功能化硬件模块和计算机软件构成的电子测试仪器,而软件是虚拟仪器的核心。如图2-1所示,其中软件的基础部分是设备驱动软件,而这些标准的仪器驱动软件使得系统的开发与仪器的硬件变化无关。这是虚拟仪器最大的优点之一,有了这一点,仪器的开发和换代时间将大大缩短7。虚拟仪器中应用程序将可选硬件(如GPIB,VXI,RS-232,DAQ板)和可重复用库函数等软件结合在一起,实现了仪器模块间的通信、定时与触发。源代码库函数为用户构造自己的虚拟仪器(VI)系统提供了基本的软件模块。由于VI的模块化、开放性和灵活性,以及软件是关键的特点,当用户的测试要求变化时可以方便地由用户自己来增减硬、软件模块,或重新配置现有系统以满足新的测试要求8。图2-1 虚拟仪器的开发框图虚拟仪器技术的优势在于可由用户定义自己的专用仪器系统,且功能灵活,很容易构建,所以应用面极为广泛。虚拟仪器技术十分符合国际上流行的“硬件软件化”的发展趋势,因而常被称作“软件仪器” 。它功能强大,可实现示波器、逻辑分析仪、频谱仪、信号发生器等多种普通仪器全部功能,配以专用探头和软件还可检测特定系统的参数,如汽车发动机参数、汽油标号、炉窑温度、血液脉搏波、心电参数等多种数据;它操作灵活,完全图形化界面,风格简约,符合传统设备的使用习惯,用户不经培训即可迅速掌握操作规程。1.2.3 虚拟仪器技术的发展趋势虚拟仪器是微电子、通信、计算机等现代科学技术高速发展的产物。自从1785年库仑发明静电扭秤,1834年哈里斯提出静电电表结构以来,电测仪表和电子仪器随相关技术的进步、仪器仪表元器件质量的提高和测量理论方法的改进得到飞速发展。伴随微电子技术、计算机技术、网络技术的迅速发展及在电工电子测量技术领域的应用,测量仪器也不断进步和发展,出现了智能仪器9。智能仪器是将微机置于仪器内部,使仪器具有控制、存储、运算、逻辑判断及自动操作等智能特点,并在测量准确度、灵敏度、可靠性、自动化程度、运用能力及解决测量技术问题的深度和广度等方面都有明显的进步。这种内置微处理器的仪器,既能进行自动测试又能完成数据处理,可取代部分的脑力劳动。随着电子技术、微计算机技术的发展,智能仪器的智能水平不断提高。 基于虚拟仪器技术的数据采集系统的提出在一定程度上解决了传统数据采集所面临的问题,虚拟仪器数据采集系统成为当今数据采集系统发展的重要方向。本文正是在虚拟仪器技术的基础上对多通道数据采集系统进行了设计,实现多路信号的采集,并对实验数据进行实时显示、记录、分析处理。 虚拟仪器的出现是仪器发展史上的一场革命,代表着仪器发展的最新趋势和新方向,并且是信息技术的重要领域扩充,对科学技术的发展和工业生产将产生不可估量的影响10。1.2.4 虚拟仪器技术在教学实验中的应用前景在电工及机械电子类课程中,实验是一种重要的教学手段。学生通过实验可以加深对所学知识的理解,增强学习的兴趣,提高动手能力,锻炼在实践中发现问题、分析问题、解决问题的能力。但是,近年来高校的大幅度扩招,学生人数急剧增加,实验室的设备和规模已远远不能满足教学的需要,实验室常规设备多已老化,有的技术落后有待更换,同时常规实验设备的价格高,用途单一,大量更换所需的经费高。又由于基础实验室面向的专业多、任务重,实验室也仅能按照大纲要求做一些简单的验证实验,学生无法熟悉仪器仪表的使用,更很少有机会做设计性实验,这对调动学生学习的积极性,培养创造精神,加强实践动手能力都十分不利。虚拟仪器技术的出现不仅在测控领域掀起了一场革命,同时也给传的教学实验研究带来了巨大的变化。基于计算机的自动化实验室大大提高了研究人员的工作效率并改进了学生的学习方式。与以往费时的采集数据的过程不同,现在,老师和同学都可以集中精力分析结果并得出结论,学生们可以将大部分时间花在实验工作的执行上,而非实验系统设备的搭建中。随着科学技术的不断发展以及相应学科高等教育课程教学内容的更新,为了改善实验条件、改革实验教学方法、更新实验教学内容、提高实验教学课程的开设水平,把虚拟仪器引入实验教学已成为一种必然趋势。1.3 论文主要内容全文共分为五章,介绍了虚拟频率计的设计原理。运用LabVIEW语言编写了虚拟频率计的应用层程序和驱动层程序,运用DAQmx仿真设备对该虚拟频率计进行仿真分析,连接数据采集卡,进行测量和误差分析。第一章介绍了测控技术发展现状和虚拟仪器技术的概念、特点和优势以及它的发展趋势。第二章阐述了虚拟频率计的设计原理,包括过零计数法测频原理和线性插值法原理。第三章用LabVIEW语言编写了应用层函数,完成了过零计数法测量频率的程序框图的设计。编写了DAQmx驱动层函数,创建了DAQmx仿真设备,完成了仿真分析。第四章编写了数据采集程序,完成了频率测量和误差分析。第五章为全文的的总结和展望。第2章 过零计数法测频原理与系统设计2.1过零计数法测频原理频率是单位时间内的振动次数。振动既包括机械振动,也包括电信号的振动,其数学表达式为 (2-1)式中振动频率;振动次数;产生振动所需要的时间。不含直流分量的正弦波每个周期内都应有两个过零点。因此,可以根据过零点次数来判断振动次数。由于采样时间间隔是由数据采集卡决定的,是一个确定值,所以可以得到正弦波的周期为;从而可以计算出频率11。确定过零点有不同的方法:1)确定正过零点 对被测信号进行数据采集,得到被测信号序列为。我们把该信号序列中上次采样为负值、本次采样为正值的点记为正过零点,两个正过零点的时间间隔为: (2-2) 式中 采样时间隔; 两次过零点时间内采样的次数; 两个正过零点之间的时间间隔,也即 (2-3)2)线性插值确定过零点 在相邻两个采样时刻的采样值由负变正或由正变负时,在之间存在信号的过零点,如图2-1所示。根据线性插值公式可求得过零点的时间坐标值为: (2-4) 式中:为时刻的采样值;为时刻的采样值。同理,可求出第2个过零点,第3个过零点的计算公式为: (2-5)式中: 为时刻的采样值;为时刻的采样值。 图2-1 用线性插值法求过零点于是可得信号的频率计算式为 (2-6)将式(2-4),(2-5)代入式(2-6)整理得 (2-7)式中: 为采样频率; 为采样间隔; 为在时间内的采样数。 从式(2-7)与(2-2)比较来看,当认为时,式(2-7)与式(2-2)完全相同。2.2 线性插值法 在实际问题及科学研究中,因素之间往往存在着函数关系,然而,这种关系经常很难有明显的解析表达,通常只是由观察与测试得到一些离散数值。有时,即使 给出了解析表达式,却由于表达式过于复杂,不仅使用不便,而且不易于进行计算与理论分析。解决这类问题的方法有两种:一种是插值法,另一种是拟合法。插值法是一种古老的数学方法,它来自生产实践,早在一千多年前,我国科学家在研究历法上就应用了线性插值与二次插值,但它的基本理论却是在微积分产生之后才逐渐完善的,其应用也日益增多,特别是在计算机软件中,许多库函数,如, 等的计算实际上归结于它的逼近函数的计算。逼近函数一般为只含有算术运算的简单函数,如多项式、有理分式(即多项式的商)。在工程实际问题当中,我们也经常会碰到诸如此类的函数值计算问题。被计算的函数有时不容易直接计算,如表达式过于复杂或者只能通过某种手段获取该函数在某些点处的函数值信息或者导数值信息等。因此,我们希望能用一个简单函数逼近被计算函数,然后用该简单函数的函数值近似替代被计算函数的函数值。这种方法就叫插值逼近或者插值法。插值法要求给出函数的一个函数的函数表,然后选定一种简单的函数形式,比如多项式、分段线性函数及三角多项式等,通过已知的函数表来确定一个简单的函数作为的近似,概括地说,就是用简单函数为离散数组建立连续模型12。许多实际问题都用函数来表示内在规律的数量关系,其中相当一部分函数是通过实验或观测得到的。虽然在上是存在的,有的还是连续的,但只能给出上的一系列点的函数值,这只是一张函数表,有的函数虽然有解析表达式,但由于计算复杂,使用不方便,通常也造一个函数表,如大家熟悉的三角函数表、对数表等。为了研究函数的变化规律,往往需要求出不在表上的函数值。因此,我们希望可以根据给定的函数表做一个既能反映函数的特性,又便于计算的简单函数。用近似。通常选一类简单的函数作为,并使对成立。这样确定下来的就是我们希望的插值函数,此即为插值法。图2-2 线性插值法线性插值是数学、计算机图形学等领域广泛使用的一种简单插值方法,如图2-2所示。假设我们已知坐标与,要得到区间内某一位置在直线上的值。根据图中所示,我们得到假设方程两边的值为,那么这个值就是插值系数从到的距离与从到距离的比值。由于值已知,所以可以从公式得到的值 (2-8)同样, (2-9)这样,在代数上就可以表示成为: (2-10)或者: (2-11)这样通过就可以直接得到。实际上,即使不在到之间并且也不是介于0到1之间,这个公式也是成立的。在这种情况下,这种方法叫作线性外插。已知求的过程与以上过程相同,只是与要进行交换。2.3 虚拟频率计系统设计1数据采集卡的选择NI的数据采集卡价格昂贵,不适合在教学实践中推广,所以本次设计选择非NI的数据采集卡。根据数据采集卡的采样频率、采样方法、分辨率等性能指标,选择合适的数据采集卡。2数据采集卡驱动程序设计根据选择的数据采集卡,编写数据采集卡驱动程序,使数据采集卡与LabVIEW连接。3频率计算程序设计数据采集卡与计算机相连,启动数据采集卡,进行数据采集、A/D转换后将得到的一维数组存入指定存储单元,在LabVIEW中编写程序,从得到的一维数组中确认第1,3过零点前后的采样值。设计原理中提供的方法,在LabVIEW中编写计算频率的程序,在前面板上显示测量结果。程序流程图设计如图2-3所示。图2-3 虚拟频率计主程序流程图2.4小结本章是本论文中重要的一章,它展现了作者对整个题目研究的核心内容,是基于前一章的理论分析后,在仿真软件中实践出的结果,并进行了详细的阐述和分析,主要包括了以下两个内容:1)过零计数法测频原理。2)线性插值法原理。第3章 应用层程序设计与仿真软件是虚拟仪器的关键。设计一个虚拟仪器系统,在硬件平台确定之后,就可以通过设计不同的软件,实现不同的仪器功能。在设计、实现虚拟仪器的软件系统时,需要考虑众多因素,如硬件需求、计算机硬件、操作系统;软件是否建立在开放的结构上,是否需要编程经验,利用此软件程序是否能在不同的计算机平台上移植,将来能否方便的扩展虚拟仪器的功能等。由于选用专用的开发软件,必须具有一定的仪器以及数据采集设备配合使用13。3.1 程序模块化设计概述数据采集系统的性能在很大程度上取决于其应用软件的研究与开发,所以在明确了系统设计目标之后,应该采用好的程序开发方法,如结构化设计方法、模块化思想、多线程以及软件系统的评价标准等等。3.1.1 程序设计的模块化原则 模块化结构是所有设计良好的软件系统的基本特点,任何一个大的程序系统,总是由若干功能相对独立的模块组成。好的软件结构应体现自顶向下的控制方式,模块之间的控制表现为统帅和从属的关系。信息抽象与信息隐含是模块的基本特征。模块(Module)实际上反映了数据(Data)与过程(Process)的抽象。在模块化问题求解时,在最高抽象级可以采用面向问题的环境语言的抽象术语进行描述;而在较低抽象级,则可采用过程性术语。模块化的概念加上逐步求精的办法,就把面向问题的术语和面向实现的术语两者结合起来。 模块独立性有两个定性的标准度量:即块内联系(内聚)与块间联系(耦合)。块间联系是指模块之间的联系,块间联系越小,模块独立性越高。块内联系是指模块内部各部分(语句与语句段)之间的联系。一个模块的块内联系大,模块独立性会提高。好的模块结构,块间联系应尽可能小,块内联系应尽可能大14。3.1.2 软件系统的模块化设计原则 为使研制出的软件具有良好的可靠性、易维护性、易扩充性及易装卸性,软件设计应遵循规范化的模块化设计原则。 1)自顶向下逐步求精的设计方法 软件设计往往在开始时不了解问题的全部细节,只能对问题做出全局性的决策,即设计表征解决问题一般策略的抽象算法。对抽象算法做进一步求精,进入下一层抽象。在求精过程的每一步,抽象概念(语句或数据)都被精细化。 2)根据逻辑功能划分物理模块 模块的分解:消除重复的功能部分,使得模块的块内联系较高,块间联系较低。 模块的合并。 模块的复制。 3)模块的作用范围应处在模块的控制范围之内 模块的作用范围是指模块内判定影响的范围。只要某模块中含有依赖于某种判定操作,则该模块就处于该判定的作用范围之内。 4)依据逻辑功能确定模块之间的调用关系 模块之间的调用与被调用,决定于模块各自的逻辑功能,因而对模块的扇入扇出并无加以限制的必要。一般来讲,底层模块的扇入较高,顶层模块的扇出较高。 5)模块接口应保持简明 降低模块接口的复杂性,是模块设计中必须考虑的问题。保持模块接口的简明,一方面须减少模块间传递的信息量,更重要的是使所传递的必要信息具有明确的逻辑含义。 6)模块应保持单入口性质 单入口模块,易于理解。由于副作用的减少,可以降低错误的发生率。模块的出口可以有多个,但均应具有明确的逻辑含义。 7)模块结构增加中间判断层次,提高可扩充性3.2 虚拟频率计应用层程序设计3.2.1 LabVIEW编程语言的组成部分所有的LabVIEW应用程序,即虚拟仪器(VI),它包括前面板(Front Panel)、流程图(Block Diagram)以及图标/连结器(Icon/Connector)三部分15。1)前面板前面板是VI的监护室用户接口,与真实物理仪器面板相似,前面板可以包含旋钮、刻度盘、开关、图表和其他界面工具,允许用户通过键盘或者鼠标获取数据显示结果。2)流程图流程图提供VI的图形化源程序。在流程图中对VI编程,以控制和操纵定义在前面板上的输入和输出功能。流程图中包括前面板上的控件连线端子,还有一些前面板上没有,但编程必须有的东西,例如函数、结构和连线等。如果将VI与传统仪器相比较,那么前面板上的控件对应的就是传统仪器上的按钮、显示屏等控件,而流程图上的连线端子相当于传统仪器箱内的硬件电路。在许多情况下,使用VI可以仿真传统仪器,不仅在屏幕上出现一个惟标准仪器面板,而且其功能也与传统标准仪器相差无几。这种设计思想的优点体现在两方面: 类似流程图的设计思想很容易被工程人员接受和掌握,特别是那些没有很多程序设计经验的工程人员。 设计的思路和运行过程清晰而且直观。如通过使用数据探针、高亮执行调试等多种方法,程序以较慢的速度运行,使没有执行的代码显示灰色,执行后的代码会高亮显示,同时在线显示数据流线上的数据值,完全跟踪数据流的运行。3)图标/连接设计这部分的设计突出体现了虚拟仪器模块化程序设计的思想。在设计大型自动检测系统时一步完成一个复杂系统的设计是相当有难度的。而在LabVIEW中提供的图标/连接工具正是为实现模块化设计而准备的。可把一个复杂自动检测系统分为多个子系统,都可完成一定的功能。这样设计的优点体现在如下几方面: 把一个复杂自动检测系统分为多个子系统,程序设计思路清晰,给设计者调试程序带来了诸多的方便。同时也对于将来系统的维护提供了便利。 一个复杂自动检测系统分为多个子系统,每一个子系统都是一个完整的功能模块,这样把测试功能细节化,便于实现软件复用,大大节省软件研发周期,提高系统设计的可靠性。 3.2.2 程序设计流程图 根据实验原理中用线性插值法确定过零点的方法,先要找到采集到的数据中离由正到负过零点前后两个点。将采集到的数组送到For循环中,逐个比较其与零的大小关系,如果第个数大于零,那么再比较第个数,如果第个数小于或等于零,则满足条件,将存入新的数组,循环完成时可得到由组成的一个新数组。用该数组中的数索引采集到的数组,就可以找到数据中由正到负过零点前后两个采样点,根据式(2-7)编写频率计算程序,得到信号源的频率。确定过由正到负过零点前后两个采样点程序流程图程序流程图如图3-1所示。图3-1 确定过由正到负过零点前后两个采样点程序流程图3.2.3 应用层程序设计3.2.3.1 LabVIEW名词和函数程序设计之前,先介绍LabVIEW的几个名词和函数。1)数组 在LabVIEW中,数组中的元素是同一类型的数据集合,而且必须都是控件或者都是指示控件。这些数据的类型可以是数值型、布尔型、字符串型等。一个数组可以是一维、二维或者多维,每维最多可以有个元素。数组的索引是从0开始的,范围介于0到之间,其中是数组中元素的个数。2)For循环For循环将连接到总数N接线端的值作为执行次数的子程序框图。计数接线端可提供当前的循环总数,取值范围是0到。创建For循环后,可使用移位寄存器将值从上一个循环传递到下一个循环。如将数组连接到For循环,启用自动索引可读取和处理数组中的各个元素。也可配置For循环使其返回由循环生成的值所组成的数组,启用启用自动索引。循环框外面的数据可以通过数据通道进入循环框内,同样,循环框内的数据也可以通过数据通道传送到循环框外。数据通道是用连线工具连接循环框内外的数据端口时,在框架上自动形成方形通道图标,图标空心表明此时数据通道具有自动索引功能,实心图标不能索引,For循环的数据通道默认为能自动索16。本次设计中将采集到的数组送入For循环进行处理。For循环结构如图3-2所示。 图3-2 For循环结构 图3-3 移位寄存器函数3)移位寄存器 移位寄存器可用于将上一次循环的值传递至下一次循环。移位寄存器以一对接线端的形式出现,分别位于循环两侧的边框上,位置相对。右侧接线端含有一个向上的箭头,用于存储每次循环结束时的数据。LabVIEW将数据从移位寄存器右侧接线端传递到左侧接线端。循环将使用左侧接线端的数据作为下一此循环的初始值。该过程在所有循环执行完毕后结束。循环执行后,右侧接线端将返回移位寄存器保存的值。移位寄存器可以传递任何数据类型,并和与其连接的第一个对象的数据类型自动保持一致。连接到各个移位寄存器接线端的数据必须属于同一种数据类型。循环中可添加多个移位寄存器。如循环中的多个操作都需使用之上一次循环的值,可以通过多个移位寄存器保存结构中不同操作的数据值。本次设计中移位寄存器传递的是一个初始化的数组,将满足条件的存入到该数组一次循环时,将该数组传递到左侧接线端,作为下一次循环的初始值。移位寄存器函数如图3-3所示。 4)条件结构条件结构包括一个或多个子程序框图,或分支,结构执行时,仅有一个子程序框图或分支在执行。连接至选择器接线端的值可以是布尔、字符串、整数,或枚举类型,用于确定要执行的分支。右键单击结构边框,可添加或删除分支。可使用标签工具来输入条件选择器标签的值,并配置每个分支处理的值。当控制条件为布尔型数值时,有Ture和False两种选择框架,这是LabVIEW默认的选择框架方式。当控制条件为数值型时,选择器标签值为整数0、1、2,选择框架的个数可根据实际需要确定,最多可包含个条件。本次设计中如果有满足条件的i则将其存入数组中,如果没有,进行下一次循环。条件结构面板如图3-4所示。 图3-4 条件结构 图3-5 初始化数组5)初始化数组该函数的作用是创建维数组,其中的每个元素都被初始化为“元素”的值。通过定位工具可调整函数的大小,增加输出数组的维数。连线板可显示该多态函数的默认数据类型。“元素”是用于初始化“初始化的数组”中所有元素的值。“元素”可以是任意类型的标量数据。“维数大小”须为数值。如维数大小为0,函数将创建空数组。维数组的“维数大小”接线端必须为。“初始化的数组”的数据类型与“元素”一致17。本次设计中,初始化一个数组,用来存放满足条件的。初始化数组函数面板如图3-5所示。6)索引数组索引数组函数通过设定索引值得到 维数组的元素或子数组,该函数功能为访问数组中的某个元素或子数组。数组是一个一维数组,索引功能为设定某一具体数值,索引后的结果.如果是数组的某一元素。如果数组是一个二维数组,则索引功能增添为索引行和索引列,索引后的结果是数组的某一子数组。本次设计中,用该函数来索引找到的离过零点前后两个点后计算频率。索引数组函数面板如图3-6所示。图3-6 索引数组3.2.3.1 应用层程序设计根据程序流程图3-1,从数据采集卡中读取关于的一维数组,读取的采样数为个,将一维数组送入循环中求得满足条件的,所以循环次数为次。初始化一个一维数组,将满足条件的的索引存入该初始化的数组。这里用条件结构来判断是否满足条件,如果满足,将存入初始化的数组,不满足,则进行下一次循环。循环结束后得到一个关于的新的一维数组。确定过由正到负过零点前后两个采样点程序框图如图所示3-7所示。图3-7 确定过由正到负过零点前后两个采样点程序框图用关于的一维数组中两个连续的元素索引关于的一维数组,就得到了和,关于的一维数组中,的下一个数就是,的下一个数就是。为在时间内的采样数,关于的一维数组中两个连续的元素之间的差就是时间内的采样数。根据实验原理,采样频率由数据采集卡确定的,是一个已知的定量,此时如果根据公式(2-7)将采样频率直接代入计算,就可以得到正弦波的频率。频率计算程序框图如图3-8(a)所示。图3-8(a) 频率计算程序框图为了设计结果更加精确,这里将图3-8(a)的程序放入循环,可以计算多次求平均值。用“数组大小”函数求关于的一维数组的大小,用作循环次数。初始化一个数组,用来存放每次循环后计算得到的频率。这里用移位寄存器将关于频率的一维数组函数保留下来。最后用一维数组求和函数求关于频率的一维数组的元素的和,求平均值,得到频率。频率计算程序框图如图3-8(b)所示。图3-8(b) 频率计算程序框图3.3 DAQmx仿真3.3.1 NI数据采集卡的驱动软件在基于DAQ插卡的虚拟仪器系统中,驱动软件起着非常重要的作用。他将DAQ插卡和计算机有效的融合成为一个DAQ仪器系统,完整的实现了仪器的数据采集、分析处理和显示输出等三大功能。目前,大多数DAQ插卡生产商都向用户提供了驱动软件或驱动程序(驱动函数库),驱动程序将底层的、复杂的