虚拟仪器Labview简介一虚拟仪器的概念虚拟仪器(VirtualInstrument,缩写为VI)是基于计算机的仪器,是将仪器装入计算机,以通用的计算机硬件及操作系统为依托,实现各种仪器功能。虚拟仪器和传统仪器的基本结构的比较:传统仪器虚拟仪器关键是硬件关键是软件开发与维护的费用高开发与维护的费用低技术更新周期长技术更新周期短价格高价格低,并且可重复性与可配置性强生产商定义仪器功能用户定义仪器功能系统封闭、固定系统开放、灵活、与计算机的进步同步不易与其他设备连接极易与其他设备连接与传统仪器相比,虚拟仪器在智能化程序、处理能力、性能价格比、可操作性等方面都具有明显的技术优势,具体表现为:(1)智能化程度高,处理能力强。虚拟仪器的处理能力和智能化程度主要取决于仪器软件水平。用户完全可以根据实际应用需求,将先进的信号处理算法、人工智能技术和专家系统应用于仪器设计与集成,从而将智能仪器水平提高到一个新的层次。(3)可操作性强。虚拟仪器面板可由用户定义,针对不同应用可以设计不同的操作显示界面。使用计算机的多媒体处理能力可以使仪器操作变得更加直观、简便、易于理解,测量结果可以直接进入数据库系统或通过网络发送。测量完后还可打印,显示所需的报表或曲线,这些都使得仪器的可操作性大大提高。(2)复用性强,系统费用低。应用虚拟仪器思想,用相同的基本硬件可构造多种不同功能的测试分析仪器,如同一个高速数字采样器,可设计出数字示波器、逻辑分析仪、计数器等多种仪器。这样形成的测试仪器系统功能更灵活、系统费用更低。通过与计算机网络连接,还可实现虚拟仪器的分布式共享,更好地发挥仪器的使用价值。传统仪器虚拟仪器待测模拟信号信号处理前置预处理数据显示信号输入硬件电子系统A/D转换数字信号处理数据显示信号产生信号输出手动/模拟信号控制待测模拟信号输出模拟信号D/A转换计算机数字信号控制数字信号产生输出模拟信号ClassicalInstrumentVirtualInstrument(VI)计算机DAQ卡利用计算机强大、高效的数字信号处理和控制能力,配合高速高精度A/D、D/A转换卡,实现与传统专用仪器相同乃至更强的功能,组成虚拟仪器前置预处理对比应用举例一、工业测控二、时序分析三、系统仿真四、远程测量化工生产流量测控滤波器频响分析汽车引擎震动分析马路路灯照度模拟虚拟仪器的主要特点有:尽可能采用了通用的硬件,各种仪器的差异主要是软件;可充分发挥计算机的能力,有强大的数据处理功能,可以创造出功能更强的仪器;用户可以根据自己的需要定义和制造各种仪器。虚拟仪器实际上是一个按照仪器需求组织的数据采集系统。虚拟仪器的研究中涉及的基础理论主要有计算机数据采集和数字信号处理。目前在这一领域内,使用较为广泛的计算机语言是美国NI公司的LabVIEW。二LabVIEW简单介绍LabVIEW(LaboratoryVirtualinstrumentEngineering)是美国国家仪器公司(NationalInstruments,NI)开发的一种图形化的编程语言。图形化的程序语言,又称为“G”语言。使用这种语言编程时,基本上不写程序代码,取而代之的是流程图。它尽可能利用了技术人员、科学家、工程师所熟悉的术语、图标和概念,使编程简单直观。用LabVIEW做的示波器,与真实的示波器有着相同的功能LabVIEW和虚拟仪器在物理实验中的应用对学生进行LabVIEW和虚拟仪器的基本知识和技术的训练,有助于他们在将来的工作中掌握运用。将部分实验的传统测量方法改进为计算机自动化测量分析,使实验的效率大大提高,物理内容更加突出。通过适当配置接口,可以充分综合利用实验室现有的各种数字仪器仪表,以及用C++等系统开发的计算机数据测控系统。三,基础知识学习LabVIEW程序构成控制选项板功能介绍函数选项板功能介绍工具选项板功能介绍数据线、数据流和数据类型控制量与显示量1.LabVIEW程序构成:前面板窗口双击LabVIEW快捷图标,出现启动画面,单击其中的NewVI,打开一个新的LabVIEW程序,可以看到它由前面板(panel)和流程图(diagram)组成。前面板窗口是图形用户界面,也就是VI的虚拟仪器面板,相当于实际仪器的控制面板,它将用户和程序联系起来,是程序运行时显示和输入的交互窗口。如图所示的示波器的前面板,上有用户输入和显示输出两类对象,具体表现有开关、旋钮、图形以及其他控制(control)和显示对象(indicator)。流程图窗口流程图窗口提供VI的图形化源程序,相当于实际仪器箱内的东西,在流程图中程序员用图形语言编写LabVIEW程序源代码,以控制和操纵定义在前面板上的输入和输出功能。如图×所示的示波器流程图,上面包括前面板上的控件的连线端子,还有一些前面板上没有,但编程必须有的东西,例如函数、结构和连线等。图×:示波器流程图图×:示波器流程图下面介绍工具条上常用按钮的功能(其他按钮功能见附录):运行(Run),如果VI有编译错误,此按钮将变成。:连续运行(RunContinuously)。:异常中止执行(AbortExecution)。:加亮执行(HightlightExecution),只有流程图中有。进入加亮执行时,变成此时,流程图中的数据变亮,同时显示VI执行中的一些中间数据。提示:使用了会使LEBVIEW占用大量CPU,。使计算机其他操作变慢。建议一般不要使用。2.控制选项板功能介绍:只能在前面板窗口中使用,通过前面板窗口Windows→ShowControlsPalette打开,也可以在前面板窗口中空白处单击右键打开。该选项板用来给前面板设置各种所需的输出显示对象和输入控制对象。模块图标右上角有的表示有子选项板,单击模块图标可以访问子选项板。:数值量(Numeric),数值的控制和显示。包含数字式、指针式显示表盘及各种输入框。(详细):布尔量(Boolean),逻辑数值的控制和显示。包含各种布尔开关、按钮以及指示灯等。(详细):数组和簇(Array&Cluster),数组和簇的控制和显示。:图形(Graph),显示数据结果的趋势图和曲线图。3.函数选项板功能介绍:只能在流程图窗口中使用,通过流程图窗口Window→ShowFunctionsPalette打开,也可以在路程图面板中空白处单击右键打开。函数选项板提供创建流程图的工具。其与控制选项板基本相同,模块图标右上角有的表示有子选项板,单击模块图标可以访问子选项板。:结构(Structure),包括程序控制结构命令,例如循环控制等,以及全局变量和局部变量:数组(Array),包括数组运算函数、数组转换函数,以及常数数组等。:比较(Comperation),包括各种比较运算函数,如大于、小于、等于。:数据采集(DataAcquisition),包括数据采集硬件的驱动,以及信号调理所需的各种功能模块。:信号分析(Analysis),信号发生、时域及频域分析功能模块及数学工具。提示:LabVIEW中,你可以随时获得帮助。用Help→ShowContextHelp打开帮助窗口(ContextHelp)快捷键为Ctrl+H,当把鼠标放到任何感兴趣的模块对象上时,就会在帮助窗口中显示相应的帮助信息。提示:在任何一个控制或是函数模块上单击右键,都会出现弹出菜单,通过弹出菜单可以方便地对模块进行编辑。4.工具选项板功能介绍:通过Windows→ShowToolsPalette打开和关闭。它提供了各种用于创建、修改和调试VI程序的工具。当从选项板内选择了任一种工具后,鼠标箭头就会变成该工具相应的形状。下面介绍常用工具按钮的功能(其它按钮功能见附录)::操作(OperateValue),用于操作前面板的控制和显示。使用它向数字或字符串控制中键入值时,工具会变成标签工具。:选择(Position/Size/Select),用于选择、移动或改变对象的大小。当它用于改变对象的连框大小时,会变成相应形状。:标签(EditText),用于输入标签文本或者创建自由标签。当创建自由标签时它会变成相应形状。:连线(ConnectWire),用于在流程图程序上连接对象。如果联机帮助的窗口被打开时,把该工具放在任一条连线上,就会显示相应的数据类型。5.数据线、数据流和数据类型数据流工作方式:在流程图上,模块接口之间的连线就是数据线。数据通过数据线在模块之间传递。LabVIEW不像一般语言按照语句的顺序一行一行的执行,它是依靠在数据线上传递的数据来控制程序的,只有当模块要求的输入数据完全到达这个模块时才能执行,然后向其所有的输出端口输出数据,这些数据再沿数据线流向其它模块。这就是LabVIEW的数据流工作方式。前面介绍过,可以通过加亮执行观察它的数据流是如何工作的。当你连线时,LabVIEW会提示该接口的名称,只能在同一数据类型的端口之间连线,不同类型的数据连线的颜色和形状也不同。错误的连线会表示成黑色虚线,这时你应将连线工具移动到它上面,LabVIEW会给出两端的数据类型信息,你可以检查并改正。添加新的模块和连线可能会对已设置好的部分有影响,而且原来的错误连线也可能对新添加的连线有影响。数据线:数据类型:LabVIEW的基本数据类型有五种:Numeric(数值),Boolean(逻辑),String(字符串)、Enum(枚举)。还有一种叫Ring(环型枚举),和Enum很类似,可以循环枚举。Numeric类型的数据按精度有分若干种类型,与标准C++的数据类型基本是一致的。其代表符号直观的表现其类型(如表所示)。可以在数值对象上点右键,通过弹出菜单中Representation修改。提示:在流程图上,你会看到不同颜色的模块,不同颜色代表不同的数据类型,其定义与连线一致。6.控制量与显示量在LabVIEW中,一个数字量(numeric)、布尔量(boolean)、字符量(string)等都有控制量(control)和显示量(indicator)的区别。控制量:用于控制程序,它相当于仪器上的控制按钮,如开关、旋钮等。显示量:用于显示程序运行的结果,它相当于仪器上的显示部件,如显示屏、指示灯等。在流程图窗口中,我们可以看到控制部件的外框比较粗,显示部件的外框比较细,要实现控制量与显示量之间的转换,只需在流程图上的模块上点击右键,选择changetoindicator(或者changetocontrol)就可以了。四几个要用到的模板组和簇(Array&Cluster)组:同类型元素的集合。一个组可以是一维或者多维,每维最多可有231个元素。可以通过组索引访问其中的每个元素。和C语言一样,索引的范围是0到n-1,组中元素的个数为n,第一个元素的索引号为0,第二个是1,依此类推。组的元素可以是数据、字符串等,但所有元素的数据类型必须一致。组的建立:创建一个组有两件事要做:建一个组的“壳”(shell),将Controls→Array&Cluster→Array模块放在前面板中(如图××所示);在这个壳中置入组元素(数、字符串开关等)。如我们放入数,将Conrols→Numeric→DigitalControl模块放在组框中.这样一个数组就建成了,其它类型的组的建立类似,只要在步骤(2)中组框中放入你想要建的组的元素就可以了。要改变组显示元素的多少,把鼠标换成选择模式,移到组框的角上,鼠标将变成这时,你可以任意拖动改变组。要改变组的维数,和改变数组显示元素多少的方法一样,在鼠标选择模式下移到组索引框的角上,鼠标将变成拖动改变组的维数;也可以在组索引框上点右键,选择AddDimension。簇:另一种数据类型,它的元素可以是不同类型的数据。它类似于C语言中的Stuct。使用簇结构可以把分布在流程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤程度,用于错误处理。簇的建立;与组的建立相同,同样是先建立簇的“壳”(Controls→Array&Cluster→Cluster),然后在壳中放元素,可以放