资源预览内容
第1页 / 共425页
第2页 / 共425页
第3页 / 共425页
第4页 / 共425页
第5页 / 共425页
第6页 / 共425页
第7页 / 共425页
第8页 / 共425页
第9页 / 共425页
第10页 / 共425页
亲,该文档总共425页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
LabVIEW 8.20程序设计从入门到精通随书课件 作者:陈锡辉版权所有,转载请注明出处第第1章章 揭开揭开LabVIEW的面纱的面纱引子“最初只存在机器语言,计算机的世界里一片黑暗。可是不久,汇编语言问世了,给计算机的世界投下了一缕曙光。后来,Fortran的出现带来了光明。”LabVIEW图形化编程语言的出现终于把人们尤其是工程师和科学家们从繁杂的编程工作中解放出来,使他们能够真正专心于自己所关注的事情。 本章内容1.1 虚拟仪器的概念1.2 什么是LabVIEW?1.3 LabVIEW可以做什么?1.4 LabVIEW的发展历程1.5 如何学好LabVIEW1.1 虚拟仪器的概念传统仪器传统仪器厂商定义功能厂商定义功能虚拟仪器虚拟仪器用户定义功能用户定义功能1.1 虚拟仪器的概念虚拟仪器系统是由计算机、应用软件计算机、应用软件和仪器硬件和仪器硬件三大要素构成的。计算机与仪器硬件又称为VI的通用仪器硬件通用仪器硬件平台平台。1.1 虚拟仪器的概念软件技术是虚拟仪器的核心技术。常用的仪器用开发软件有LabVIEW、LabWindows/CVI、VEE等等,其中以LabVIEW应用最为广泛。1.2 什么是LabVIEW?LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种用图标代替文本行创建应用程序的图形化编程语言。传统文本编程语言根据语句和指令的先后顺序决定程序执行顺序,而LabVIEW 则采用数据流编程方式,程序框图中节点之间的数据流向决定了程序的执行顺序。它用图标表示函数,用连线表示数据流向。1.2 什么是LabVIEW?LabVIEW程序被称为VI(Virtual Instrument),即虚拟仪器。 LabVIEW的核心概念就是“软件即是仪器”,即虚拟仪器的概念。 LabVIEW还包含了大量的工具与函数用于数据采集、分析、显示与存储等。 1.3 LabVIEW可以做什么? LabVIEW在测试、测量和自动化等领域具有最大的优势,因为LabVIEW提供了大量的工具与函数用于数据采集、分析、显示和存储。用户可以在数分钟内完成一套完整的从仪器连接、数据采集到分析、显示和存储的自动化测试测量系统。它被广泛地应用于汽车、通信、航空、半导体、电子设计生产、过程控制和生物医学等各个领域。 1.3 LabVIEW可以做什么?LabVIEW不仅可以用来快速搭建小型自动化测试测量系统,还可以被用来开发大型的分布式数据采集与控制系统。在美国Lawrence Livermore国家实验室,一个花费2000万美金的极为复杂的飞秒激光切割系统就是基于LabVIEW开发的。 在北京正负电子对撞机二期工程北京谱仪慢控制系统中,大约有30种物理量共7000多点的现场数据点需要实时采集控制和分析记录等。 1.4 LabVIEW的发展历程 1.5 如何学好LabVIEW 1、多学习实例,本书以及LabVIEW都提供了大量的实例。2、大胆尝试,尝试编写自己的程序。“I hearI forget. I seeI remember. I doI understand.”习题1. 什么是虚拟仪器?虚拟仪器与传统仪器的区别是什么?2. 什么是LabVIEW?LabVIEW的主要优势是什么?LabVIEW被应用在了哪些领域?第第2章章 牛刀小试牛刀小试仿真信号采集VI本章内容建议老师在课堂上进行实际演示。小试身手写一个类似于左图的正弦波发生器,要求频率和幅度可调第第3章章 开始开始LabVIEW之旅之旅本章内容3.1 安装安装LabVIEW3.2 LabVIEW编程环境编程环境3.2.1 LabVIEW 8.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 调试调试VI3.1 安装LabVIEW性能要求及详细安装过程请参考LabVIEW 8.20程序设计从入门到精通第3.1、3.2节LabVIEW程序包括前面板(用户界面)和后面板(程序框图)3种选板:控件选板(为前面板添加控件)函数选板(在程序框图中添加函数或数据等)工具选板(选择各种编辑工具,前面板和后面板都要用到)3.2 LabVIEW编程环境3.2.1 LabVIEW 8.2 启动界面VI程序和工程创建栏新近打开的工程和VI程序列表栏帮助资源列表栏3.2.2 前面板和程序框图LabVIEW程序被称为VI,扩展名默认为.vi框图窗口前面板窗口图标3.2.3 控件选板3.2.3 控件选板控件选板控件选板在前面板显示,它包含创建前面板时可用的全部对象。控件选板中的基本常用控件可以以现代现代(modern)、经典经典(classic)和系统系统(system)三种风格显示。选择主菜单View-Controls Palette选项或右击前面板空白处就可以显示控件选板。 3.2.4 函数选板3.2.4 函数选板函数选板只能在编辑程序框图时使用,与控件选板的工作方式大体相同。创建框图程序常用的VI和函数对象都包含在该选板中。选择View-Functions Palette或右击框图面板空白处就可以显示函数选板。3.2.5 工具选板3.2.5 工具选板在前面板和程序框图中都可以使用工具选板,使用其中不同的工具可以操作、编辑或修饰前面板和程序框图中选定的对象,也可以用来调试程序等。 可以选择View-Tools Palette选项来显示工具选板 3.3 善用LabVIEW联机帮助LabVIEW为用户提供了非常全面的帮助信息,有效地利用帮助信息是快速掌握LabVIEW的一条捷径。LabVIEW提供了各种获取帮助信息的方法,包括实时上下文帮助(Show Context Help)、联机帮助、LabVIEW范例查找器(Find Examples)、网络资源(Web Resources)等。 3.3.1 实时上下文帮助窗口单击此处访问更详细的联机帮助更多帮助信息锁定上下文相关帮助显示VI路径3.3.1 实时上下文帮助窗口选择菜单栏中Help-Show Context Help选项或按下Ctrl+H,就会弹出Context Help窗口。 当鼠标移到某个对象或函数上时,上下文帮助窗口就会显示相应的帮助信息。3.3.2 联机帮助文档3.3.2 联机帮助文档当单击Context Help窗口中Detailed help会弹出相应的完整的帮助信息。这是一个Windows标准风格的帮助窗口,包含了LabVIEW全部的帮助信息。你也可以选择主菜单Help-Search the LabVIEW Help选项打开它。3.3.3 范例查找器 3.3.3 范例查找器LabVIEW提供了大量的范例,这些范例几乎包含了LabVIEW所有功能的应用实例,并提供了大量的综合应用实例。 在菜单栏中选择Help-Find Examples选项可以打开范例查找器。3.4 编辑前面板 LabVIEW中的前面板是图形化的人机界面,利用控件选项板提供的各种控件可以所见即所得地编辑丰富多彩的人机界面。3.4.1 输入控件(输入控件(Controls)和显示控件()和显示控件(Indicator) 利用输入控件可以输入相应的数据,例如数字、布尔量、字符串和文件路径等。 3.4.1 输入控件(输入控件(Controls)和显示控件()和显示控件(Indicator)显示控件用来显示数据。显示控件有数字、温度计、LED指示灯、文本、波形图等 。3.4.1 输入控件(输入控件(Controls)和显示控件()和显示控件(Indicator)前面板中的一些控件既可以作为输入控件也可以做作为显示控件。右击控件,选择Change to Indicator或Change to Control可以进行输入控件与显示控件之间的切换。 3.4.2 控件属性控件属性前面板中的每个控件都有自己的属性,如控件的颜色、最大最小值、显示精度和方式等。许多属性都可以根据不同的需要进行编辑。右击前面板任何一个控件选择Properties选项就可以弹出该控件的属性配置窗口。3.5 编辑程序框图编辑程序框图程序框图是图形化源代码的集合,这种图形化的编程语言也称为G语言。3.5.1 程序框图中的控件对象 程序框图中的控件对象实际上是前面板相应控件的接线端 前面板控件程序框图中对应的接线端3.5.2 程序框图节点程序框图节点LabVIEW中的程序框图节点是指带有输入和输出接线端的对象,类似文本编程语言中的语句、运算符、函数和子程序。LabVIEW中的节点主要包括函数、结构、Express VI、子VI等。3.5.3 对象连线对象连线 3.6 运行运行VI1运行运行VI单击前面板或程序框图工具栏中的运行按钮就可以运行VI一次,当VI正在运行时,运行按钮变为状态。2停止停止VI运行运行当程序运行时,停止按钮由编辑时的状态,变为可用状态,单击此按钮可强行停止程序的运行。如果调试程序时,使程序无意中进入死循环或无法退出时,这个按钮可以强行结束程序运行。3.7 调试VI在程序执行前或正在执行时,单击工具栏上的高亮执行按钮,程序就可以在高亮方式下运行,这时可以逼真地显示数据的流动过程。再次单击此按钮,程序又恢复正常运行。注意注意,使用高亮执行方式,将明显降低程序的执行速度。1高亮高亮显示数据流示数据流3.7 调试VI2查找找VI不可不可执行的原因行的原因 如果在一个VI程序中存在错误时,VI是不能运行的。这时,工具栏中的运行按钮由变为断裂状态,如果单击此按钮就会弹出错误列表对话框。小试身手1、新建一个VI,进行如下练习:任意放置几个控件在前面板,改变它们的位置、名称、大小、颜色等等。在VI前面板和后面板之间进行切换并排排列前面板和后面板窗口小试身手2、编写一个VI求三个数的平均值,如右图所示。要求对三个输入控件等间隔并右对齐,对应的程序框图控件对象也要求如此对齐。添加注释分别用普通方式和高亮方式运行程序,体会数据流向。单步执行一遍第第4章章 数据操作数据操作本章内容4.1 数据类型数据类型4.1.1 数字型控件4.1.2 布尔型控件4.1.3 枚举类型4.1.4 时间类型(Time Stamp)4.1.5 局部变量和全局变量4.2 数据运算数据运算4.2.1 算术运算符4.2.2 关系运算符4.2.3 逻辑运算符4.2.4 表达式节点(Expression Node)4.1 数据类型数据类型VI程序框图中接线端以不同的图标和颜色来表示不同的数据类型 输入控件入控件显示控件示控件数据数据类型型默默认值32位无符号整数(32-bit unsigned integer numeric)064位无符号整数(64-bit unsigned integer numeric)0位时间标示(bit time stamp)当地时间日期枚举类型(Enumerated type)-布尔(Boolean)FLASE字符串(String)空字符串4.1.1 数字型控件数字型控件的外观可以五花八门,但是程序框图中的操作却是以其代表的数据类型为准 4.1.2 布尔型控件布尔控件代表一个布尔值,只能是True或False它既可以代表按钮输入,也可以当作LED指示灯显示。 4.1.3 枚举类型枚举类型LabVIEW中的枚举类型和C语言中的枚举类型定义相同。它提供了一个选项列表,其中每一项都包含一个字符串标识和数字标识,数字标识与每一选项在列表中的顺序一一对应。 枚举型控件4.1.3 枚举类型枚举类型从上述的选板中选择枚举类型的输入控件添加到前面板中,然后右击该控件,从快捷菜单中选择Edit Items选项,打开如下图所示的枚举型选项编辑对话框。 4.1.4 时间类型(Time Stamp)时间类型是LabVIEW中特有的数据类型,用于输入与输出时间和日期 4.1.5 局部变量和全局变量局部变量和全局变量在很多情况下需要在同一VI的不同位置或在不同的VI中访问同一个控件对象,这时控件对象之间的连线就无法实现。这时候我们就需要用到局部变量或全局变量,通过局部变量或全局变量你可以在程序框图中的多个地方读写同一个控件。 局部变量局部变量局部变量只能在同一程序内部使用,每个局部变量都对应前面板上的一个控件,一个控件可以创建多个局部变量。 读写局部变量等同于读写相应控件局部变量局部变量局部变量创建局部变量有两种方法从函数选板的Structures子选板中选中Local Variable节点 前面板或程序框图中右击需要创建局部变量的控件选择Create-Local Variable选项创建该控件的局部变量 局部变量局部变量读写局部变量的方法与读写控件对象的方法完全一样全局变量全局变量 通过全局变量可以在不同的VI之间进行数据交换,一个全局变量的VI文件中可以包含多个不同数据类型的全局变量。LabVIEW中的全局变量是以独立的VI文件形式存在的,这个VI文件只有前面板,没有程序框图,不能进行编程。 注意:使用局部变量和全局变量时要避免竞争现象。例如在程序不同的两个地方同时写同一个的对象的局部变量或全局变量,就会产生竞争现象,这时变量的值是无法预期的。因此我们必须要注意程序的执行顺序,避免竞争现象4.2 数据运算数据运算LabVIEW中提供了丰富的数据运算功能,除了基本的数据运算符外,还有许多功能强大的函数节点,并且还支持通过一些简单的文本脚本进行数据运算。 LabVIEW图形化编程中,运算是按照从左到右沿数据流的方向顺序执行。 4.2.1 算术运算符算术运算符基本算术运算符包含在函数选板的Numeric子选板中,该子选板中有类型转换类型转换(Conversion)节点)节点、复复数(数(Complex)节点)节点、数学数学和科学常数和科学常数(Math&Scientific Constants)节点)节点等 算术运算符举例算术运算符举例C=A+B=文本编程语言图形化编程语言4.2.2 关系运算符关系运算符关系运算符也叫比较运算符,包含在函数选板的Comparison子选板中 4.2.3 逻辑运算符逻辑运算符逻辑运算符又称为布尔运算符,包含在程序框图中函数选板的Boolean子选板中,LabVIEW中逻辑运算符的图标与数字电路中逻辑运算符的图标相似 4.2.4 表达式节点(表达式节点(Expression Node)使用表达式节点可以计算包含一个变量的数学表达式,该节点允许使用除复数外的任何数字类型。在表达式节点中可以使用的函数有abs、acos、acosh、asin、asinh、atan、atanh、ceil、cos、cosh、cot、csc、exp、expml、floor、getexp、getman、int、intrz、ln、lnpl、log、log2、max、min、mod、rand、rem、sec、sign、sin、sinc、sinh、sqrt、tan、tanh。 表达式节点小试身手1、写一个VI判断两个数的大小,如右图所示:当AB时,指示灯亮小试身手2. 写一个VI获取当前系统时间,并将其转换为字符串和浮点数。这在实际编程中会经常遇到。小试身手3. 利用局部变量写一个计数器,每当VI运行一次计数器就加一。当VI关闭后重新打开时,计数器清零。小试身手4. 写一个温度监测器,如右图所示,当温度超过报警上限,而且开启报警时,报警灯点亮。温度值可以由随即数发生器产生。小试身手5.给定任意x, 求如下表达式的值第第5章章 程序结构程序结构本章内容5.1 顺序结构(顺序结构(Sequence Structure)5.2 For循环循环5.3 While循环循环5.4 Case结构结构5.5 事件结构(事件结构(Event Structure)5.6 使能结构使能结构5.7 公式节点(公式节点(Formula Node)5.8 跟着实例学跟着实例学模拟温度采集监测系统模拟温度采集监测系统5.1 顺序结构(顺序结构(Sequence Structure)5.1.1 LabVIEW程序的执行顺序 数据流式的编程方法 多段代码同时执行5.1 顺序结构(顺序结构(Sequence Structure)Flat Sequence StructureStacked Sequence Structure 5.1 顺序结构(顺序结构(Sequence Structure)在在Flat Sequence Structure的的Frame间传间传递数据递数据5.1 顺序结构(顺序结构(Sequence Structure)在在Stacked Sequence Structure的的Frame间传递数据间传递数据 5.2 For循环循环For循环用于将某段程序循环执行指定的次数。可以通过两种方法指定循环次数,一种是直接给定,一种是通过输入数组的大小给定 5.2 For循环循环输入和输出数组输入和输出数组5.2 For循环循环5.2.3 移位寄存器移位寄存器(Shift Register)一个累加一个累加10次的次的a+程序程序 通过局部变量实现通过局部变量实现通过移位寄存器实现通过移位寄存器实现 5.2 For循环循环5.2.4 反馈节点(反馈节点(Feedback Node)通过反馈节点实现通过反馈节点实现a+ 5.3 While循环循环5.3 While循环循环5.3.2 添加定时器添加定时器5.3 While循环循环5.3.3 使用移位寄存器和反馈节点使用移位寄存器和反馈节点累加器程序累加器程序 5.4 Case结构If(a%2=0)b=a+2;elseb=a+1;end5.4.1 等价于等价于if.else.语句的语句的Case结构结构5.4 Case结构5.4.3 等价于等价于switch语句的语句的Case结构结构switch (fruit)case apple: price=9; case banana: price=10; case pear: price=8; default: price=0;5.5 事件结构(Event Structure)分析该程序可以看出,这个程序在没有用户点击的情况下完全都是在“空转”,浪费了大量的CPU资源,而且当“事件”发生太快时可能会被忽略。因此Labview提供了事件结构来解决这个问题,即仅当“事件”发生时,程序才做相应的响应 基于基于While循环和循环和Case结构的单击计数器结构的单击计数器 5.5 事件结构(Event Structure)5.5 事件结构(Event Structure)5.5 事件结构(Event Structure)基于事件结构的单击计数器基于事件结构的单击计数器 5.5 事件结构(Event Structure)5.5.2 Filter事件事件顾名思义,当该事件发生时,用户可以过滤掉顾名思义,当该事件发生时,用户可以过滤掉甚至完全放弃掉该事件将触发的活动。甚至完全放弃掉该事件将触发的活动。 注意:注意:一般来说,事件只能通过外在用户的动作触发,如单击鼠标,键盘等。如果需要内部数据触发事件(例如当ab条件满足时触发一个事件),就需要通过用户自定义事件的方法实现,这将在本书的21.3节中介绍。5.6 使能结构使能结构5.6.1 框图使能结构框图使能结构注释程序框图注释程序框图5.7 公式节点(Formula Node)通过公式节点,用户不仅可以实现复杂的数学公式,还能通过文本编程写一些基本的逻辑语句,如ifelse, case, while循环之类的语句。 y=5.7 公式节点(Formula Node)公式节点中可以包含任意数量的公式公式节点中可以包含任意数量的公式 5.7 公式节点(Formula Node)5.7.2 文本编程语言的实现文本编程语言的实现基于公式节点的基于公式节点的CRC16算法的实现算法的实现 5.8 跟着实例学跟着实例学模拟温度采集监测系统模拟温度采集监测系统小试身手1. 利用顺序结构和timing面板下的tick count VI,计算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)和树形控件在Controls Palette的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 数组函数举例数组函数举例用用Array Size 函数获得三维数组大小示例函数获得三维数组大小示例 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、按元素名称解包函数(、按元素名称解包函数(Unbundle By Name)普通的解包函数解包后只有将鼠标移到输出端子上才能看到输出元素的名称,程序的可读性不高。该函数可以根据名称有选择的输出簇内部元素。其中元素名称就是指元素的Label。6.3 簇(簇(Cluster)LabVIEW中的结构体变量中的结构体变量4、按元素名称打包函数(、按元素名称打包函数(Unbundle By Name)该函数通过簇内部元素名称来给簇内部元素赋值。参考簇是必须的,该函数通过参考簇来获得元素名称。6.3 簇(簇(Cluster)LabVIEW中的结构体变量中的结构体变量簇操作函数使用示例簇操作函数使用示例 6.3 簇(簇(Cluster)LabVIEW中的结构体变量中的结构体变量6.3.3 error in 和和error out簇簇LabVIEW利用error in 和error out这两个预定义簇来作为传递错误信息的载体。 6.3 簇(簇(Cluster)LabVIEW中的结构体变量中的结构体变量6.3.3 error in 和和error out簇簇对于系统错误,code都有预先的定义,可以通过选择Help-Explain Error打开错误解释框来查找该错误代码的更详细的解释。 6.4 矩阵(矩阵(Matrix)LabVIEW 8之前的版本中只能通过二维数组来实现矩阵的操作。但是数组的运算方法和矩阵的运算方法有很大不同,譬如两个数组相乘是直接将相同索引的数组元素相乘,而矩阵的相乘必须按照线性代数中规定的方法相乘,因此用数组实现矩阵运算是非常麻烦的。LabVIEW 8最新加入了对矩阵的支持,从而使矩阵的运算变得非常简单。6.4 矩阵(矩阵(Matrix)矩阵乘法举例6.4 矩阵(矩阵(Matrix)LabVIEW 8还提供了丰富的线性代数运算函数,它们位于Functions Palette的mathematics - liner algebra面板下 小试身手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.2 Chart趋势图趋势图7.3 Graph图表图表7.4 三维图形(三维图形(3D Graph)7.5 Picture图形控件图形控件7.1 波形数据波形数据(Waveform)7.1.1 波形数据控件波形数据控件为了方便地显示波形,LabVIEW专门预定义了波形数据类型。它实际上就是按照一定格式预定义的簇,在信号采集,处理和分析过程中经常会用到它。 7.1 波形数据波形数据(Waveform)波形数据控件携带的数据包含了时间波形的基本信息,因此可以直接作为Chart和Graph的输入。横坐标代表时间,纵坐标代表Y值 7.1 波形数据波形数据(Waveform)7.1.2 波形数据操作函数波形数据操作函数虽然波形数据是一种预定义格式的簇,但是必须用专用的波形数据操作函数才能对它进行操作,其中某些操作函数与簇的操作函数非常类似。 波形数据的操作函数位于Functions Palette的Programming-Waveform子模板下 7.1 波形数据波形数据(Waveform)波形数据操作函数举例波形数据操作函数举例7.2 Chart趋势图趋势图Chart可以将新测得的数据添加到曲线的尾端,从而反映实时数据的变化趋势,它主要用来显示实时曲线。 7.2 Chart趋势图趋势图7.2.1 波形趋势图(波形趋势图(Waveform Chart)对于标量数据,对于标量数据,Chart图表直接将数据添加在图表直接将数据添加在曲线的尾端。曲线的尾端。 7.2 Chart趋势图趋势图对于一维数组数据,它会一次性把一维数组的数据添加在曲线末端,即曲线每次向前推进的点数为数组数据的点数。 7.2 Chart趋势图趋势图若要显示多条标量曲线,只需要用簇的Bundle函数将它们绑定在一起作为输入即可。 7.2 Chart趋势图趋势图对于二维数组,缺省情况下是每一列的数据当作一条一维数组曲线。 7.2 Chart趋势图趋势图技巧:技巧:若想将曲线截图,可以通过右击曲线选择Data Operations-Copy Data将曲线图复制到剪切板上。7.2 Chart趋势图趋势图7.2.2 定制定制Chart显示样式显示样式分栏显示多条曲线。分栏显示多条曲线。 右击Chart选择Stack Plots 7.2 Chart趋势图趋势图7.2.2 定制定制Chart显示样式显示样式设置更新模式设置更新模式右击Chart选择Advanced-Update Mode可以设置曲线的更新模式。Strip Chart模式:曲线填满显示区后曲线通过左移来更新曲线。Scope Chart模式:曲线填满显示区后直接清空显示区重新开始从左向右增长曲线在Sweep Chart模式:通过一条指示红线从左向右刷新数据 7.2 Chart趋势图趋势图7.2.3 带时间轴的实时曲线带时间轴的实时曲线7.3 Graph图表图表Graph和Chart的区别在于Graph是一次性将现有数据绘图,在绘图之前先自动清空图表,而不会将新数据添加到曲线的尾端。根据显示方法,Graph又分为波形图、XY曲线图、强度图、数字时序图和三维图。 7.3 Graph图表图表7.3.1 定制定制Graph属性属性 7.3 Graph图表图表右击Graph控件可以看到该控件有很多属性可以设置。选择Visible Items可以看到关于该控件的很多辅助选项。选择这些选项可以使它们都可见,如下图所示。 7.3 Graph图表图表Waveform Graph7.3.2 Waveform GraphWaveform Graph可以有多种数据输入类型:一维数组,二维数组,簇,簇数组,波形数据。它在Controls Palette中的位置为Modern-Graph-Waveform Graph。7.3 Graph图表图表Waveform Graph1、一维数组作为输入、一维数组作为输入当输入数据为一维数组时,当输入数据为一维数组时,Waveform Graph直接将一维数组画成一条曲线,纵坐标为数组直接将一维数组画成一条曲线,纵坐标为数组元素的值,横坐标为数组索引。元素的值,横坐标为数组索引。 7.3 Graph图表图表Waveform Graph2、二维数组作为输入、二维数组作为输入当输入数组为二维数组时,缺省情况下每一行的数据对应一条曲线,即曲线的数目和行数相同。 7.3 Graph图表图表Waveform Graph3、簇作为输入、簇作为输入簇作为输入时需要指定三个元素:起始位置x0、数据点间隔dx和数组数据。 7.3 Graph图表图表Waveform Graph4、簇数组作为输入、簇数组作为输入一维簇数组也可以直接作为Graph的输入,此时相当于x0为0,dx为1 7.3 Graph图表图表Waveform Graph5、波形数据作为输入、波形数据作为输入由于波形数据所携带的数据横轴为时间,因此需要将Waveform Graph的横轴设为时间轴。 7.3 Graph图表图表XY Graph7.3.3 XY Graph当我们需要画的曲线是由当我们需要画的曲线是由(x, y)坐标决定的时候,坐标决定的时候,我们就需要采用我们就需要采用XY Graph。其实其实Waveform Graph在一定意义上也是在一定意义上也是XY Graph,但是它的,但是它的X轴必须是等间距的,而且轴必须是等间距的,而且不可控制。不可控制。 7.3 Graph图表图表XY Graph1、XY两个一维数组绑定为簇作为输入两个一维数组绑定为簇作为输入 这是最简的一种情形,Bundle函数的输入的第一个数组为X Array,第二个数组为Y Array。绑定为簇后可以直接输入,也可以将多个簇Build为一维数组输入实现多条曲线。 7.3 Graph图表图表XY Graph2、坐标点簇数组作为输入、坐标点簇数组作为输入该方式将各个点的坐标绑定为簇然后作为簇数组输入,和直接将该方式将各个点的坐标绑定为簇然后作为簇数组输入,和直接将XY数组绑定为簇输入效果一样。但是后者不一定需要数组绑定为簇输入效果一样。但是后者不一定需要XY数组的数组的大小一致,它会自动将大的数组裁剪。大小一致,它会自动将大的数组裁剪。 7.3 Graph图表图表XY Graph3、时间作为、时间作为X轴轴利用利用XY Graph实现实现历史曲线历史曲线 7.3 Graph图表图表XY Graph4、Express XY GraphExpress XY Graph采用了LabVIEW的Express技术,将Express XY Graph放置在前面板上的同时,在程序框图中会自动添加一个VI,它的XY轴数据为动态数据类型。 7.3 Graph图表图表7.3.4 亮度图亮度图(Intensity Graph & Chart)7.3 Graph图表图表7.3.5 数字波形图数字波形图(Digital Waveform Graph)7.4 三维图形(三维图形(3D Graph)1、三维曲面图(、三维曲面图(3D Surface Graph)将该控件放置在前面板上的同时,在背面板也会同时出现一个ActiveX控件和一个VI函数3D Surface.vi。 7.4 三维图形(三维图形(3D Graph)2、三维参量曲面图(、三维参量曲面图(3D Parametric Graph)它需要它需要3个轴的数据均为二维数组,分别决定个轴的数据均为二维数组,分别决定了相对于了相对于x平面、平面、y平面和平面和z平面的曲面。平面的曲面。 7.4 三维图形(三维图形(3D Graph)3、三维曲线图(、三维曲线图(3D Curve Graph) 7.5 Picture图形控件图形控件向Picture控件导入图片7.5 Picture图形控件图形控件利用Picture控件画图 小试身手1. 请说出Chart、Waveform Graph、XY Graph之间的主要区别。小试身手2. 利用随机数发生器仿真一个0到5V的采样信号,每200ms采一个点,利用实时趋势曲线实时显示采样结果。小试身手3. 在习题2的基础上再增加1路电压信号采集,此路电压信号的范围为5到10V。小试身手4.利用随机数发生器仿真一个0到5V的采样信号,每200ms采一个点,共采集50个点,采集完后一次性显示在Waveform Graph上。小试身手5. 在习题4的基础上再增加1路电压信号采集,此路电压信号的范围为5到10V,采样间隔是50ms,共采100个点。采样完成后,将两路采样信号显示在同一个Waveform Graph中。小试身手6. 将习题5中的X轴改为时间轴显示,要求时间轴能真实的反映采样时间。分析为什么与习题5的显示结果截然不同?小试身手7. 利用Signal Processing-Signal Generation-Sine Pattern.vi(如右上图所示)产生两条正弦曲线,将两条曲线分别作为XY Graph的XY输入。通过改变其中一条曲线的频率和相位来研究李萨如图形。第第8章章 Express VI快速搭快速搭建专业测试系统建专业测试系统引子自LabVIEW 7开始,LabVIEW提供了Express技术,用以快捷简便地搭建专业的测试系统。在此后的版本中,Express技术得到了不断的加强。它将各种基本函数进一步打包为更加智能,功能更加丰富的函数;并对其中某些函数提供配置对话框,通过配置框可以对函数进行详细的配置。因此,通过Express VI我们可以用很少的步骤实现功能完善的测试系统。对于复杂的系统,利用Express VI也能起到极大的简化作用。本章内容8.1 初识初识Express技术技术8.2 动态数据类型动态数据类型 8.3 Express VIs简介简介8.4 跟着实例学跟着实例学基于基于Express VI的声音的声音信号采集系统信号采集系统8.1 初识初识Express技术技术Express技术包含前面板控件和程序框图VI函数 8.1 初识初识Express技术技术基于配置的编程方式仿真信号发生器Express VI 参数配置对话框8.1 初识初识Express技术技术利用利用Express VI搭建的信号滤波器搭建的信号滤波器8.2 动态数据类型动态数据类型针对Express VI的灵活性,LabVIEW提供了动态数据类型动态数据类型(Dynamic Data Type, DDT)来携带Express VI的输入与输出信号。 动态数据类型能够携带单点,单通道(一维数组)或多通道(二维数组)的数据或波形数据类型的数据。此外,它还包含了一些信号的属性信息,譬如信号的名称、采集日期时间等。 8.2 动态数据类型动态数据类型由于动态数据类型能够包含单个或多个信号,因此还可以将多个DDT数据合并或者将合并后的DDT数据再拆开。这可以通过Express-Signal Manipulation面板下的Merge Signals和Split Signals函数实现。 8.3 Express VIs简介简介8.3.1 信号输入(信号输入(Input) Express VIs信号输入信号输入Express VIs在Express-Input面板下,主要用来从仪器采集信号或产生仿真信号;通过这些函数,信号可以来源于仪器,也可以来源于文件或者由计算机仿真产生。 8.3 Express VIs简介简介8.3 Express VIs简介简介8.3.2 信号分析(信号分析(Signal Analysis)Express VIs信号分析信号分析Express VIs在Express-Signal Analysis面板下。该面板下包含了最常用的信号分析函数,例如谱测量、失真度测量、曲线拟合、滤波器和直方图等。8.3 Express VIs简介简介8.3.3 输出(输出(Output)Express VIsOutput Express VIs在Express-Output面板下,用于将信号数据存入文件,产生报表或向仪器输出真实信号等8.3 Express VIs简介简介8.3 Express VIs简介简介8.3.4 信号操作(信号操作(Signal Manipulation)Express VIs信号操作信号操作Express VIs在Express-Signal Manipulation面板下。主要用于对信号数据进行各种操作,譬如信号合并、类型转换、信号连接、抽样信号、触发信号和选择信号等;8.3 Express VIs简介简介8.3.5 算术与比较(算术与比较(Arithmetic & Comparison)Express VIs算术与比较算术与比较Express VIs在Express-Arithmetic & Comparison面板下,它包含一些基本的数学函数和比较操作符,以及数字和字符串等。8.3 Express VIs简介简介8.3.6 执行控制执行控制Express VIs执行控制执行控制Express VIs在Express-Execution Control面板下,包含了一些基本的程序结构以及时间函数,譬如While结构,Case结构,时间延时和消逝时间等。 8.4 跟着实例学跟着实例学基于基于Express VI的声音信号采集系统的声音信号采集系统本例中将声卡采集到的声音信号进行高通滤波,然后将信号数据重新输入声卡播放,并将采集到的声音信号写入LabVIEW测试文件(.lvm文件),最后生成HTML报表。 本例中基本上包含了信号采集系统的基本功能:信号采集、信号处理,存储和生成报表。 8.4 跟着实例学跟着实例学基于基于Express VI的声音信号采集系统的声音信号采集系统8.4 跟着实例学跟着实例学基于基于Express VI的声音信号采集系统的声音信号采集系统小试身手利用Express VI产生一个带白噪声的正弦信号,然后用功率谱分析Express VI对其进行功率谱分析,并将原信号与分析结果写入测量文件。第第9章章 文件文件I/O引子对于一个完整的测试系统或数据采集系统,我们经常需要将硬件的配置信息写入配置文件或者将采集到的数据以一定格式存储在文件中保存数据。因此LabVIEW提供了强大的文件I/O函数用以满足不同的文件操作需求。 本章内容9.1 选择合适的文件类型选择合适的文件类型9.2 文件的基本操作文件的基本操作9.3 文本文件和表单文件文本文件和表单文件9.4 二进制文件(二进制文件(Binary Files)9.9 基于文本的测量文件(基于文本的测量文件(.lvm文件)文件)9.11 高速数据流高速数据流文件文件(.tdms文件)文件)9.1 选择合适的文件类型选择合适的文件类型LabVIEW支持的文件类型支持的文件类型文本文件(文本文件(Text Files) 表单文件表单文件(Spreadsheet Files)二进制文件(二进制文件(Binary Files) 数据记录文件(数据记录文件(Datalog Files)XML文件文件 配置文件(配置文件(Configuration Files) 波形波形(Waveform)文件文件 基于文本的测量文件(基于文本的测量文件(.lvm文件)文件) 数据存储文件数据存储文件(.tdm文件文件) 高速数据流高速数据流文件文件文件文件(.tdms文件文件) 9.2 文件的基本操作文件的基本操作基本步骤基本步骤打开打开-读写、操作读写、操作-关闭关闭9.3 文本文件和表单文件文本文件和表单文件它将字符串以ASCII编码格式存储在文件中,譬如txt文件和Excel文件。这种文件类型最常见,可以在各种操作系统下由多种应用程序打开,譬如记事本,Word,Excel等第三方软件,因此这种文件类型的通用性最强。但是相对于其它类型文件,它消耗的硬盘空间相对较大,读写速度也较慢,也不能随意的在指定位置写入或读出数据。如果需要将数据存储为文本文件必须先将数据转换为字符串才能存储。 9.3 文本文件和表单文件文本文件和表单文件读写文本文件VI9.3 文本文件和表单文件文本文件和表单文件举例写文本文件举例读文本文件举例9.3 文本文件和表单文件文本文件和表单文件读写表单文件VI9.3 文本文件和表单文件文本文件和表单文件读写表单文件举例写表单文件读表单文件9.4 二进制文件(二进制文件(Binary Files)这是最有效率的一种文件存储格式,它占用的硬盘空间最少而且读写速度最快。它将二进制数据,譬如32位整数以确定的空间存储4个字节来存储,因此不会损失精度,而且可以随意的在文件指定位置读写数据。 二进制文件的数据输入可以是任何数据类型,譬如数组和簇等复杂数据,但是在读出时必须给定参考 9.4 二进制文件(二进制文件(Binary Files)写二进制文件举例读二进制文件举例9.9 基于文本的测量文件(基于文本的测量文件(.lvm文件)文件)它将动态类型数据按一定的格式存储在文本文件中。它可以在数据前加上一些信息头,譬如采集时间等,可以由Excel等文本编辑器打开查看其内容。9.11 高速数据流高速数据流文件文件(.tdms文件)文件)它将动态类型数据存储为二进制文件,同时可以为每一个信号都添加一些有用的信息,譬如信号名称和单位等等。在查询时可以通过这些附加信息来查询所需要的数据。它被用来在NI各种软件之间交换数据,譬如DIAdem。它比.lvm文件占用空间更小,读写速度更快。非常适合用来存储数量庞大的测试数据。 9.11 高速数据流高速数据流文件文件(.tdms文件)文件)每一个TDMS文件以三个不同层次来存储附加信息:File、group和channel。 9.11 高速数据流高速数据流文件文件(.tdms文件)文件)写TDMS文件示例9.11 高速数据流高速数据流文件文件(.tdms文件)文件)在TDMS File Viewer中查看文件内容9.11 高速数据流高速数据流文件文件(.tdms文件)文件)TDMS 文件读操作示例文件读操作示例 小试身手1. 文本文件和二进制文件的主要区别是什么?2. 请说出下面这几种文件是文本文件还是二进制文件:数据记录文件(Datalog Files),XML文件,配置文件,波形文件,LVM文件,TDMS文件。小试身手3. 有一个测量程序,采集两路信号,每1s采集一次,要求每采集一次,就将采集结果写入文本文件尾部,即使重新运行程序,仍能保证数据添加到文件尾部,而不会覆盖原有数据。格式为a保留4位小数,b为整数,如右图所示。小试身手4. 在LabVIEW中读取刚才写入的文件内容。5. 将习题3的采集数据,采集完毕后写入表单文件,如下图所示:小试身手6. 将习题3改为实时写入表单文件,添加一列日期时间以反映真实的采样时间,并在第一行包含每列的描述信息,如下图所示。小试身手7. 将右图所示的控件数据写入二进制文件,并用另一个VI将其读出查看。小试身手8. 用Simulate Signal Express VI仿真产生一个采样100000点的正弦仿真信号,并将其写入TDMS文件,要求同时为该通道设置两个描述属性:频率和采样间隔。第第10章章 子子VI引子LabVIEW中的子VI(SubVI)类似于文本编程语言中的函数。通过子VI,我们可以把程序分割为一个个小的模块来实现 本章内容10.1 创建子创建子VI10.2 查看查看VI层次结构(层次结构(VI Hierarchy)10.3 定义子定义子VI属性属性10.4 多态多态(Polymorphic)VI10.1 创建子创建子VI其实任何VI本身就可以作为子VI被其它VI调用,只是你需要在普通VI的基础上多进行两步简单的操作而已:定义连接端子定义连接端子和图标图标。 10.1 创建子创建子VI第一步:新建一个第一步:新建一个Blank VI,编写其程序框,编写其程序框图图 第二步:编辑第二步:编辑VI图标。图标。 10.1 创建子创建子VI第三步:建立连接端子第三步:建立连接端子。第四步:第四步:保存该VI,将该VI当作子VI调用 10.2 查看查看VI层次结构(层次结构(VI Hierarchy)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清除图标。第二步第二步:在256 Colors下画一个封闭封闭的图形。为了方便与端子对应,你可以选择Show Terminals复选框显示连接端子。第三步第三步:将画好的256色图标分别复制到16 Colors和B & W下,确保三种显示模式所显示的图标形状一致。10.4 多态多态(Polymorphic)VI LabVIEW中的多态与C+中的多态概念类似,即函数可以根据输入数据的类型自动选择执行内容。 在LabVIEW中你也可以创建自己的多态VI。它实际上是多个VI的集合,这些VI具有相同的端子模式。 10.4 多态多态(Polymorphic)VI创建多态创建多态VI举例举例n多态多态VI对应的两个实例对应的两个实例VI 10.4 多态多态(Polymorphic)VI调用多态子调用多态子VI 小试身手1. 写一个子VI计算输入双精度数组所有元素的平均值,并在上层VI调用它。小试身手2. 在第5章习题2的基础上,利用子VI实现一个温度报警对话框,每当报警发生时就弹出该对话框,如下图所示,点击“知道了”按钮退出对话框。第第11章章 属性节点和方法节点属性节点和方法节点引子在面向对象的编程中,我们将类中定义的数据称为属性,而函数称为方法。实际上,LabVIEW中的控件、VI、甚至应用程序都有自己的属性和方法,譬如一个数值控件,它的属性包括它的文字颜色、背景颜色、Caption和Label等; 本章内容11.1 属性节点(属性节点(Property Node)11.2 方法节点(方法节点(Invoke Node)11.3 通过子通过子VI调用控件的属性和方法调用控件的属性和方法11.4 几种常用控件的编程举例几种常用控件的编程举例11.5 小结小结11.1 属性节点(属性节点(Property Node)属性节点可以用来通过编程设置或获取控件的属性,譬如在程序运行过程中,我们可以通过编程设置数值控件的背景颜色等属性。 Ring控件的属性节点举例控件的属性节点举例 11.1 属性节点(属性节点(Property Node)举例 通通过Visible属性控制按属性控制按钮是否可是否可见11.1 属性节点(属性节点(Property Node)举例 在事件结构中使用属性节点在事件结构中使用属性节点 11.2 方法节点(方法节点(Invoke Node)方法节点和属性节点非常类似,方法节点就好比控件的一个函数,它会执行一定的动作,有些时候还需要输入参数或返回数据。 树形控件的方法节点函数菜单及其方法节点示例树形控件的方法节点函数菜单及其方法节点示例11.3 通过子通过子VI调用控件的属性和方法调用控件的属性和方法一般情况下,将控件作为子VI的输入端时只能传递控件的值,而不能传递控件的属性 。那么如何才能在子VI中调用上层VI中控件的属性和方法节点呢?这就需要使用Refnum控件作为子VI的输入端子,在调用时将控件的Reference与Refnum端子连线即可。 11.3 通过子通过子VI调用控件的属性和方法调用控件的属性和方法通过子通过子VI调用控件的属性节点示例调用控件的属性节点示例 11.4 几种常用控件的编程举例几种常用控件的编程举例11.4.1 Ring控件和控件和Enum控件控件对于两种控件,用户都是一次只能选择其中一个项目,控件的输出值都为数字。不同的是Ring控件各项目的值是可以任意设定的,而Enum控件各项目的值一定是从0到n-1(n代表项目个数),这是因为Enum控件才是标准的枚举类型。Ring控件的项目可以是字符串或是图片。11.4 几种常用控件的编程举例几种常用控件的编程举例通过属性节点来设置通过属性节点来设置Ring控件的选项控件的选项 11.4 几种常用控件的编程举例几种常用控件的编程举例获取获取Ring控件或控件或Enum控件的当前选中文控件的当前选中文本本 11.4 几种常用控件的编程举例几种常用控件的编程举例11.4.2 列表框(列表框(Listbox)对于Ring控件和Enum控件,用户每次只能选择一个选项。而通过列表框用户每次可以选择一个或多个选项,甚至0个选项 通过编程编辑列表框选项通过编程编辑列表框选项 11.4 几种常用控件的编程举例几种常用控件的编程举例读取列表框选中选项的名称读取列表框选中选项的名称 11.4 几种常用控件的编程举例几种常用控件的编程举例11.4.3 树形控件(树形控件(Tree Control)通过编程为树形控件添加项目必须通过属性节通过编程为树形控件添加项目必须通过属性节点和方法节点才能实现点和方法节点才能实现 11.4 几种常用控件的编程举例几种常用控件的编程举例通过编程为树形控件添加项目通过编程为树形控件添加项目 11.4 几种常用控件的编程举例几种常用控件的编程举例11.4.4 自动图例举例自动图例举例11.4 几种常用控件的编程举例几种常用控件的编程举例11.5 小结小结从本章的例子可以看出,通过属性节点和方法节点可以让控件的功能与动态行为更加丰富。在LabVIEW编程中,当某种功能很难用普通的VI函数实现的时候,也许通过属性节点和方法节点就能很轻松地解决。所以若LabVIEW编程者想学到更多的编程技巧可以更多的去尝试控件的属性节点和方法节点。小试身手1. 在第6章习题1的基础上利用“报警信息”控件的blinking属性,实现在输出报警信息的同时伴随闪烁,如下图所示。为了能看到闪烁效果,需要将采样间隔设到5秒以上。小试身手2. 本书第156页中的图11.14所示的例子存在bug,for循环部分应该改为下面左图所示。在此基础上将for循环部分封装为子VI,利用编程生成如下面右图所示的树。第第12章章 人机界面交互设计人机界面交互设计引子LabVIEW很重要的一个优势就是界面编辑的所见即所得。LabVIEW前面板包含了大量形象逼真的控件,用户还可以创建自定义控件。前面板的窗口形式也可以以不同的方式显示以满足不同的需求。在用户交互方面,用户可以通过按钮、播放声音、对话框、菜单和键盘输入等多种方式与程序进行交互。本章内容12.1 VI属性设置属性设置12.2 对话框对话框12.3 错误处理错误处理12.4 菜单菜单12.5 鼠标指针鼠标指针12.6 播放声音播放声音12.7 自定义控件和自定义数据类型自定义控件和自定义数据类型12.9 设计形象生动的用户界面设计形象生动的用户界面12.1 VI属性设置属性设置VI有很多属性是可以设置的,这其中包括:VI图标、VI修改历史、VI帮助文档、密码保护、前面板显示内容、窗口大小、执行控制和打印属性等。通过配置这些属性可以让我们的VI适合在不同的场合运行。12.1 VI属性设置属性设置选择菜单File-VI Properties打开如下图所示的对话框。缺省为General选项,在该选项下可以修改VI图标,查看VI修改历史等。12.1 VI属性设置属性设置前面板显示格式设置对话框前面板显示格式设置对话框 12.2 对话框对话框12.2.1 普通对话框普通对话框对话框VI函数在Functions Palette的Programming-Dialog & User Interface面板下。按类型分为两种对话框:一种是信息显示对话框,另一种是提示用户输入对话框。 12.2 对话框对话框12.2.2 用户自定义对话框用户自定义对话框除了LabVIEW提供的简单的对话框,用户还能通过子VI的方式实现用户自定义的对话框。 设置子设置子VI调用方式调用方式12.2 对话框对话框用户自定义的对话框举例用户自定义的对话框举例 12.3 错误处理错误处理LabVIEW通过Error in 和Error out簇来携带错误信息,并可以将错误信息从底层VI传递到上层VI 12.3 错误处理错误处理在调用含有error out输出的子VI时,当错误发生时若错误输出端悬空,就会自动弹出错误对话框显示错误信息,并询问是否继续运行。错误对话框除了显示error out簇中的代码,错误源信息外,还会显示错误的可能原因,这对分析问题非常重要。 12.4 菜单菜单12.4.1 运行时主菜单(运行时主菜单(Run-Time Menu)在Edit菜单中选择Run-Time Menu会弹出如图所示的菜单编辑器。 12.4 菜单菜单12.4.1 运行时主菜单(运行时主菜单(Run-Time Menu)菜单操作相关菜单操作相关VI函数面板函数面板12.4 菜单菜单菜单响应的程序框图菜单响应的程序框图 12.4 菜单菜单 12.4 菜单菜单通过事件结构实现菜单响应的程序框图通过事件结构实现菜单响应的程序框图 12.4 菜单菜单12.4.2 右键快捷菜单(右键快捷菜单(Run-Time Shortcut Menu)12.5 鼠标指针鼠标指针鼠标指针形状经常用来为用户显示一定的信息,譬如沙漏形状 代表系统正忙,前后箭头 代表用户此时可以调整对象大小,十字箭头 代表此时用户可以移动窗口。 12.5 鼠标指针鼠标指针举例12.6 播放声音播放声音12.7 自定义控件和自定义数据类型自定义控件和自定义数据类型12.7.1 自定义控件(自定义控件(Custom Controls)12.7 自定义控件和自定义数据类型自定义控件和自定义数据类型自定义控件编辑窗口自定义控件编辑窗口 12.7 自定义控件和自定义数据类型自定义控件和自定义数据类型12.7.2 自定义数据类型(自定义数据类型(Type Definition)12.9 设计形象生动的用户界面设计形象生动的用户界面12.9.1 修饰静态界面修饰静态界面调节控件的颜色、大小和位置调节控件的颜色、大小和位置控件的排版,分组控件的排版,分组利用修饰元素利用修饰元素12.9 设计形象生动的用户界面设计形象生动的用户界面漂亮的界面举例漂亮的界面举例12.9 设计形象生动的用户界面设计形象生动的用户界面12.9.2 动态交互界面动态交互界面美观的静态界面可以让用户感到赏心悦目,而动态的交互界面可以为用户提供更多的信息。譬如系统可以根据配置情况载入不同的界面或菜单;用不断闪烁的数字控件表示有报警发生;当用户移动鼠标到某代表关键操作的按钮上时按钮颜色发生变化从而提醒用户小心操作12.9 设计形象生动的用户界面设计形象生动的用户界面利用控件的利用控件的Blinking属性来显示报警举例属性来显示报警举例 12.9 设计形象生动的用户界面设计形象生动的用户界面确认对话框举例小试身手1. 利用VI的属性设置,编写一个具有如下行为的VI:1) VI一打开时便开始自动运行;2)运行时,前面板自动显示在屏幕中央;3)添加密码保护,需要密码才能查看程序框图;4)添加VI帮助文档;5)运行时使滚动条、菜单、工具栏不可见;6)运行时不允许直接关闭窗口。小试身手2. 写一个能够传递错误的子VI,子VI的功能是a+b=c,当有错误输入时,错误直接输出,c输出为0。当无错误输入时,进行正常计算。小试身手3. 编写一个VI,其菜单结构如右图所示。菜单行为如下:1)当VI初始运行时,升温和降温两个菜单项处于无效(Disable)状态,当用户点击启动菜单项后,这两个菜单变为使能(Enable)状态,同时启动菜单项变为无效状态;2)点击退出按钮停止VI运行;3)点击其它按钮,弹出如右下图所示的对话框;4)要求最好用事件结构实现。小试身手4. 利用下面这两张图片做一个自定义按钮控件,ON为笑脸,OFF为哭泣。第第13章章 数学分析与信号处理数学分析与信号处理引子LabVIEW作为自动化测试、测量领域的专业软件,其内部集成了600多个分析函数,用于信号生成、频率分析、概率、统计、数学运算、曲线拟合、插值、数字信号处理等等各种数据分析应用。此外,LabVIEW还提供了附加工具软件专业应用于某些信号处理应用中,如声音与振动、机器视觉、RF/通信测量、瞬态/短时持续信号分析等等。本章内容13.1 数学分析数学分析13.1.1 图形化编程与数学分析图形化编程与数学分析13.1.2 基本数学函数基本数学函数13.1.3 线性代数线性代数13.1.4 曲线拟合曲线拟合13.1.7 概率与统计概率与统计13.1.9 常微分方程常微分方程13.1.12 MathScript本章内容13.2 数字信号处理数字信号处理13.2.1 信号发生信号发生13.2.3 波形测量波形测量13.2.5 频域分析频域分析13.2.7 数字滤波器数字滤波器13.2.8 逐点分析库逐点分析库13.1.1 图形化编程与数学分析图形化编程与数学分析LabVIEW具有强大的数学分析能力数学分析数学分析VI函数面板函数面板 13.1.1 图形化编程与数学分析图形化编程与数学分析子面板名称子面板名称描述描述Numeric最基本的数学操作,例如加减乘除、类型转换和数据操作等。Elementary & Special Functions一些常用的数学函数,例如正余弦函数、指数函数、双曲线函数、离散函数和贝塞尔函数等。Linear Algebra线性代数,主要是矩阵操作的相关函数Fitting曲线拟合和回归分析Interpolation & Extrapolation一维和二维的插值函数,包括分段插值、多项式插值和傅立叶插值Integration & Differentiation积分与微分函数Probability & Statistics概率与统计Optimization最优化Differential Equations解常微分方程Geometry几何Polynomial多项式计算和分析Scripts & Formulas脚本节点、公式节点以及公式解析的相关函数13.1.2 基本数学函数基本数学函数基本数学函数分为12类:三角函数、指数函数、双曲线函数、门函数、离散数学函数、贝塞尔函数、函数、超几何分布函数、椭圆积分、指数函数、误差函数和椭圆抛物函数。基本数学函数面板 13.1.3 线性代数线性代数强大的矩阵运算能力线性代数函数面板13.1.3 线性代数线性代数例例13.2 解线性方程组解线性方程组Ax=b,其中其中A=b= 13.1.4 曲线拟合曲线拟合二维曲线拟合就是根据输入数据的坐标(xi,yi),即X数组和Y数组,找出yi和xi的函数关系y=f(x)。对于不同的对象,有不同的拟合方法:线性拟合(Linear Fit)、指数拟合(Exp fit)、幂拟合(Power Fit)、高斯拟合(Gauss Peak Fit)、对数拟合(Logarithm Fit)、多项式拟合(Polynomial Fit)、最小二乘法拟合(Gen. LS Lin. Fit)和非线性拟合(Nonlinear Curve Fit)等等。13.1.4 曲线拟合曲线拟合例例13.3 最小二乘法曲线拟合举例最小二乘法曲线拟合举例利用最小二乘法拟合曲线,将因变量y与自变量x的关系表达为本例中:假设猜测函数为:13.1.4 曲线拟合曲线拟合其中:下面我们通过最小二乘法拟合函数 General LS Linear Fit.vi 来求解回归系数13.1.7 概率与统计概率与统计概率与统计函数面板概率与统计函数面板 13.1.7 概率与统计概率与统计例例13.5 概率与统计函数举例概率与统计函数举例该例中首先通过该例中首先通过Gaussian White Noise.vi产产生一个满足高斯分布的随机数序列,然后通过生一个满足高斯分布的随机数序列,然后通过Create Histogram和和Statistic两个两个Express VI对该随机序列进行分析。对该随机序列进行分析。 13.1.7 概率与统计概率与统计13.1.9 常微分方程常微分方程常微分方程函数面板常微分方程函数面板 13.1.9 常微分方程常微分方程函数名称函数名称功能功能ODE Solver.vi解带初值的常微分方程:X=F(X,t)ODE Runge Kutta 4th Order.vi用龙格库塔方法解带初值的常微分方程ODE Cash Karp 5th Order.vi用Cash Karp方法解带初值的常微分方程ODE Euler Method.vi用欧拉方法解带初值的常微分方程ODE Linear nth Order Numeric.vi用数值解法解n阶线性齐次常微分方程ODE Linear nth Order Symbolic.vi用符号解法解n阶线性齐次常微分方程ODE Linear System Numeric.vi解一个带有常系数微分方程的n维齐次线性系统,结果为数值解ODE Linear System Symbolic.vi解一个带有常系数微分方程的n维齐次线性系统,结果为符号解13.1.9 常微分方程常微分方程例例13.7 常微分方程数值解举常微分方程数值解举例例设河边点O的正对岸为点A,河宽OAh,两岸为平行直线,水流速度为a,有一鸭子从点A游向点O,设鸭子(在静水中)的游速为b(ba),且鸭子游动方向始终朝着点O.求鸭子游过的迹线方程。鸭子游过的迹线鸭子游过的迹线13.1.9 常微分方程常微分方程通过分析得到迹线微分方程:使用ODE Runge Kutta 4th Order.vi函数求解13.1.9 常微分方程常微分方程13.1.12 MathScriptMathScript是LabVIEW 8以后版本推出的面向数学的文本编程语言,它带有交互式的窗口和可编程的接口。通过MathScript,喜欢文本编程的用户可以在LabVIEW中编写并执行MATLAB式的文本代码(.m文件)并能与图形化编程无缝结合。新的MathScript包含了600多个数学分析与信号处理函数,并增加和增强了丰富的图形功能。 13.1.12 MathScript使用MathScript的方法有两种:使用MathScript交互式窗口;通过交互式窗口,你可以像使用MATLAB一样执行命令、编译运行.m脚本文件、查看运行结果等。在程序框图中使用MathScript节点。 13.1.12 MathScript使用MathScript交互式窗口13.1.12 MathScript运行结果13.1.12 MathScript在程序框图中使用MathScript节点13.1.12 MathScript13.2 数字信号处理数字信号处理高效、灵活、强大的数字信号处理能力数字信号处理函数面板数字信号处理函数面板13.2 数字信号处理数字信号处理子面板子面板描述描述Waveform Generation通过该VI函数面板可以产生各种不同类型的波形信号Waveform Conditioning用于波形信号的数字滤波和窗函数等信号调理Waveform Measurements波形信号测量面板,用来实现常见的时域和频域的测量,譬如直流交流成分分析、振幅测量、傅立叶变换、功率谱计算、谐波畸变分析、频率响应和信号提取等Signal Generation按照具体的波形模式产生一维实数数组表示的信号。Signal Operation对信号进行各种操作,例如卷积、自相关分析等。Windows窗函数分析Filters实现IIR、FIR和非线性滤波Spectral Analysis实现基于数组的谱分析Transforms信号处理中各种常见的变化函数Point By Point逐点分析函数库13.2.1 信号发生信号发生波形发生函数可以用来模拟产生你需要的各种波形。LabVIEW有两个信号发生函数面板,其中Waveform Generation用于产生波形数据类型表示的波形信号,Signal Generation用于产生一维数组表示的波形信号。 13.2.1 信号发生信号发生Waveform Generation13.2.1 信号发生信号发生Signal Generation13.2.1 信号发生信号发生13.2.1 信号发生信号发生13.2.3 波形测量波形测量波形测量面板提供的VI函数用于对波形的各种信息进行测量,譬如直流交流分析、振幅测量、脉冲测量、傅立叶变换、功率谱测量、谐波畸变分析、过渡分析、频率响应等。 13.2.3 波形测量波形测量例例13.9 测量波形的直流分量和有效值测量波形的直流分量和有效值13.2.3 波形测量波形测量13.2.5 频域分析频域分析频域分析函数被划分为两个面板:Transforms面板实现的函数功能主要有傅立叶变换、Hilbert变换、小波变换、拉普拉斯变换等。Spectral Analysis面板包含的函数主要包括功率谱分析、联合时频分析等。 13.2.5 频域分析频域分析13.2.5 频域分析频域分析例例13.11 信号的傅立叶变换信号的傅立叶变换13.2.5 频域分析频域分析13.2.5 频域分析频域分析转变为单边傅立叶变换13.2.5 频域分析频域分析13.2.5 频域分析频域分析例例13.12 非均匀采样数据的功率谱计算非均匀采样数据的功率谱计算13.2.5 频域分析频域分析13.2.7 数字滤波器数字滤波器滤波器分为模拟滤波器和数字滤波器。传统模拟滤波器的输入与输出都是连续的。而数字滤波器的输入与输出都是离散时间信号。数字滤波器具有如下好处:软件可编程,因此易于搭建和测试只需要加减乘三种基本数学操作不随外界环境条件变化而漂移,也不会老化有非常高的性价比13.2.7 数字滤波器数字滤波器LabVIEW提供的IIR滤波器类型有Butterworth、Chebyshev、Inverse Chebyshev、Elliptic和Bessel滤波器。它们都有各自的特点,用途也不尽相同。13.2.7 数字滤波器数字滤波器LabVIEW还提供了高级IIR和FIR滤波器子面板。在高级面板中,滤波器的设计部分和执行部分是分开的。由于滤波器的设计很费时间,而滤波过程则很快。在含有循环结构的程序中,可以将滤波器的设计放在循环外,将设计好的滤波器参数传递到循环内,在循环内进行滤波,从而提高程序的运行效率。 13.2.7 数字滤波器数字滤波器滤波器选择向导滤波器选择向导 13.2.7 数字滤波器数字滤波器滤波器函数面板滤波器函数面板 13.2.7 数字滤波器数字滤波器例例13.15 低通滤波举例低通滤波举例13.2.7 数字滤波器数字滤波器13.2.8 逐点分析库逐点分析库逐点分析中,数据分析是针对每个数据点的,对采集到的每一点数据都可以立即进行分析,而且分析可以是连续进行的。因此通过实时分析,用户可以实时的观察到当前采集数据的分析结果,从而使用户能够跟踪和处理实时事件。 13.2.8 逐点分析库逐点分析库13.2.8 逐点分析库逐点分析库逐点分析函数的基本结构逐点分析函数的基本结构 13.2.8 逐点分析库逐点分析库例例13.16 基于逐基于逐点分析的实时滤点分析的实时滤波波13.2.8 逐点分析库逐点分析库小试身手小试身手1. LabVIEW在数学分析与信号处理方面具有哪些优势?2. 利用基本数学函数面板提供的函数画出如下公式在-2pi,2pi之间的曲线。(利用Signal Generation下的函数产生-2pi,2pi之间的均匀采样点)小试身手小试身手3. 求解线性方程组求解线性方程组Ax=b,其中其中A=b= 小试身手小试身手4. 求解微分方程小试身手小试身手5. 用MathScript节点计算一个正弦信号迭加噪声后的单边傅立叶频谱。小试身手小试身手6. 将第5题用纯图形化编程实现。7. 将第5题用逐点分析函数实现,将采样间隔设为20ms以方便观察逐点分析结果,改变逐点分析函数的Sample Length查看结果有何不同?为什么不同?第第14章章 数据采集与仪器控制数据采集与仪器控制引子数据采集与仪器控制是LabVIEW最具竞争力的核心技术之一。NI公司提供了种类丰富的硬件设备以满足不同的测量与控制需求,其中包括数据采集(DAQ)硬件、实时测量与控制、PXI与Compact PCI、信号调理、开关、分布式I/O、机器视觉、运动控制、GPIB、串口和仪器控制、声音与振动测量分析、PAC(可编程自动化控制器)、VXI和VME等各种设备。应用遍布电子、机械、通信、汽车制造、生物、医药、化工、科研和教育等各个行业领域。通过丰富的驱动程序,LabVIEW能轻松实现与任何NI提供的硬件设备通讯。不仅如此,通过通用的驱动程序或接口,例如VISA、IVI、OPC、ActiveX和DLL等,LabVIEW几乎能与任何厂商甚至自制的硬件通讯。安装驱动本章内容14.1 数据采集(数据采集(DAQ)14.1.1 数据采集系统的构成14.1.2 NI-DAQmx14.2 仪器控制简介仪器控制简介14.3 选择合适的总线选择合适的总线14.4 仪器驱动程序仪器驱动程序14.4.1 可编程仪器标准命令SCPI14.4.2 VISA 14.4.3 IVI可互换的虚拟仪器驱动程序14.5 直接直接I/O(Direct I/O)14.5.1仪器I/O助手(Instrument I/O Assistant)14.5.2 Port I/O14.5.3 NI Spy调试驱动的好帮手14.6 与第三方硬件连接与第三方硬件连接14.1.1 数据采集系统的构成数据采集系统的构成数据采集(数据采集(Data AcQuisition,DAQ)是指从传感器和其它待测设备等模拟或数字被测单元中自动采集信息的过程。数据采集系统是结合基于计算机的测量软硬件产品来实现灵活的、用户自定义的测量系统。一个完整的DAQ系统包括传感器或变换器、信号调理设备、数据采集和分析硬件、计算机、驱动程序和应用软件等。14.1.1 数据采集系统的构成数据采集系统的构成典型的基于典型的基于PC的数据采集的数据采集(DAQ)系统系统 14.1.1 数据采集系统的构成数据采集系统的构成1. 传感器和变换器传感器和变换器传感器感应物理信息并生成可测量的电信号。传感器感应物理信息并生成可测量的电信号。例如热电偶、电阻式测温计(例如热电偶、电阻式测温计(RTD)、热敏)、热敏电阻器和电阻器和IC传感器可以把温度转变为传感器可以把温度转变为ADC可可测量的模拟信号。测量的模拟信号。 14.1.1 数据采集系统的构成数据采集系统的构成2. 信号调理信号调理从传感器得到的信号可能会很微弱,或者含有大量噪声,或者从传感器得到的信号可能会很微弱,或者含有大量噪声,或者是非线性的等等,这种信号在进入采集卡之前必须经过信号调是非线性的等等,这种信号在进入采集卡之前必须经过信号调理。理。信号调理的方法主要包括放大、衰减、隔离、多路复用、滤波、信号调理的方法主要包括放大、衰减、隔离、多路复用、滤波、激励和数字信号调理等激励和数字信号调理等 14.1.1 数据采集系统的构成数据采集系统的构成3. 数据采集设备数据采集设备通过信号调理后的信号就可以与数据采集设备通过信号调理后的信号就可以与数据采集设备连接了。通常情况下数据采集设备是一个数据连接了。通常情况下数据采集设备是一个数据采集卡,与计算机的连接可以采用多种方式。采集卡,与计算机的连接可以采用多种方式。NI的数据采集设备支持的总线类型包括的数据采集设备支持的总线类型包括PCI、PCI Express、PXI、PCMCIA、USB、CompactFlash、Ethernet以及火线等各种总以及火线等各种总线。线。数据采集卡的功能包括模拟输入、模拟输出、数据采集卡的功能包括模拟输入、模拟输出、数字数字I/O、触发采集和定时、触发采集和定时I/O。14.1.1 数据采集系统的构成数据采集系统的构成4. PC与软件与软件软件使软件使PC与数据采集硬件形成了一个完整的数据采与数据采集硬件形成了一个完整的数据采集、分析和显示系统。集、分析和显示系统。软件分为驱动程序和上层应用程序。软件分为驱动程序和上层应用程序。驱动程序可以直接对数据采集硬件的寄存器编程,管理数据驱动程序可以直接对数据采集硬件的寄存器编程,管理数据采集硬件的操作并把它和处理器中断、采集硬件的操作并把它和处理器中断、DMA和内存这样的计和内存这样的计算机资源结合在一起。驱动程序隐藏了复杂的硬件底层编程算机资源结合在一起。驱动程序隐藏了复杂的硬件底层编程细节,为用户提供容易理解的接口。一般来说,硬件厂商在细节,为用户提供容易理解的接口。一般来说,硬件厂商在卖出硬件的同时也会提供驱动程序。卖出硬件的同时也会提供驱动程序。上层应用程序用来完成数据的分析,存储和显示等。上层应用程序用来完成数据的分析,存储和显示等。LabVIEW就是一个极佳的开发上层应用程序的开发平台。就是一个极佳的开发上层应用程序的开发平台。 14.1.2 NI-DAQmxNI-DAQmx是LabVIEW 7.0以来新增的DAQ软件。它包括支持200多种NI数据采集设备的驱动,并提供相应的VI函数。此外它还包括Measurement & Automation Explorer(MAX)、数据采集助理(DAQ Assistant)以及VI Logger数据记录软件。通过这些工具并结合LabVIEW可以节省大量的系统配置、开发和记录数据的时间。14.1.2 NI-DAQmx1. Measurement & Automation Explorer (MAX)快速检测及配置所有硬件快速检测及配置所有硬件通过测试面板验证硬件的运作状况通过测试面板验证硬件的运作状况实施简便、交互式的测量实施简便、交互式的测量给给/通道命名通道命名14.1.2 NI-DAQmx举例:通过举例:通过MAX配置串口属性配置串口属性 14.1.2 NI-DAQmx测试串口操作测试串口操作 14.1.2 NI-DAQmx2. DAQ助手(助手(DAQ Assistant)DAQ助手提供了一个对话框式助手提供了一个对话框式的向导用于测量任务的配置、的向导用于测量任务的配置、测试和自动代码生成。配合测试和自动代码生成。配合Express VI,通过,通过DAQ Assistant可以在数分钟内搭建可以在数分钟内搭建一个专业的数据获取系统。一个专业的数据获取系统。14.1.2 NI-DAQmx 配置虚拟通道配置虚拟通道 14.1.2 NI-DAQmx自动生成代码自动生成代码 14.2 仪器控制简介仪器控制简介仪器控制是指通过PC上的软件远程控制总线上的一台或多台仪器。它比单纯的数据采集要复杂的多。它需要将仪器或设备与计算机连接起来协同工作,同时还可以根据需要延伸和拓展仪器的功能。通过计算机强大的数据处理、分析、显示和存储能力,可以极大的扩充仪器的功能,这就是虚拟仪器的基本含义。 14.2 仪器控制简介仪器控制简介一个完整的仪器控制系统除了包括计算机和仪器外,还必须建立仪器与计算机的通路以及上层应用程序。通路包括总线和针对不同仪器的驱动程序上层应用程序用于发送控制命令、仪器的控制面板显示以及数据的采集、处理、分析、显示和存储等。14.2 仪器控制简介仪器控制简介基于基于LabVIEW的仪器控制系统构架的仪器控制系统构架 LabVIEW图形化开发环境图形化开发环境Instrument DriversDirect I/O(Instrument I/O Assistant)GPIB串口以太网PXIVXIUSBOPC,ActiveX,DLL,Shared VariableCANModBus无线InstrumentsInstrumentsInstrumentsInstrumentsPCIPCI Express火线14.3 选择合适的总线选择合适的总线在开发一个测量系统时,选择正确的总线与选择一个具有合适采样速率和分辨率的设备一样重要。硬件总线可以影响测量的性能、系统搭建时间和便携性等。 14.3 选择合适的总线选择合适的总线独立总线独立总线,用于架式和堆式仪器的通信。独立总线包括T&M专用总线(如GPIB)和PC标准总线(如串行总线RS-232、以太网、USB、无线和IEEE 1394)。一些独立总线可用作其他独立总线的中介,如USB到GPIB的转换器。 模块化总线模块化总线,将接口总线合并到仪器中。模块化总线包括PCI、PCI Express、VXI和PXI。这些总线也可用作为不包括该总线的PC增加一个独立总线的中介,如PCI-GPIB控制卡。 14.3.1 独立总线独立总线1. GPIB通用接口总线(GPIBGeneral Purpose Interface Bus)是独立仪器上一种最通用的I/O接口。GPIB是专为测试测量和仪器控制应用设计的。 GPIB是一种数字的、8位并行通信接口,数据传输速率高达8M字节/秒。该总线可为一个系统控制器提供多达15台仪器连接,连线长度小于20米。 PC本身很少带有GPIB。实际上,用户通常使用一个插卡(如PCI-GPIB)或一个外部转换器(如GPIB-USB)在自己的PC中增加GPIB仪器控制功能。14.3.1 独立总线独立总线2. 串行总线(串行总线(RS-232和和RS-485)RS-232是串行通信规范,是传统意义上的“串行”总线的最为常见的规范。 RS-232也是一个相对较慢的接口,典型的数据速率低于20k字节/秒,虽然有些产品能够达到更高的数据吞吐量。 由于RS-232连线长度最长只能达到15米,而且只能点对点通讯,不适合工业现场应用。因此出现了RS-485来解决这些问题,它采用差分的信号传输方式,最长距离可以达到1200米。 PC上都不带RS-485的接口,因此在接入电脑前需要通过485-232转换器或485-USB转换器才能接入PC。 14.3.1 独立总线独立总线3. USB通用串行总线(USB-Universal Serial Bus)的设计主要用于将PC的外围设备(如键盘、鼠标、扫描仪和移动硬盘等)连接到PC。USB是一项即插即用技术 最初的USB1.1规范定义了两种数据传输模式和速度:低速模式(Low-Speed)(最大吞吐量可达1.5Mbits/s或200Kbytes/s)和全速模式(Full-Speed)(最大吞吐量可达12Mbits/s或1.5Mbytes/s)。最新的USB规范USB 2.0完全后向兼容低速和全速设备,同时也定义了一种新的高速模式(Hi-Speed),该模式下数据传输速率高达480Mbits/s。 14.3.1 独立总线独立总线4. 以太网以太网5. CAN6. IEEE1394(火线火线)7. 无线无线14.3.2 模块化总线模块化总线1. PCIPCI总线是当今使用最广泛的计算机内部总线总线是当今使用最广泛的计算机内部总线之一。之一。 一般的计算机都有3个或更多的PCI插槽。PCI提供了高速的传输,理论带宽达到1056Mbits/s。 14.3.2 模块化总线模块化总线2. PCI Express当当PC应用需要更大量带宽时,应用需要更大量带宽时,PCI总线在许多情况下总线在许多情况下达到了其物理极限。达到了其物理极限。基本物理层由用作一个发送对和一个接收对的一对单基本物理层由用作一个发送对和一个接收对的一对单工通道构成。每个方向的最初速率工通道构成。每个方向的最初速率2.5Gbits/s为该方为该方向提供了一个向提供了一个200MBytes/s的通信信道,这接近标准的通信信道,这接近标准PCI数据速率的四倍。数据速率的四倍。 类似PCI,PCI Express的典型应用不是直接用于仪器控制,而是作为外围总线将GPIB设备连接到PC以用于仪器控制。但由于其很高的速率,PCI Express可用作模块化仪器的通信总线。此外,PCI Express还支持热交换和热插拔功能。 14.3.2 模块化总线模块化总线3. PXI/CompactPCIPXI将将PCI电气总线特性与坚固的、模块化的、欧洲电气总线特性与坚固的、模块化的、欧洲卡机械封装的卡机械封装的CompactPCI相结合,并增加了专门的相结合,并增加了专门的同步总线和关键的软件特性,从而能够承受常常存在同步总线和关键的软件特性,从而能够承受常常存在于工业应用中的恶劣环境。这使得于工业应用中的恶劣环境。这使得PXI成为一个高性成为一个高性能的、低成本的、适用测量和自动化系统的布置平台。能的、低成本的、适用测量和自动化系统的布置平台。 14.3.2 模块化总线模块化总线4. VXI5. PCMCIA14.4 仪器驱动程序仪器驱动程序计算机与仪器进行通讯的方式有两种一种是基于寄存器的通信方式,另一种是基于消息的通信方式。具体采用哪种方式由仪器本身决定。 14.4 仪器驱动程序仪器驱动程序一个仪器驱动程序是一个包括高层函数的库,这些高层函数支持控制某个仪器或某个仪器簇。一个仪器驱动程序是一个软件例程集合,该集合对应于一个计划的操作,如配置仪器、从仪器读取、向仪器写入和触发仪器等。它将底层的通信命令或寄存器配置等封装起来,用户只需要调用封装好的函数库就能轻松实现对应于该仪器的任何功能。 14.4 仪器驱动程序仪器驱动程序为了满足仪器控制和测试应用不同需求,存在两种不同类型的仪器驱动程序:即插即用驱动程序可互换的虚拟仪器(IVI)驱动程序直接I/O 14.4 仪器驱动程序仪器驱动程序 IVI、Plug&Play和和Direct I/O三种方式比较三种方式比较 14.4.1 可编程仪器标准命令SCPI 对于采用基于消息的通信方式,理论上来说消息的格式可以任意。不同的仪器可以采用不同的消息解析方式,譬如仪器A发送“A”表示读回仪器名称,仪器B可以发送“B”表示读回仪器名称。 SCPI联盟推出了可编程仪器标准命令SCPI(Standard Commands for Programmable Instruments)旨在规范一套标准的命令集。该命令集只是一个规范,和硬件无关。无论是基于GPIB,串口还是VXI的任何仪器都可以采用符合SCPI标准的命令集。14.4.1 可编程仪器标准命令SCPISCPI命令与编程语言无关。LabVIEW提供的MAX和仪器I/O助手都可以向指定仪器发送命令。14.4.1 可编程仪器标准命令SCPI例如Tektronix TDS220示波器的SCPI命令集的例子:(1)*IDN?返回仪器标识,采用IEEE 488.2标记法;(2)CH:PRObe?查询通道x的探头衰减;(3)HARDCopy:FORMat BMP设置硬拷贝格式为BMP格式。14.4.2 VISA 虚拟仪器软件架构(VISAVirtual Instruments Software Architecture)的目的是通过减少系统的建立时间来提高效率。 随着仪器类型的不断增加和测试系统复杂化的提高,人们不希望为每一种硬件接口都要编写不同的程序,因此I/O接口无关性对于I/O控制软件来说变得至关重要。 14.4.2 VISA通过VISA用户能与大多数仪器总线连接,包括GPIB、USB、串口、PXI、VXI和以太网。而无论底层是何种硬件接口,用户只需要面对统一的编程接口VISA 14.4.2 VISAVISA函数面板函数面板14.4.2 VISA通通过VISA读写写GPIB设备通通过VISA读写串口写串口设备14.4.2 VISA在VISA Advanced面板下有更多的VISA高级函数。此外,为了更细节的控制譬如GPIB,串口和USB等接口,LabVIEW还提供了基于VISA的高级控制函数。这些函数在Instrument I/O面板面板下都能找到。 譬如Instrument I/O-Serial面板下提供的串口配置函数可以对串口进行详细的配置,譬如超时时间、波特率、数据位和奇偶校验等。14.4.2 VISA14.4.3 IVI可互换的虚拟仪器驱动程序可互换的虚拟仪器驱动程序虽然VISA实现了程序与硬件接口的不相关性,但是并没有实现仪器的可交换性。IVI驱动程序是更为复杂的仪器驱动程序,它的特点在于为那些需要可互换性、状态缓存或仪器仿真的更为复杂的测试应用提高了性能和灵活性。 IVI驱动是NI测试系统中一个完整的组件。它基于VISA并被集成在NI提供的应用程序开发环境中。 14.4.3 IVI可互换的虚拟仪器驱动程序可互换的虚拟仪器驱动程序IVI构架将传统的仪器驱动程序分为两部分:仪器专用驱动通用类驱动 14.4.3 IVI可互换的虚拟仪器驱动程序可互换的虚拟仪器驱动程序 IVI整体构架整体构架14.4.3 IVI可互换的虚拟仪器驱动程序可互换的虚拟仪器驱动程序IVI仪器驱动技术具有如下优点: 高性能高性能仪器仿真能力仪器仿真能力仪器互换能力仪器互换能力开发灵活性开发灵活性14.4.3 IVI可互换的虚拟仪器驱动程序可互换的虚拟仪器驱动程序目前为止,IVI基金会已经制定了八类仪器规范(IVI基金会的目标是支持某一确定类仪器中95%的仪器),基本上涵盖了测试系统中常用的仪器类型。IVI示波器类(ScopeIVI Oscilloscope)IVI数字万用表类(DMMIVI Digital Multimeter)IVI函数发生器类(FGenIVI Function Generator)IVI直流电源类(DC Pwr SupplyIVI DC Power Supply)IVI开关类(SwitchIVI Switch)IVI功率计类(Power MeterIVI Power Meter)IVI射频信号发生器类(RF Sig GenIVI RF Signal Generator)IVI频谱分析仪类(Spec AnIVI Spectrum Analyzer)14.4.3 IVI可互换的虚拟仪器驱动程序可互换的虚拟仪器驱动程序IVI仪器驱动函数面板仪器驱动函数面板 14.4.3 IVI可互换的虚拟仪器驱动程序可互换的虚拟仪器驱动程序举例:通过IVI示波器类驱动写一个仿真示波器程序 14.4.3 IVI可互换的虚拟仪器驱动程序可互换的虚拟仪器驱动程序通过通过IVI仪器驱动实现的示波器界面仪器驱动实现的示波器界面 14.5 直接直接I/O(Direct I/O)如果没有仪器的VISA或IVI驱动可得,那么你就需要利用集成至软件开发环境中的交互式、直接I/O功能。 14.5.1仪器仪器I/O助手(助手(Instrument I/O Assistant)仪器I/O助手提供了一个用户界面来交互式地向一个设备写入命令、读取设备以及指定如何将响应解析成与应用相关的格式。 14.5.1仪器仪器I/O助手(助手(Instrument I/O Assistant) 读取数据并解析读取数据并解析 14.5.1仪器仪器I/O助手(助手(Instrument I/O Assistant)通过仪器通过仪器I/O助手实现的测试程序助手实现的测试程序14.5.2 Port I/O仪器I/O助手是针对基于消息格式通信的仪器。对于基于寄存器通信格式的仪器,你只需要向指定的寄存器地址写入数据或读出数据。LabVIEW提供了两个简单的Port I/O函数用于读写寄存器端口。 14.5.2 Port I/O 通过通过Port I/O函数读写函数读写LPT并口并口 14.5.3 NI Spy调试驱动的好帮手调试驱动的好帮手14.6 与第三方硬件连接与第三方硬件连接LabVIEW拥有灵活的通讯方式以实现与第三方硬件连接动态链接库(DLL)TCP/IPDataSocketOPC共享变量ActiveXDDE.net.小试身手1. 什么是数据采集?数据采集系统的基本组成部分有哪些?每一部分的主要作用是什么?2. 仪器控制和数据采集有何区别?3. 比较各种独立总线的最大传输距离与最大传输速率。小试身手4. VISA和IVI的区别是什么?5.利用IVI驱动编写一个类似书中图14.25所示的仿真示波器。6. LabVIEW有哪些方式能与第三方硬件连接?7. 利用你目前手边所拥有的能与计算机通讯的设备,结合本章所学的知识,实现LabVIEW与该设备通讯。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号