宝典从书 200万 LabVIEW 宝典 NLIC 2970668310 ◎配套PPT电子课件 陈树学 刘萱编著 LabVIEW工程师的10年经验总结 ©全程配套700多个VI案例文件 电子工业出版社 3大完整工程实践一线项目 PUBLISHING HOUSE OF ELECTRONICS INDUSTRY http://www.phei.com.cn
前 言 计算机的出现,彻底改变了人们的工作和生活方式。如今计算机已经无处不在,进入了每 个人的生活之中。在工程技术人员看来,计算机不仅仅是人们常见的PC,也包括各种微处理器。 从这个角度看,我们无时无刻不在使用计算机,例如,电视、洗衣机、自动提款机等都依赖计 算机来实现各种便捷的功能 相同的计算机可以完成不同的工作,在于它们使用不同的程序,而程序是由计算机编程语言 创建的。短短几十年中,出现了众多的编程语言,这些编程语言的共同特点是采用文本方式创健 程序。文本方式编程对编程人员要求很高,这使得计算机编程只能是少数人才可以从事的职业。 美国国家仪器公司(National Instruments,简称NI】的创新软件产品LabVIEW,允许用图 形方式编程,摒弃了晦涩难懂的文本代码,使得计算机编程不再是少数人的专利。LabVIEW的 最早版本诞生于1986年,几乎和Windows的最早版本同步,这注定了LabVIEW是多平台的编 程语言,适合于不同的操作系统。 20世纪80年代初,N!公司是GPB总线设备的主要供货商,丰富的硬件经验和强大的软 件开发需求,促使N!公司的工程师们决心寻找一种代替传统编程语言的开发工具,这导致了 1986年LabVIEW的横空出世。LabVIEW是由测试工程师开发的专用编程语言,因此,LabVIEW 具有鲜明的行业特点,最早主要用于测试测量领域。N公司独创了虚拟仪器的理念,提出了“软 件就是仪器”的理念,并逐步成为业界的标准。 随着LabVIEW的不断发展,几乎每隔一两年,都要推出新的版本。LabVIEW的应用范围已 经覆盖了工业自动化、测试测量、嵌入式应用、运动控制、图像处理、计算机仿真、FPGA等 众多领域。以LbEW为核心,采用不同的专用工具包,统一的图形编程方式,可以实现不同 技术领域的需求。 本书要点 本书作者多年使用LabVIEW作为主要的编程语言,因此特别关注LabVIEW在工业领域的 具体运用以及LabVIEW的实用编程技术。本书共17章,分为入门篇、高级篇、工程应用篇。 第1~5章为入门篇,介绍了LabVIEW的基本概念、基本函数的用法和常用的运行结构, 详尽地分析了LabVIEW的基本数据结构和文件存储方式。 第6一11章为高级篇,介绍了应用程序、M和控件的引用、属性和方法,以及各类高级控 件的运用方法。第8章介绍了LabVIEW的文本编程方式以及DL、C语言接口,第9章详细介 绍了基于Matlab语法的MathScript编程技术,第10章介绍了LabVIEW基于组件的编程方法。 第12~17章为工程应用篇,具体而细致地讲解在做实际工程开发时所用到的LabVIEW编 程技术。本篇结合LabVIEW的常用工具包,具体分析了计算机串口、并口、网络通信方面的内 容,以及数据记录和监控工具包、数据库连接工具包、报表生成工具包、状态图工具包、FPGA 工具包等等。第13、第14章详细介绍了数据采集的基本原理和常用编程方法,其中重点介绍 了LabVIEW在实时系统下的运用。第15章讲解LabVIEW实时系统的开发案例。第16章讲解 喝4网川
LAbVIEW宝典, 了LabVIEW数据采集系统开发案例。第17章讲解了FPGA的开发案例,利用LabVIEW图形编 程方式,提高开发效率。 本书读者 本书可作为高等院校通信、测量技术、自动控制等相关课程的教材和教学参考书,也可作 为相关工程技术人员设计开发仪器或自动测试系统的技术手册。 本书特色 本书内容非常丰富,在每个章节都采用了大量的实例,针对具体编程实践中遇到的问题, 提出了多种解决方法。在兼顾基础知识介绍的前提下,深入讨论了LabVIEW的高级编程方法和 编程技巧。 本书的宗旨是作为实用工具书,侧重于来自工程实践的一线案例。笔者在写作过程中,与 众多的LabVIEW爱好者进行了充分的沟通与交流,总结编程过程中经常遇到的问题,并作为本 书的重要内容。 本书使用了大量篇幅,重点讲解N公司各种专用工具包的运用,具有一定的深度和实用价 值,特别适合于具有一定基础的编程人员使用。在基础篇中,虽然也介绍了许多LabVIEW的基 础知识,但还是侧重于具体应用,其中大量的例程可以直接在具体项目中使用。 在高级篇中,重点介绍了LbEW常用的编程模式,以及状态图工具包的运用,同时介绍 了新增的面向对象的编程方法。 补遗说明 本书写作时主要使用8.6版本,但是书中介绍的具体内容并不限于特定的版本,因此无版 本限制。本书案例文件和相关课件在网址www.broadview.com.cn中提供下载,这样方便读者 更好地提高学习效率,也方便教师教学。此外,对于比较重要的内容,为了让读者印象深刻, 我们以“学习笔记”的体例呈现出来。 致谢与分工 本书由陈树学、刘萱两位工程师编写,我们有大量LabVIEW的实际开发经验,经历了多年 的浓缩和总结才成此书。在编写本书过程中获得张国强老师的大力支持,他为我们提供了开发 硬件,使得写作能在真实的开发环境中进行,应该说没有他的热心帮忙完成本书是难以想象的 事情。此外,参与本书部分绵写工作的人员还有:李伟、朱诚、陈洪军、黄北军、路锦正、谢 昀、张洪亮、赵会春、王晓、余松、周俊杰、陈军等。因为本书作者为工程技术人员,对于写 作并不擅长,书中错漏之处在所难免,数请批评指正。能够为LabVIEW在国内的推广使用,做 一点力所能及的贡献,能对广大的LabVIEW爱好者有所帮助,是我们最大的愿望。如果有任何 意见或者建议欢迎联系:sharepube@126.com。 IV
目 录 第1部分入门篇 4…1 第1章打开LabVIEW编程之门 2 1.1从1开始 1.1.1创建V1 11.2 控件属性设置与快捷菜单 L.13创建控件、常量、局部变量、引用、属性节点和方法节点… 11.4创建自定义控件 1.2编辑前面板和程序框图 121洗择、移动和刷除对 122使用布局工具 13 1.3V1及其属性对话框“ 17 13.11的层次结构 12 1.32惠用子V1 19 13.31的属性设置 1.4基本控件及其使用方法… 23 1.4.1基本数值控件 23 1.4.2基本布尔控件 29 143控件的通用绵辑方法 32 14.4 字符串和路径控件 34 1.45 下拉列表与枚举控件 38 14.6数组控件及其属性设置 147簇控件 .39 1.4.8时间标识控件与波形数据控件… 41 1.5小结 ·43 第2章LabVIEW基本函数 2.1必须了解的一些基本算术运算函数… 44 2.11 基本运算函数 44 2.12标量之间的基本运算 45 2.13 标量与数组的运算 4 2.1.4数组与数组的运算 45 2.1.5数组的函数… 46
LabVIEW 宝興,,~ 21.6标量与簇的基本运算 55 2.1.7簇与簇的运算… …56 2.18簇的函数 56 2.2必须了解的位运算函数和逻辑运算函数……59 2.2.1常用逻辑运算函数… 2.2.2位运算 .59 223深入理解复合运算函数 60 2.3必须了解的关系运算函数和比较函数 61 2.3.1比较模式… 61 23.2 通用关系运算函数 62 2.3.3 "比较0”关系运算函数 63 2.34复杂关系运算函数 63 23.5字符关系运算承数 66 2.3.6表达式节点与公式快速V1 67 2.4小结 68 第3章LabVIEW的程序运行结构 69 3.1两种不同的循环结构 …69 31.1For循环的组成和特点 .60 3.12F0r循环与数组 71 3.13For循环与移位寄存器 13 3.l.4For循环中的continue和break 74 3.15hle循环,不仅仅是循环 74 3.1.6 While循环与定时 76 3.1.7反馈节点… …81 32定时结构 81 3.21定时循环的基本组成要素和配置对话框 82 3.2.2定时顺序结构 ,发5 3.3独特的条件结构 85 331条件结构的某木结构 85 3.3.2布尔型输入 3.3.3错误簇输入 …86 3.3.4数值型输入 …87 3.3.5枚举型输入 ·88 3.3.6 下拉列表输入 3.3.7字符串和组合框输 338输入输出球道 .8g 3.3.9多重f-Else的处理方法 89 3.4不和谐的顺序结构… *90 34.1多线程运行次序 ,00 3.42两种不同的顺序结构 4…91
4.44目录 3.43隧道与顺序局部变量 …92 3.4.4顺序结构的替代… +93 3.4.5顺序结构的典型应用 “93 3.5程序框图禁用结构 +94 3.6局部变量、内置全局变量和功能(LV2型)全局变量… .94 3.61局部变量… 3.6.2内置全局变量… .06 3.6.3功能(LV2型)全局变量 -98 3.7事件结构……… 3.7.1事件结构的基本构成和创建方法 100 3.7.2事件的分类及其特点 101 3.73韦件结构之间的数据传送与共享 103 3.7.4 事件发生的次序、过滤和转发 104 3.7.5正确地使用事件结构 105 3.8小结 106 第4章LabVIEW的数据结构及内存优化 107 4.1常用数据类型转换函数… l07 4.1.1“强制类型转换”函数 …107 4.1.2 “平化至字符串”与“字符串还原”函数 108 4.13查体数据… …109 42整数的类型转换及内存映射 109 4.2.1布尔型数据与字符串和数值的相互转换 109 4.2.2U8类型数据与字符串之间的相互转换 110 4.23整数与整数类型的相互转换 4.3其他标量数据类型的类型转换及内存映射 4.3.1定点数和浮点数的类型转换与内存映射 111 4.3.2复数的类型转换及内存映射… 114 4.3.3时间标识的类型转换与内存映射 4.4复合数据类型… 115 4.4.1标量数组的内存映射 115 4.4.2字符串、路径和字符串数组的内存映射… 444 .116 4.43 LabVIEW使用的编码 117 45簇的内存映射 118 451标量组成的接 118 4.5.2包含数组和字符串的簇 118 46类型描述符 ,11g 4.61类型描述符的基本构成要素 119 4.6.2常用类型描述符列表… 120 4.6.3常见数据类型的类型描述符结构 120 4.7 OpenG中有关类型描述符的函数… …121
LabVIEW 宝興,,~ 47.1类型描述符函数 44…122 4.72利用类型描述符处理枚举型数据 47.3利用类型描述符处理簧44+ 123 4.8几种常用的内存分析工具和方法 124 4.8.1内存的重要性 124 4.8.2内存和性能查看工具 125 4.8.3使用的内存 126 4.8.4优化内存的一般注意事项 127 485 数组与内存优化 4.8.6在循环中避免不必要的计算、读/写控件或者变量, …131 4.9影响V1运行速度的因素 132 4.9.1硬件输入输出 133 4.9.2屏幕显示… .133 410小结 133 第5章字符串与文件存储 -134 5.1字符串 …134 5.11几种常用的字符串常量… …134 5.1.2 几种常用的字符串函数 135 5.1.3 “匹配模式”和“匹配正则表达式”函数 .136 5.14 字符串与数值的相互转换 139 5.15功能强大的“格式化字符串”和“扫描字符串”函数 …140 5.16数组与电子表格字符串 143 51.7 附加字符串函数 143 5.2文件存储… 144 52.1文本文件与二进制文件的区别 144 5.2.2文件常量和通用目录、文件函数 145 5.23构浩路径的方法· 146 5.2.4 文本文件的读写 148 5.25数据记录文件的速写 153 5.2.6读写二进制文件 154 5.2.7N1文件的读写 156 5.2.8注册表的读写· ,158 5.2.9TDM文件 159 52.10TDMS文件…162 5.3小结… …165 第2部分高级篇… …167 第6章LabVIEW对象的解析…168 6.1 LabVIEW控件对象的层次继承结构 …168
4444目录 6.1.1 布尔控件的层次继承结构 …168 6.1.2通用类的属性… +…169 6.1.3图形对象类… …171 6.2图形对象类的子类 4172 62.1前面板类 172 6.22窗格类和分隔栏类 173 6,2.3 LabVIEW的坐标映射 …175 6.2.4 修饰类 17 6.3控件类 178 63.1控件类的常用属性 63.2控件类的常用方法 181 6.3.3数值控件类… 6.4常用控件的专用属性 183 6.4.1布尔控件的专用属性 183 6.42 枚举和下拉列表控件的专用属性 6.4.3字符串、路径和组合框控件的专用属性 184 6.4.4 数组的属性和方法 6.4.5篷的属性及方法 187 6.5引用句柄…… 6.6V1的属性 190 6.6.1获取V1的引用 190 6.6.2 常用V属性 6.6.3V1前面板属性 191 6.7常用V1方法 鸟 6.7.1获取前面板、程序框图和1图标的图像… 4444…194 6.7.2前面板的运行位置控制方法 194 6.73打印控制 194 6.7.4默认值方法 …194 6.8动态调用V1 195 6,8.1静态调用和动态调用的比较 .195 682 通过“引用节点调用”函数动态调用V 196 683 一般类型V1的动态调用 198 6.8.4 创建闪屏 200 68.5创建后台运行程序 200 6.8.6创建向导程序… .201 6.87动态调用V1之间的数据交换 20 69应用程序的属性和方法 203 6.9.1获取应用程序引用句标 6.9.2常用应用程序的属性 .204 6.10 小结 205 X
LabVIEW 宝典,,~ 第7章 高级控件的运用 206 71列表框· 206 7.11列表框的创建及显示风格… 206 7.1.2列表框的常用属性、方法与事件 206 7.1.3列表框的应用举例 207 7.2多列列表框… 210 7.21显示多列项目并排序 210 7.2.2多列列表框的特效制作 212 7.3 表格 212 7.3.1表格的常用属性和方法 213 7.32 表格的应用举例… 214 门4树形控件 217 7.4.1树形控件的创建与静态编辑 217 7.4.2 树形控件的常用属性、方法和事化 218 7.43树形控件高级应用举例… 219 7.5波形图表 7.5.1波形图表的组成要件: 221 7.5.2 波形图表的输入类型 223 7.5.3 波形图表专用属性 223 ?54波形图表应用举列 225 7.6波形图 7.6.1波形图控件的创建和组成要件· 226 7.6.2 波形图控件的输入类型 7.63波形图控件的专用属性· 34* 228 7.64 波形图控件的高级应用举例 …230 7.7XY图ia4n 232 7.7.1XY图的输入数据类型 233 7.7.2XY图的高级应用 234 7.8强度图表和强度图 235 7.9数字数据、数字波形数据与数字波形图 236 7.9.1数字数据…… .236 7.92数字波形数据和数字波形图 236 7.10图片控件 237 7.10.1利用图片控件显示图片 237 7.102常用绘图操作函数 23g 7.10.3图片控件的高级应用 .240 711小结 242 第8章文本式编程与外部程序接口 …243 8.1公式节点… …243
。。目录 8.1.1公式节点的数据类型、语法与控制结松 …243 8.1.2公式节点的应用举例 -245 8.2调用库函数 246 8.2.1D儿L与AP函数4444444+444 246 8.2.2如何调用DLL函数 248 8.2.3常用API函数的调用 254 8.2.4 LabVIEW调用DLL的局限性 ,256 8.3 CIN 259 831CN剑建的一般过程 260 8.32CN的数据类型和常用函数 262 8.3.3CN与内存管理器 266 8.3.4CN的运行过程和数据共享 26g 8.4系统命令 272 8.5前切板 .274 8.6 DDE库 27 8.6.1DDE概述 275 8.6.2 LabVIEW中DDE的常用方法 276 8.7 Activex控件与ActiveX文档nm… +277 8.7.1 ActiveX的基本概念 277 8.7.2 ActiveX控件的调用过程 278 8.7.3 Activex应用实例 ,279 8.74 ActiveX自动化服务器 281 8.8NET技术… 282 8.81 NET控件 8.8.2NET最务+ ,283 88.3利用NET创建托盘程序 285 8.9小结 287 第g章MathScript 288 9.如何使用MathScrip 288 9.l.l使用MathScript节点 288 9.1.2使用MathScript交互窗▣ 289 9.2 MathScript常用命令 290 g.3 MathScript基础知识 291 9.3.1创建向量和矩阵的基本方法 291 9.3.2矩阵的基本运算 292 9.3.3标准矩阵 293 9,34矩阵元素的插入、替换、酬除和提取 294 9.3.5矩阵元素的排序和搜索特征值… .295 93.6 常用的矩阵变换函数 296 9.3.7矩阵中元素的数据类型及其转换: +297