




已阅读5页,还剩421页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
LabVIEW8.20程序设计从入门到精通随书课件,第1章揭开LabVIEW的面纱,引子,“最初只存在机器语言,计算机的世界里一片黑暗。可是不久,汇编语言问世了,给计算机的世界投下了一缕曙光。后来,Fortran的出现带来了光明。”LabVIEW图形化编程语言的出现终于把人们尤其是工程师和科学家们从繁杂的编程工作中解放出来,使他们能够真正专心于自己所关注的事情。,本章内容,1.1虚拟仪器的概念1.2什么是LabVIEW?1.3LabVIEW可以做什么?1.4LabVIEW的发展历程1.5如何学好LabVIEW,1.1虚拟仪器的概念,传统仪器厂商定义功能,虚拟仪器用户定义功能,1.1虚拟仪器的概念,虚拟仪器系统是由计算机、应用软件和仪器硬件三大要素构成的。计算机与仪器硬件又称为VI的通用仪器硬件平台。,1.1虚拟仪器的概念,软件技术是虚拟仪器的核心技术。常用的仪器用开发软件有LabVIEW、LabWindows/CVI、VEE等等,其中以LabVIEW应用最为广泛。,1.2什么是LabVIEW?,LabVIEW(LaboratoryVirtualInstrumentEngineeringWorkbench)是一种用图标代替文本行创建应用程序的图形化编程语言。传统文本编程语言根据语句和指令的先后顺序决定程序执行顺序,而LabVIEW则采用数据流编程方式,程序框图中节点之间的数据流向决定了程序的执行顺序。它用图标表示函数,用连线表示数据流向。,1.2什么是LabVIEW?,LabVIEW程序被称为VI(VirtualInstrument),即虚拟仪器。LabVIEW的核心概念就是“软件即是仪器”,即虚拟仪器的概念。LabVIEW还包含了大量的工具与函数用于数据采集、分析、显示与存储等。,1.3LabVIEW可以做什么?,LabVIEW在测试、测量和自动化等领域具有最大的优势,因为LabVIEW提供了大量的工具与函数用于数据采集、分析、显示和存储。用户可以在数分钟内完成一套完整的从仪器连接、数据采集到分析、显示和存储的自动化测试测量系统。它被广泛地应用于汽车、通信、航空、半导体、电子设计生产、过程控制和生物医学等各个领域。,1.3LabVIEW可以做什么?,LabVIEW不仅可以用来快速搭建小型自动化测试测量系统,还可以被用来开发大型的分布式数据采集与控制系统。在美国LawrenceLivermore国家实验室,一个花费2000万美金的极为复杂的飞秒激光切割系统就是基于LabVIEW开发的。在北京正负电子对撞机二期工程北京谱仪慢控制系统中,大约有30种物理量共7000多点的现场数据点需要实时采集控制和分析记录等。,1.4LabVIEW的发展历程,1.5如何学好LabVIEW,1、多学习实例,本书以及LabVIEW都提供了大量的实例。2、大胆尝试,尝试编写自己的程序。“IhearIforget.IseeIremember.IdoIunderstand.”,习题,1.什么是虚拟仪器?虚拟仪器与传统仪器的区别是什么?2.什么是LabVIEW?LabVIEW的主要优势是什么?LabVIEW被应用在了哪些领域?,第2章牛刀小试,仿真信号采集VI,本章内容建议老师在课堂上进行实际演示。,小试身手,写一个类似于左图的正弦波发生器,要求频率和幅度可调,第3章开始LabVIEW之旅,本章内容,3.1安装LabVIEW3.2LabVIEW编程环境3.2.1LabVIEW8.2启动界面3.2.2前面板和程序框图3.2.3控件选板3.2.4函数选板3.2.5工具选板3.3善用LabVIEW联机帮助3.3.1实时上下文帮助窗口3.3.2联机帮助文档3.3.3范例查找器3.4编辑前面板3.4.1输入控件(Controls)和显示控件(Indicator)3.4.2控件属性3.5编辑程序框图3.5.1程序框图中的控件对象3.5.2程序框图节点3.5.3对象连线3.6运行VI3.7调试VI,3.1安装LabVIEW,性能要求及详细安装过程请参考LabVIEW8.20程序设计从入门到精通第3.1、3.2节,LabVIEW程序包括前面板(用户界面)和后面板(程序框图)3种选板:控件选板(为前面板添加控件)函数选板(在程序框图中添加函数或数据等)工具选板(选择各种编辑工具,前面板和后面板都要用到),3.2LabVIEW编程环境,3.2.1LabVIEW8.2启动界面,VI程序和工程创建栏,新近打开的工程和VI程序列表栏,帮助资源列表栏,3.2.2前面板和程序框图,LabVIEW程序被称为VI,扩展名默认为.vi,框图窗口,前面板窗口,图标,3.2.3控件选板,3.2.3控件选板,控件选板在前面板显示,它包含创建前面板时可用的全部对象。控件选板中的基本常用控件可以以现代(modern)、经典(classic)和系统(system)三种风格显示。选择主菜单View-ControlsPalette选项或右击前面板空白处就可以显示控件选板。,3.2.4函数选板,3.2.4函数选板,函数选板只能在编辑程序框图时使用,与控件选板的工作方式大体相同。创建框图程序常用的VI和函数对象都包含在该选板中。选择View-FunctionsPalette或右击框图面板空白处就可以显示函数选板。,3.2.5工具选板,3.2.5工具选板,在前面板和程序框图中都可以使用工具选板,使用其中不同的工具可以操作、编辑或修饰前面板和程序框图中选定的对象,也可以用来调试程序等。可以选择View-ToolsPalette选项来显示工具选板,3.3善用LabVIEW联机帮助,LabVIEW为用户提供了非常全面的帮助信息,有效地利用帮助信息是快速掌握LabVIEW的一条捷径。LabVIEW提供了各种获取帮助信息的方法,包括实时上下文帮助(ShowContextHelp)、联机帮助、LabVIEW范例查找器(FindExamples)、网络资源(WebResources)等。,3.3.1实时上下文帮助窗口,单击此处访问更详细的联机帮助,更多帮助信息,锁定上下文相关帮助,显示VI路径,3.3.1实时上下文帮助窗口,选择菜单栏中Help-ShowContextHelp选项或按下Ctrl+H,就会弹出ContextHelp窗口。当鼠标移到某个对象或函数上时,上下文帮助窗口就会显示相应的帮助信息。,3.3.2联机帮助文档,3.3.2联机帮助文档,当单击ContextHelp窗口中Detailedhelp会弹出相应的完整的帮助信息。这是一个Windows标准风格的帮助窗口,包含了LabVIEW全部的帮助信息。你也可以选择主菜单Help-SearchtheLabVIEWHelp选项打开它。,3.3.3范例查找器,3.3.3范例查找器,LabVIEW提供了大量的范例,这些范例几乎包含了LabVIEW所有功能的应用实例,并提供了大量的综合应用实例。在菜单栏中选择Help-FindExamples选项可以打开范例查找器。,3.4编辑前面板,LabVIEW中的前面板是图形化的人机界面,利用控件选项板提供的各种控件可以所见即所得地编辑丰富多彩的人机界面。,3.4.1输入控件(Controls)和显示控件(Indicator),利用输入控件可以输入相应的数据,例如数字、布尔量、字符串和文件路径等。,3.4.1输入控件(Controls)和显示控件(Indicator),显示控件用来显示数据。显示控件有数字、温度计、LED指示灯、文本、波形图等。,3.4.1输入控件(Controls)和显示控件(Indicator),前面板中的一些控件既可以作为输入控件也可以做作为显示控件。右击控件,选择ChangetoIndicator或ChangetoControl可以进行输入控件与显示控件之间的切换。,3.4.2控件属性,前面板中的每个控件都有自己的属性,如控件的颜色、最大最小值、显示精度和方式等。许多属性都可以根据不同的需要进行编辑。右击前面板任何一个控件选择Properties选项就可以弹出该控件的属性配置窗口。,3.5编辑程序框图,程序框图是图形化源代码的集合,这种图形化的编程语言也称为G语言。,3.5.1程序框图中的控件对象,程序框图中的控件对象实际上是前面板相应控件的接线端,前面板控件,程序框图中对应的接线端,3.5.2程序框图节点,LabVIEW中的程序框图节点是指带有输入和输出接线端的对象,类似文本编程语言中的语句、运算符、函数和子程序。LabVIEW中的节点主要包括函数、结构、ExpressVI、子VI等。,3.5.3对象连线,3.6运行VI,1运行VI单击前面板或程序框图工具栏中的运行按钮,就可以运行VI一次,当VI正在运行时,运行按钮变为,状态。,2停止VI运行当程序运行时,停止按钮由编辑时的状态,,变为可用状态,,单击此按钮可强行停止程序的运行。如果调试程序时,使程序无意中进入死循环或无法退出时,这个按钮可以强行结束程序运行。,3.7调试VI,在程序执行前或正在执行时,单击工具栏上的高亮执行按钮,,程序就可以在高亮方式下运行,这时可以逼真地显示数据的流动过程。再次单击此按钮,程序又恢复正常运行。注意,使用高亮执行方式,将明显降低程序的执行速度。,1高亮显示数据流,3.7调试VI,2查找VI不可执行的原因,如果在一个VI程序中存在错误时,VI是不能运行的。这时,工具栏中的运行按钮由,变为断裂状态,,如果单击此按钮就会弹出错误列表对话框。,小试身手,1、新建一个VI,进行如下练习:任意放置几个控件在前面板,改变它们的位置、名称、大小、颜色等等。在VI前面板和后面板之间进行切换并排排列前面板和后面板窗口,小试身手,2、编写一个VI求三个数的平均值,如右图所示。要求对三个输入控件等间隔并右对齐,对应的程序框图控件对象也要求如此对齐。添加注释分别用普通方式和高亮方式运行程序,体会数据流向。单步执行一遍,第4章数据操作,本章内容,4.1数据类型4.1.1数字型控件4.1.2布尔型控件4.1.3枚举类型4.1.4时间类型(TimeStamp)4.1.5局部变量和全局变量4.2数据运算4.2.1算术运算符4.2.2关系运算符4.2.3逻辑运算符4.2.4表达式节点(ExpressionNode),4.1数据类型,VI程序框图中接线端以不同的图标和颜色来表示不同的数据类型,4.1.1数字型控件,数字型控件的外观可以五花八门,但是程序框图中的操作却是以其代表的数据类型为准,4.1.2布尔型控件,布尔控件代表一个布尔值,只能是True或False它既可以代表按钮输入,也可以当作LED指示灯显示。,4.1.3枚举类型,LabVIEW中的枚举类型和C语言中的枚举类型定义相同。它提供了一个选项列表,其中每一项都包含一个字符串标识和数字标识,数字标识与每一选项在列表中的顺序一一对应。,枚举型控件,4.1.3枚举类型,从上述的选板中选择枚举类型的输入控件添加到前面板中,然后右击该控件,从快捷菜单中选择EditItems选项,打开如下图所示的枚举型选项编辑对话框。,4.1.4时间类型(TimeStamp),时间类型是LabVIEW中特有的数据类型,用于输入与输出时间和日期,4.1.5局部变量和全局变量,在很多情况下需要在同一VI的不同位置或在不同的VI中访问同一个控件对象,这时控件对象之间的连线就无法实现。这时候我们就需要用到局部变量或全局变量,通过局部变量或全局变量你可以在程序框图中的多个地方读写同一个控件。,局部变量,局部变量只能在同一程序内部使用,每个局部变量都对应前面板上的一个控件,一个控件可以创建多个局部变量。读写局部变量等同于读写相应控件,局部变量,局部变量,创建局部变量有两种方法从函数选板的Structures子选板中选中LocalVariable节点前面板或程序框图中右击需要创建局部变量的控件选择Create-LocalVariable选项创建该控件的局部变量,局部变量,读写局部变量的方法与读写控件对象的方法完全一样,全局变量,通过全局变量可以在不同的VI之间进行数据交换,一个全局变量的VI文件中可以包含多个不同数据类型的全局变量。LabVIEW中的全局变量是以独立的VI文件形式存在的,这个VI文件只有前面板,没有程序框图,不能进行编程。,注意:,使用局部变量和全局变量时要避免竞争现象。例如在程序不同的两个地方同时写同一个的对象的局部变量或全局变量,就会产生竞争现象,这时变量的值是无法预期的。因此我们必须要注意程序的执行顺序,避免竞争现象,4.2数据运算,LabVIEW中提供了丰富的数据运算功能,除了基本的数据运算符外,还有许多功能强大的函数节点,并且还支持通过一些简单的文本脚本进行数据运算。LabVIEW图形化编程中,运算是按照从左到右沿数据流的方向顺序执行。,4.2.1算术运算符,基本算术运算符包含在函数选板的Numeric子选板中,该子选板中有类型转换(Conversion)节点、复数(Complex)节点、数学和科学常数(Mathelseb=a+1;end,5.4.1等价于if.else.语句的Case结构,5.4Case结构,5.4.3等价于switch语句的Case结构,switch(fruit)caseapple:price=9;casebanana:price=10;casepear:price=8;default:price=0;,5.5事件结构(EventStructure),分析该程序可以看出,这个程序在没有用户点击的情况下完全都是在“空转”,浪费了大量的CPU资源,而且当“事件”发生太快时可能会被忽略。因此Labview提供了事件结构来解决这个问题,即仅当“事件”发生时,程序才做相应的响应,基于While循环和Case结构的单击计数器,5.5事件结构(EventStructure),5.5事件结构(EventStructure),5.5事件结构(EventStructure),基于事件结构的单击计数器,5.5事件结构(EventStructure),5.5.2Filter事件顾名思义,当该事件发生时,用户可以过滤掉甚至完全放弃掉该事件将触发的活动。,注意:,一般来说,事件只能通过外在用户的动作触发,如单击鼠标,键盘等。如果需要内部数据触发事件(例如当ab条件满足时触发一个事件),就需要通过用户自定义事件的方法实现,这将在本书的21.3节中介绍。,5.6使能结构,5.6.1框图使能结构注释程序框图,5.7公式节点(FormulaNode),通过公式节点,用户不仅可以实现复杂的数学公式,还能通过文本编程写一些基本的逻辑语句,如ifelse,case,while循环之类的语句。,y=,5.7公式节点(FormulaNode),公式节点中可以包含任意数量的公式,5.7公式节点(FormulaNode),5.7.2文本编程语言的实现,基于公式节点的CRC16算法的实现,5.8跟着实例学模拟温度采集监测系统,小试身手,1.利用顺序结构和timing面板下的tickcountVI,计算for循环1000000次所需的时间。2.为第4章习题4添加一个While循环和定时器,实现连续的温度采集监测,小试身手,3、利用顺序结构和循环结构写一个跑马灯,如下图所示,5个灯从左到右不停的轮流点亮,闪烁间隔由滑动条调节,小试身手,4.求分数序列前20项之和。5.给出一百分制成绩,要求输出等级A,B,C,D,E。90分以上为A,8089为B,7079为C,6069为D,60分以下为E。,小试身手,6.利用事件结构实现在数字输入控件中,每当用户按下一个数字后,累加值就将新数字累加上去。例如按下34时,累加值为7;按下345时,累加值为12,小试身手,7.利用公式节点判断一个数是否是素数,我们可以采用这样的算法:用2sqrt(N),依次去对N求余,只要有一个余数是0,则N就不是素数。,第6章字符串、数组、簇和矩阵,本章内容,6.1字符串(String)6.2数组(Array)6.3簇(Cluster)LabVIEW中的结构体变量6.4矩阵(Matrix),6.1字符串(String),字符串在LabVIEW编程中会频繁的用到,因此LabVIEW封装了功能丰富的字符串函数用于字符串的处理,用户不需要再像C语言中一样为字符串的操作编写繁琐的程序。字符串控件包括输入控件、显示控件和下拉框。,6.1字符串(String),6.1字符串(String),6.1.1字符串控件字符串输入控件一般被用作文本输入框,而字符串显示控件一般被用作文本显示框。,6.1字符串(String),6.1.2表格和树形控件表格(Table)和树形控件在ControlsPalette的Modern-List&Table面板下。表格实际上就是一个字符串组成的二维数组。树形控件以树的形式显示多层内容,Windows的资源管理器就是用树形控件来显示文件目录的。,6.1字符串(String),6.1.2表格和树形控件举例,6.1字符串(String),6.1.3字符串函数,6.1字符串(String),6.1.3字符串函数举例,基本字符串函数示例,6.1字符串(String),6.1.3字符串函数举例,数据数组/电子表格字符串转换函数示例,6.2数组(Array),6.2.1数组控件,数组控件,6.2数组(Array),6.2.1数组控件,6.2数组(Array),6.2.2数组之间的算术运算LabVIEW一个非常大的优势就是它可以根据输入数据的类型判断算子的运算方法,即自动实现多态对于加减乘除,数组之间的运算满足下面的规则:a)如果进行运算的两个数组大小完全一样,则将两个数组中索引相同的元素进行运算形成一个新的数组。b)若大小不一样,则忽略较大数组多出来的部分。c)如果一个数组和一个数值进行运算,则数组的每个元素都和该数值进行运算从而输出一个新的数组。,6.2数组(Array),6.2.3数组函数,6.2数组(Array),6.2.3数组函数举例,用ArraySize函数获得三维数组大小示例,6.3簇(Cluster)LabVIEW中的结构体变量,簇是LabVIEW中比较独特的一个概念,但实际上它就对应于C语言等文本编程语言中的结构体变量。,6.3簇(Cluster)LabVIEW中的结构体变量,6.3.1簇的创建,通过簇控件实现的温度显示器,6.3簇(Cluster)LabVIEW中的结构体变量,改变簇内部元素控件的索引,6.3簇(Cluster)LabVIEW中的结构体变量,6.3.2簇操作函数,6.3簇(Cluster)LabVIEW中的结构体变量,1、解包函数(Unbundle)该函数将簇解开从而获得簇中各个元素的值。缺省情况下,它会根据输入的簇自动调整输出端子的数目和数据类型,并按照簇内部元素索引的顺序排列。,6.3簇(Cluster)LabVIEW中的结构体变量,2、打包函数(Bundle)该函数用来为Cluster中各元素赋值。,6.3簇(Cluster)LabVIEW中的结构体变量,3、按元素名称解包函数(UnbundleByName)普通的解包函数解包后只有将鼠标移到输出端子上才能看到输出元素的名称,程序的可读性不高。该函数可以根据名称有选择的输出簇内部元素。其中元素名称就是指元素的Label。,6.3簇(Cluster)LabVIEW中的结构体变量,4、按元素名称打包函数(UnbundleByName)该函数通过簇内部元素名称来给簇内部元素赋值。参考簇是必须的,该函数通过参考簇来获得元素名称。,6.3簇(Cluster)LabVIEW中的结构体变量,簇操作函数使用示例,6.3簇(Cluster)LabVIEW中的结构体变量,6.3.3errorin和errorout簇LabVIEW利用errorin和errorout这两个预定义簇来作为传递错误信息的载体。,6.3簇(Cluster)LabVIEW中的结构体变量,6.3.3errorin和errorout簇对于系统错误,code都有预先的定义,可以通过选择Help-ExplainError打开错误解释框来查找该错误代码的更详细的解释。,6.4矩阵(Matrix),LabVIEW8之前的版本中只能通过二维数组来实现矩阵的操作。但是数组的运算方法和矩阵的运算方法有很大不同,譬如两个数组相乘是直接将相同索引的数组元素相乘,而矩阵的相乘必须按照线性代数中规定的方法相乘,因此用数组实现矩阵运算是非常麻烦的。LabVIEW8最新加入了对矩阵的支持,从而使矩阵的运算变得非常简单。,6.4矩阵(Matrix),矩阵乘法举例,6.4矩阵(Matrix),LabVIEW8还提供了丰富的线性代数运算函数,它们位于FunctionsPalette的mathematics-lineralgebra面板下,小试身手,1.为第5章的习题2连续温度采集监测添加报警信息,如下图所示,当报警发生时输出报警信息,例如“温度超限!当前温度78.23”,正常情况下输出空字符串。,小试身手,2.对字符串进行加密,规则是每个字母后移5位,例如A变为F,b变为g,x变为c,y变为d,小试身手,3.产生一个33的整数随机数数组,随机数要在0到100之间,然后找出数组的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。如下图所示:,小试身手,4.利用簇模拟汽车控制,如右图所示,控制面板可以对显示面板中的参量进行控制。油门控制转速,转速油门*100,档位控制时速,时速档位*40,油量随VI运行时间减少。,第7章图形化显示数据图表和图形,引子,LabVIEW很大的一个优势就是它提供了丰富的数据图形化显示控件,而且使用起来极其方便。,本章内容,7.1波形数据(Waveform)7.2Chart趋势图7.3Graph图表7.4三维图形(3DGraph)7.5Picture图形控件,7.1波形数据(Waveform),7.1.1波形数据控件为了方便地显示波形,LabVIEW专门预定义了波形数据类型。它实际上就是按照一定格式预定义的簇,在信号采集,处理和分析过程中经常会用到它。,7.1波形数据(Waveform),波形数据控件携带的数据包含了时间波形的基本信息,因此可以直接作为Chart和Graph的输入。横坐标代表时间,纵坐标代表Y值,7.1波形数据(Waveform),7.1.2波形数据操作函数虽然波形数据是一种预定义格式的簇,但是必须用专用的波形数据操作函数才能对它进行操作,其中某些操作函数与簇的操作函数非常类似。波形数据的操作函数位于FunctionsPalette的Programming-Waveform子模板下,7.1波形数据(Waveform),波形数据操作函数举例,7.2Chart趋势图,Chart可以将新测得的数据添加到曲线的尾端,从而反映实时数据的变化趋势,它主要用来显示实时曲线。,7.2Chart趋势图,7.2.1波形趋势图(WaveformChart)对于标量数据,Chart图表直接将数据添加在曲线的尾端。,7.2Chart趋势图,对于一维数组数据,它会一次性把一维数组的数据添加在曲线末端,即曲线每次向前推进的点数为数组数据的点数。,7.2Chart趋势图,若要显示多条标量曲线,只需要用簇的Bundle函数将它们绑定在一起作为输入即可。,7.2Chart趋势图,对于二维数组,缺省情况下是每一列的数据当作一条一维数组曲线。,7.2Chart趋势图,技巧:若想将曲线截图,可以通过右击曲线选择DataOperations-CopyData将曲线图复制到剪切板上。,7.2Chart趋势图,7.2.2定制Chart显示样式分栏显示多条曲线。,右击Chart选择StackPlots,7.2Chart趋势图,7.2.2定制Chart显示样式设置更新模式右击Chart选择Advanced-UpdateMode可以设置曲线的更新模式。StripChart模式:曲线填满显示区后曲线通过左移来更新曲线。ScopeChart模式:曲线填满显示区后直接清空显示区重新开始从左向右增长曲线在SweepChart模式:通过一条指示红线从左向右刷新数据,7.2Chart趋势图,7.2.3带时间轴的实时曲线,7.3Graph图表,Graph和Chart的区别在于Graph是一次性将现有数据绘图,在绘图之前先自动清空图表,而不会将新数据添加到曲线的尾端。根据显示方法,Graph又分为波形图、XY曲线图、强度图、数字时序图和三维图。,7.3Graph图表,7.3.1定制Graph属性,7.3Graph图表,右击Graph控件可以看到该控件有很多属性可以设置。选择VisibleItems可以看到关于该控件的很多辅助选项。选择这些选项可以使它们都可见,如下图所示。,7.3Graph图表WaveformGraph,7.3.2WaveformGraphWaveformGraph可以有多种数据输入类型:一维数组,二维数组,簇,簇数组,波形数据。它在ControlsPalette中的位置为Modern-Graph-WaveformGraph。,7.3Graph图表WaveformGraph,1、一维数组作为输入当输入数据为一维数组时,WaveformGraph直接将一维数组画成一条曲线,纵坐标为数组元素的值,横坐标为数组索引。,7.3Graph图表WaveformGraph,2、二维数组作为输入当输入数组为二维数组时,缺省情况下每一行的数据对应一条曲线,即曲线的数目和行数相同。,7.3Graph图表WaveformGraph,3、簇作为输入簇作为输入时需要指定三个元素:起始位置x0、数据点间隔dx和数组数据。,7.3Graph图表WaveformGraph,4、簇数组作为输入一维簇数组也可以直接作为Graph的输入,此时相当于x0为0,dx为1,7.3Graph图表WaveformGraph,5、波形数据作为输入由于波形数据所携带的数据横轴为时间,因此需要将WaveformGraph的横轴设为时间轴。,7.3Graph图表XYGraph,7.3.3XYGraph当我们需要画的曲线是由(x,y)坐标决定的时候,我们就需要采用XYGraph。其实WaveformGraph在一定意义上也是XYGraph,但是它的X轴必须是等间距的,而且不可控制。,7.3Graph图表XYGraph,1、XY两个一维数组绑定为簇作为输入这是最简的一种情形,Bundle函数的输入的第一个数组为XArray,第二个数组为YArray。绑定为簇后可以直接输入,也可以将多个簇Build为一维数组输入实现多条曲线。,7.3Graph图表XYGraph,2、坐标点簇数组作为输入该方式将各个点的坐标绑定为簇然后作为簇数组输入,和直接将XY数组绑定为簇输入效果一样。但是后者不一定需要XY数组的大小一致,它会自动将大的数组裁剪。,7.3Graph图表XYGraph,3、时间作为X轴利用XYGraph实现历史曲线,7.3Graph图表XYGraph,4、ExpressXYGraphExpressXYGraph采用了LabVIEW的Express技术,将ExpressXYGraph放置在前面板上的同时,在程序框图中会自动添加一个VI,它的XY轴数据为动态数据类型。,7.3Graph图表,7.3.4亮度图(IntensityGraph&Chart),7.3Graph图表,7.3.5数字波形图(DigitalWaveformGraph),7.4三维图形(3DGraph),1、三维曲面图(3DSurfaceGraph)将该控件放置在前面板上的同时,在背面板也会同时出现一个ActiveX控件和一个VI函数3DSurface.vi。,7.4三维图形(3DGraph),2、三维参量曲面图(3DParametricGraph)它需要3个轴的数据均为二维数组,分别决定了相对于x平面、y平面和z平面的曲面。,7.4三维图形(3DGraph),3、三维曲线图(3DCurveGraph),7.5Picture图形控件,向Picture控件导入图片,7.5Picture图形控件,利用Picture控件画图,小试身手,1.请说出Chart、WaveformGraph、XYGraph之间的主要区别。,小试身手,2.利用随机数发生器仿真一个0到5V的采样信号,每200ms采一个点,利用实时趋势曲线实时显示采样结果。,小试身手,3.在习题2的基础上再增加1路电压信号采集,此路电压信号的范围为5到10V。,小试身手,4.利用随机数发生器仿真一个0到5V的采样信号,每200ms采一个点,共采集50个点,采集完后一次性显示在WaveformGraph上。,小试身手,5.在习题4的基础上再增加1路电压信号采集,此路电压信号的范围为5到10V,采样间隔是50ms,共采100个点。采样完成后,将两路采样信号显示在同一个WaveformGraph中。,小试身手,6.将习题5中的X轴改为时间轴显示,要求时间轴能真实的反映采样时间。分析为什么与习题5的显示结果截然不同?,小试身手,7.利用SignalProcessing-SignalGeneration-SinePattern.vi(如右上图所示)产生两条正弦曲线,将两条曲线分别作为XYGraph的XY输入。通过改变其中一条曲线的频率和相位来研究李萨如图形。,第8章ExpressVI快速搭建专业测试系统,引子,自LabVIEW7开始,LabVIEW提供了Express技术,用以快捷简便地搭建专业的测试系统。在此后的版本中,Express技术得到了不断的加强。它将各种基本函数进一步打包为更加智能,功能更加丰富的函数;并对其中某些函数提供配置对话框,通过配置框可以对函数进行详细的配置。因此,通过ExpressVI我们可以用很少的步骤实现功能完善的测试系统。对于复杂的系统,利用ExpressVI也能起到极大的简化作用。,本章内容,8.1初识Express技术8.2动态数据类型8.3ExpressVIs简介8.4跟着实例学基于ExpressVI的声音信号采集系统,8.1初识Express技术,Express技术包含前面板控件和程序框图VI函数,8.1初识Express技术,基于配置的编程方式,仿真信号发生器ExpressVI参数配置对话框,8.1初识Express技术,利用ExpressVI搭建的信号滤波器,8.2动态数据类型,针对ExpressVI的灵活性,LabVIEW提供了动态数据类型(DynamicDataType,DDT)来携带ExpressVI的输入与输出信号。动态数据类型能够携带单点,单通道(一维数组)或多通道(二维数组)的数据或波形数据类型的数据。此外,它还包含了一些信号的属性信息,譬如信号的名称、采集日期时间等。,8.2动态数据类型,由于动态数据类型能够包含单个或多个信号,因此还可以将多个DDT数据合并或者将合并后的DDT数据再拆开。这可以通过Express-SignalManipulation面板下的MergeSignals和SplitSignals函数实现。,8.3ExpressVIs简介,8.3.1信号输入(Input)ExpressVIs信号输入ExpressVIs在Express-Input面板下,主要用来从仪器采集信号或产生仿真信号;通过这些函数,信号可以来源于仪器,也可以来源于文件或者由计算机仿真产生。,8.3ExpressVIs简介,8.3ExpressVIs简介,8.3.2信号分析(SignalAnalysis)ExpressVIs信号分析ExpressVIs在Express-SignalAnalysis面板下。该面板下包含了最常用的信号分析函数,例如谱测量、失真度测量、曲线拟合、滤波器和直方图等。,8.3ExpressVIs简介,8.3.3输出(Output)ExpressVIsOutputExpressVIs在Express-Output面板下,用于将信号数据存入文件,产生报表或向仪器输出真实信号等,8.3ExpressVIs简介,8.3ExpressVIs简介,8.3.4信号操作(SignalManipulation)ExpressVIs信号操作ExpressVIs在Express-SignalManipulation面板下。主要用于对信号数据进行各种操作,譬如信号合并、类型转换、信号连接、抽样信号、触发信号和选择信号等;,8.3ExpressVIs简介,8.3.5算术与比较(Arithmetic&Comparison)ExpressVIs算术与比较ExpressVIs在Express-Arithmetic&Comparison面板下,它包含一些基本的数学函数和比较操作符,以及数字和字符串等。,8.3ExpressVIs简介,8.3.6执行控制ExpressVIs执行控制ExpressVIs在Express-ExecutionControl面板下,包含了一些基本的程序结构以及时间函数,譬如While结构,Case结构,时间延时和消逝时间等。,8.4跟着实例学基于ExpressVI的声音信号采集系统,本例中将声卡采集到的声音信号进行高通滤波,然后将信号数据重新输入声卡播放,并将采集到的声音信号写入LabVIEW测试文件(.lvm文件),最后生成HTML报表。本例中基本上包含了信号采集系统的基本功能:信号采集、信号处理,存储和生成报表。,8.4跟着实例学基于ExpressVI的声音信号采集系统,8.4跟着实例学基于ExpressVI的声音信号采集系统,小试身手,利用ExpressVI产生一个带白噪声的正弦信号,然后用功率谱分析ExpressVI对其进行功率谱分析,并将原信号与分析结果写入测量文件。,第9章文件I/O,引子,对于一个完整的测试系统或数据采集系统,我们经常需要将硬件的配置信息写入配置文件或者将采集到的数据以一定格式存储在文件中保存数据。因此LabVIEW提供了强大的文件I/O函数用以满足不同的文件操作需求。,本章内容,9.1选择合适的文件类型9.2文件的基本操作9.3文本文件和表单文件9.4二进制文件(BinaryFiles)9.9基于文本的测量文件(.lvm文件)9.11高速数据流文件(.tdms文件),9.1选择合适的文件类型,LabVIEW支持的文件类型文本文件(TextFiles)表单文件(SpreadsheetFiles)二进制文件(BinaryFiles)数据记录文件(DatalogFiles)XML文件配置文件(ConfigurationFiles)波形(Waveform)文件基于文本的测量文件(.lvm文件)数据存储文件(.tdm文件)高速数据流文件文件(.tdms文件),9.2文件的基本操作,基本步骤打开-读写、操作-关闭,9.3文本文件和表单文件,它将字符串以ASCII编码格式存储在文件中,譬如txt文件和Excel文件。这种文件类型最常见,可以在各种操作系统下由多种应用程序打开,譬如记事本,Word,Excel等第三方软件,因此这种文件类型的通用性最强。但是相对于其它类型文件,它消耗的硬盘空间相对较大,读写速度也较慢,也不能随意的在指定位置写入或读出数据。如果需要将数据存储为文本文件必须先将数据转换为字符串才能存储。,9.3文本文件和表单文件,读写文本文件VI,9.3文本文件和表单文件,举例,写文本文件举例,读文本文件举例,9.3文本文件和表单文件,读写表单文件VI,9.3文本文件和表单文件,读写表单文件举例,写表单文件,读表单文件,9.4二进制文件(BinaryFiles),这是最有效率的一种文件存储格式,它占用的硬盘空间最少而且读写速度最快。它将二进制数据,譬如32位整数以确定的空间存储4个字节来存储,因此不会损失精度,而且可以随意的在文件指定位置读写数据。二进制文件的数据输入可以是任何数据类型,譬如数组和簇等复杂数据,但是在读出时必须给定参考,9.4二进制文件(BinaryFiles),写二进制文件举例,读二进制文件举例,9.9基于文本的测量文件(.lvm文件),它将动态类型数据按一定的格式存储在文本文件中。它可以在数据前加上一些信息头,譬如采集时间等,可以由Excel等文本编辑器打开查看其内容。,9.11高速数据流文件(.tdms文件),它将动态类型数据存储为二进制文件,同时可以为每一个信号都添加一些有用的信息,譬如信号名称和单位等等。在查询时可以通过这些附加信息来查询所需要的数据。它被用来在NI各种软件之间交换数据,譬如DIAdem。它比.lvm文件占用空间更小,读写速度更快。非常适合用来存储数量庞大的测试数据。,9.11高速数据流文件(.tdms文件),每一个TDMS文件以三个不同层次来存储附加信息:File、group和channel。,9.11高速数据流文件(.tdms文件),写TDMS文件示例,9.11高速数据流文件(.tdms文件),在TDMSFileViewer中查看文件内容,9.11高速数据流文件(.tdms文件),TDMS文件读操作示例,小试身手,1.文本文件和二进制文件的主要区别是什么?2.请说出下面这几种文件是文本文件还是二进制文件:数据记录文件(DatalogFiles),XML文件,配置文件,波形文件,LVM文件,TDMS文件。,小试身手,3.有一个测量程序,采集两路信号,每1s采集一次,要求每采集一次,就将采集结果写入文本文件尾部,即使重新运行程序,仍能保证数据添加到文件尾部,而不会覆盖原有数据。格式为a保留4位小数,b为整数,如右图所示。,小试身手,4.在LabVIEW中读取刚才写入的文件内容。5.将习题3的采集数据,采集完毕后写入表单文件,如下图所示:,小试身手,6.将习题3改为实时写入表单文件,添加一列日期时间以反映真实的采样时间,并在第一行包含每列的描述信息,如下图所示。,小试身手,7.将右图所示的控件数据写入二进制文件,并用另一个VI将其读出查看。,小试身手,8.用SimulateSignalExpressVI仿真产生一个采样100000点的正弦仿真信号,并将其写入TDMS文件,要求同时为该通道设置两个描述属性:频率和采样间隔。,第10章子VI,引子,LabVIEW中的子VI(SubVI)类似于文本编程语言中的函数。通过子VI,我们可以把程序分割为一个个小的模块来实现,本章内容,10.1创建子VI10.2查看VI层次结构(VIHierarchy)10.3定义子VI属性10.4多态(Polymorphic)VI,10.1创建子VI,其实任何VI本身就可以作为子VI被其它VI调用,只是你需要在普通VI的基础上多进行两步简单的操作而已:定义连接端子和图标。,10.1创建子VI,第一步:新建一个BlankVI,编写其程序框图第二步:编辑VI图标。,10.1创建子VI,第三步:建立连接端子。第四步:保存该VI,将该VI当作子VI调用,10.2查看VI层次结构(VIHierarchy),10.3定义子VI属性,10.3.1可重入(Reentrant)子VI在缺省情况下,如果有两处程序框图都调用同一个子VI,那么这两处程序框图则不能并行运行。即如果当该子VI正在被调用执行时,其它调用就必须等待直到当前调用执行完毕。而在很多情况下,我们都希望不同的调用应该是相互独立的。这时候我们就需要把子VI设为可重入子VI。,10.3定义子VI属性,可重入子VI举例,10.3定义子VI属性,10.3.2设置子VI调用属性,10.3定义子VI属性,利用显示子VI前面板来实现登录对话框,10.3.3自定义子VI图标形状,第一步:在编辑VI图标界面选择Edit-Clear清除图标。第二步:在256Colors下画一个封闭的图形。为了方便与端子对应,你可以选择ShowTerminals复选框显示连接端子。第三步:将画好的256色图标分别复制到16Colors和B&W下,确保三种显示模式所显示的图标形状一致。,10.4多态(Polymorphic)VI,LabVIEW中的多态与C+中的多态概念类似,即函数可以根据输入数据的类型自动选择执行内容。在LabVIEW中你也可以创建自己的多态VI。它实际上是多个VI的集合,这些VI具有相同的端子模式。,10.4多态(Polymorphic)VI,创建多态VI举例,多态VI对应的两个实例VI,10.4多态(Polymorphic)VI,调用多态子VI,小试身手,1.写一个子VI计算输入双精度数组所有元素的平均值,并在上层VI调用它。,小试身手,2.在第5章习题2的基础上,利用子VI实现一个温度报警对话框,每当报警发生时就弹出该对话框,如下图所示,点击“知道了”按钮退出对话框。,第11章属性节点和方法节点,引子,在面向对象的编程中,我们将类中定义的数据称为属性,而函数称为方法。实际上,LabVIEW中的控件、VI、甚至应用程序都有自己的属性和方法,譬如一个数值控件,它的属性包括它的文字颜色、背景颜色、Caption和Label等;,本章内容,11.1属性节点(PropertyNode)11.2方法节点(InvokeNode)11.3通过子VI调用控件的属性和方法11.4几种常用控件的编程举例11.5小结,11.1属性节点(PropertyNode),属性节点可以用来通过编程设置或获取控件的属性,譬如在程序运行过程中,我们可以通过编程设置数值控件的背景颜色等属性。,Ring控件的属性节点举例,11.1属性节点(PropertyNode),举例,通过Visible属性控制按钮是否可见,11.1属性节点(PropertyNode),举例,在事件结构中使用属性节点,11.2方法节点(InvokeNode),方法节点和属性节点非常类似,方法节点就好比控件的一个函数,它会执行一定的动作,有些时候还需要输入参数或返回数据。,树形控件的方法节点函数菜单及其方法节点示例,11.3通过子VI调用控件的属性和方法,一般情况下,将控件作为子VI的输入端时只能传递控件的值,而不能传递控件的属性。那么如何才能在子VI中调用上层VI中控件的属性和方法节点呢?这就需要使用Refnum控件作为子VI的输入端子,在调用时将控件的Reference与Refnum端子连线即可。,11.3通过子VI调用控件的属性和方法,通过子VI调用控件的属性节点示例,11.4几种常用控件的编程举例,11.4.1Ring控件和Enum控件对于两种控件,用户都是一次只能选择其中一个项目,控件的输出值都为数字。不同的是Ring控件各项目的值是可以任意设定的,而Enum控件各项目的值一定是从0到n-1(n代表项目个数),这是因为Enum控件才是标准的枚举类型。Ring控件的项目可以是字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年乡镇红十字会招聘考试模拟试题及答案
- 2025年养老行业热点解读居家养老服务评估方向中级考试要点
- 2025年高纯铟及氧化铟项目合作计划书
- 2025年车载空气净化器项目合作计划书
- 2025年无碱玻璃基片项目发展计划
- 2025年绕线绞线设备项目建议书
- 第二章 实数 单元测试 培优卷 (含答案)2025-2026北师大版八上
- 新闻常识题目及答案高中
- 胰腺疾病诊断与治疗阅读札记
- 扑火队安全培训会议内容课件
- 职业技术学院运动健康指导专业人才培养方案
- 离婚后小孩学费协议书
- 初中学校学科竞赛策划工作计划
- 近代中国体育思想的嬗变轨迹与时代特征探寻
- DB31T 1373-2022 海三棱藨草种群生态修复技术规程
- 《农业科技创新政策》课件
- 高危儿规范化健康管理专家共识
- 消防专职招聘笔试题及答案
- 第一单元 第二课 传感之古今未来 教学设计2024-2025学年人教版(2024)初中信息科技八年级上册
- 电压的测量课件
- 医美知识培训课件
评论
0/150
提交评论