宝典从书 200万 LabVIEW 宝业 NLC2970668310 ◎配套PPT电子课件 陈树学刘萱编著 LabVIEW工程师的0年经验总结 ◎全程配套700多个V案例文件 電子工業出社 ◎3大完整工程实践一线项目 HING HOUSE OF ELECTRONICS INDUSTRY
前言 计算机的出现,彻底改变了人们的工作和生活方式。如今计算机已经无处不在,进入了每 个人的生活之中。在工程技术人员看来,计算机不仅仅是人们常见的PC,也包括各种微处理器。 从这个角度看,我们无时无刻不在使用计算机,例如,电视、洗衣机、自动提款机等都依赖计 算机来实现各种便捷的功能。 相同的计算机可以完成不同的工作,在于它们使用不同的程序,而程序是由计算机编程语言 创建的。短短几十年中,出现了众多的编程语言,这些编程语言的共同特点是采用文本方式创建 程序。文本方式编程对编程人员要求很高,这使得计算机编程只能是少数人才可以从事的职业。 美国国家仪器公司( National Instruments,简称N)的创新软件产品LabⅥEW,允许用图 形方式编程,摒弃了晦涩难懂的文本代码,使得计算机编程不再是少数人的专利。 LabVIEW的 最早版本诞生于1986年,几乎和 Windows的最早版本同步,这注定了 LabVIEW是多平台的编 程语言,适合于不同的操作系统。 20世纪80年代初,N公司是GPB总线设备的主要供货商,丰富的硬件经验和强大的软 件开发需求,促使N公司的工程师们决心寻找一种代替传统编程语言的开发工具,这导致了 1986年 LabVIEW的横空出世。 LabVIEW是由测试工程师开发的专用编程语言,因此,LabⅥEW 具有鲜明的行业特点,最早主要用于测试测量领域。N公司独创了虚拟仪器的理念,提出了“软 件就是仪器”的理念,并逐步成为业界的标准。 随着 LabVIEw的不断发展,几乎每隔一两年,都要推出新的版本。 LabVIEW的应用范围已 经覆盖了工业自动化、测试测量、嵌入式应用、运动控制、图像处理、计算机仿真、FPGA等 众多领域。以LabⅥEW为核心,采用不同的专用工具包,统一的图形编程方式,可以实现不同 技术领域的需求。 本书要点 本书作者多年使用 LabVIEW作为主要的编程语言,因此特别关注 LabVIEW在工业领域的 具体运用以及 LabVIEW的实用编程技术。本书共17章,分为入门篇、高级篇、工程应用篇。 第1~5章为入门篇,介绍了 LabVIEW的基本概念、基本函数的用法和常用的运行结构, 详尽地分析了 LabVIEW的基本数据结构和文件存储方式。 第6-11章为高级篇,介绍了应用程序、Ⅵ和控件的引用、属性和方法,以及各类高级控 件的运用方法。第8章介绍了 LabVIEW的文本编程方式以及DL、C语言接口,第9章详细介 绍了基于 Matlab语法的 Math Script编程技术,第10章介绍了 LabVIEW基于组件的编程方法。 第12-17章为工程应用篇,具体而细致地讲解在做实际工程开发时所用到的 LabVIEW编 程技术。本篇结合LabⅥEW的常用工具包,具体分析了计算机串口、并口、网络通信方面的内 容,以及数据记录和监控工具包、数据库连接工具包、报表生成工具包、状态图工具包、FPGA 工具包等等。第13、第14章详细介绍了数据采集的基本原理和常用编程方法,其中重点介绍 了 LabVIEW在实时系统下的运用。第15章讲解LabⅥEW实时系统的开发案例。第16章讲解 司Ⅲ
LabVIEW 宝典,,, 了 LabVIEW数据采集系统开发案例。第17章讲解了FPGA的开发案例,利用 LabVIEW图形编 程方式,提高开发效率。 本书读者 本书可作为高等院校通信、测量技术、自动控制等相关课程的教材和教学参考书,也可作 为相关工程技术人员设计开发仪器或自动测试系统的技术手册。 本书特色 本书内容非常丰富,在每个章节都采用了大量的实例,针对具体编程实践中遇到的问题, 提出了多种解决方法。在兼顾基础知识介绍的前提下,深入讨论了 LabVIEW的高级编程方法和 编程技巧。 本书的宗旨是作为实用工具书,侧重于来自工程实践的一线案例。笔者在写作过程中,与 众多的 LabvIEw爱好者进行了充分的沟通与交流,总结编程过程中经常遇到的问题,并作为本 书的重要内容。 本书使用了大量篇幅,重点讲解N公司各种专用工具包的运用,具有一定的深度和实用价 值,特别适合于具有一定基础的编程人员使用。在基础篇中,虽然也介绍了许多LabⅥEW的基 础知识,但还是侧重于具体应用,其中大量的例程可以直接在具体项目中使用。 在高级篇中,重点介绍了LabⅥEW常用的编程模式,以及状态图工具包的运用,同时介绍 了新增的面向对象的编程方法。 补遗说明 本书写作时主要使用86版本,但是书中介绍的具体内容并不限于特定的版本,因此无版 本限制。本书案例文件和相关课件在网址 ww. broadview. com. cn中提供下载,这样方便读者 更好地提高学习效率,也方便教师教学。此外,对于比较重要的内容,为了让读者印象深刻, 我们以“学习笔记”的体例呈现出来。 致谢与分工 本书由陈树学、刘萱两位工程师编写,我们有大量 LabVIEW的实际开发经验,经历了多年 的浓缩和总结才成此书。在编写本书过程中获得张国强老师的大力支持,他为我们提供了开发 硬件,使得写作能在真实的开发环境中进行,应该说没有他的热心帮忙完成本书是难以想象的 事情。此外,参与本书部分编写工作的人员还有:李伟、朱诚、陈洪军、黄北军、路锦正、谢 昀、张洪亮、赵会春、王晓、余松、周俊杰、陈军等。因为本书作者为工程技术人员,对于写 作并不擅长,书中错漏之处在所难免,敬请批评指正。能够为 LabVIEW在国内的推广使用,做 一点力所能及的贡献,能对广大的LabⅥEW爱好者有所帮助,是我们最大的愿望。如果有任何 意见或者建议欢迎联系: sharepub@126cm
目录 第1部分入门篇 第1章打开 LabVIEW编程之门…… …2 1.1从ⅥI开始 1.1.1创建I 1.1.2控件属性设置与快捷菜单…………………………5 1.1.3创建控件、常量、局部变量、引用、属性节点和方法节点· 1.14创建自定义控件……………10 1.2编辑前面板和程序框图 ………11 1.2.1选择、移动和删除对象……12 122使用布局工具 …13 1.3ⅥI及其属性对话框…………17 13.1Ⅵ1的层次结构…………………7 1.3.2调用子ⅥI 1.3.3ⅥI的属性设置……………………………19 14基本控件及其使用方法 1.4.1基本数值控件…… 14.2基本布尔控件……………………………………………………29 143控件的通用编辑方法………………………………32 1.44字符串和路径控件………………………………34 14.5下拉列表与枚举控件… 38 1.46数组控件及其属性设置…………… ……38 14.7簇控件 ……39 1.48时间标识控件与波形数据控件 41 15小结 ……43 第2章 LabVIEW基本函数… ……44 2.1必须了解的一些基本算术运算函数 4 2.1.1基本运算函数………………… …44 2.1.2标量之间的基本运算 2.1.3标量与数组的运算………………………………… …………45 2.14数组与数组的运算 2.1.5数组的函数…
LabVIEW 宝典 )N 2.1.6标量与簇的基本运算…… 55 2.1.7簇与簇的运算………………… 2.18簇的函数…………………………………………56 2.2必须了解的位运算函数和逻辑运算函数…………………………5 221常用逻辑运算函数 …59 222位运算…………………………………………………………………59 2.23深入理解复合运算函数……60 2.3必须了解的关系运算函数和比较函数 ………61 2.3.1比较模式……… 2.3.2通用关系运算函数…62 2.3.3“比较0”关系运算函数…………………… 63 234复杂关系运算函数……………………………………………………… 63 23.5字符关系运算函数………………………… 66 236表达式节点与公式快速VI……………………………… 67 24小结……………………………………………… 第3章Labv|EW的程序运行结构…………… 3.1两种不同的循环结构…………………… 3.11For循环的组成和特点 …69 3.1.2For循环与数组…… 3.1.3For循环与移位寄存器……… 3.14For循环中的 continue和 break …74 3.1.5 While循环,不仅仅是循环……………………… 31.6 While循环与定时… 76 3.17反馈节点 ……………………………81 3.2定时结构………… 3.21定时循环的基本组成要素和配置对话框 82 3.22定时顺序结构 85 33独特的条件结构……… 3.31条件结构的基本结构………………………… 85 3.3.2布尔型输入………………………………………… 333错误簇输入…………………… 3.34数值型输入………… …87 3.35枚举型输入…………………………… …88 336下拉列表输入…………………… 3.37字符串和组合框输入… ………………88 3.3.8输入、输出隧道……… 339多重 If-Else的处理方法…89 34不和谐的顺序结构 34.1多线程运行次序…………………………… 34.2两种不同的顺序结构…………… ……91
↓目录 343隧道与顺序局部变量 344顺序结构的替代… ……93 34.5顺序结构的典型应用 ……93 3.5程序框图禁用结构………… 94 36局部变量、内置全局变量和功能(LV2型)全局变量 3.6.1局部变量………………………………… ……94 3.62内置全局变量………… 3.6.3功能(Lv2型)全局变量…………… 3.7事件结构… “““ 3.71事件结构的基本构成和创建方法…… 100 3.72事件的分类及其特点 …101 3.73事件结构之间的数据传送与共享… ………103 3.74事件发生的次序、过滤和转发……104 3.75正确地使用事件结构………105 38小结 第4章LabV|EW的数据结构及内存优化 17 41常用数据类型转换函数… ……107 4.1.1“强制类型转换”函数…… 4.1.2“平化至字符串”与“字符串还原”函数………………108 4.1.3变体数据 …109 42整数的类型转换及内存映射………109 4.2.1布尔型数据与字符串和数值的相互转换 109 4.2.2U8类型数据与字符串之间的相互转换 110 423整数与整数类型的相互转换……10 43其他标量数据类型的类型转换及内存映射…… l11 4.3.1定点数和浮点数的类型转换与内存映射 l11 43.2复数的类型转换及内存映射……14 4.3.3时间标识的类型转换与内存映射…… 114 44复合数据类型 ………115 44.1标量数组的内存映射………… 115 44.2字符串、路径和字符串数组的内存映射 116 44.3 LabVIEw使用的编码 … 117 4.5簇的内存映射……… 118 4.5.1标量组成的簇 …118 452包含数组和字符串的簇……… l18 4.6类型描述符……… 119 46.1类型描述符的基本构成要素 l19 462常用类型描述符列表 ……120 4.6.3常见数据类型的类型描述符结构……………………… 120 47 OpenG中有关类型描述符的函数 121
LabVIEW 宝典 4.7.1类型描述符函数……………122 4.7.2利用类型描述符处理枚举型数据 …123 4.7.3利用类型描述符处理簇………123 48几种常用的内存分析工具和方法…………………124 4.81内存的重要性 ……124 4.82内存和性能查看工具………125 4.83ⅥI使用的内存………………………………………… 126 4.84优化内存的一般注意事项……………………………………………127 4.8.5数组与内存优化…………… :129 486在循环中避免不必要的计算、读/写控件或者变量…………131 49影响ⅥI运行速度的因素… 132 49.1硬件输入输出…… 133 49.2屏幕显示… 4.10小结………………………………………………………………133 第5章字符串与文件存储 …134 5.1字符串…………………… 511几种常用的字符串常量………………………………134 512几种常用的字符串函数… …135 5.1.3“匹配模式”和“匹配正则表达式”函数………………… …136 514字符串与数值的相互转换 …139 515功能强大的“格式化字符串”和“扫描字符串”函数 …140 51.6数组与电子表格字符串 143 517附加字符串函数 143 52文件存储………………14 521文本文件与二进制文件的区别………………… 144 522文件常量和通用目录、文件函数 145 523构造路径的方法… 146 524文本文件的读写… 5.25数据记录文件的读写………… 153 526读/写二进制文件………………… 154 527INI文件的读写…………… …156 528注册表的读写…………………… …………………158 529TDM文件…………………………… 5210TDMS文件 …162 53小结… …165 第2部分高级篇…… ……167 第6章 LabvIew对象的解析 6 LabVIew控件对象的层次继承结构 Ⅷ I>
↓↓目录 6.11布尔控件的层次继承结构……………………168 6.12通用类的属性………… 169 6.13图形对象类… 171 62图形对象类的子类………………………………………172 621前面板类……… 172 622窗格类和分隔栏类………………………………………………………173 623 LabvIew的坐标映射…………………………175 624修饰类…………………………………177 63控件类……………………………………………………………………………178 6.31控件类的常用属性 179 6.3.2控件类的常用方法…… 633数值控件类……………………18 64常用控件的专用属性 183 641布尔控件的专用属性 …183 642枚举和下拉列表控件的专用属性 184 643字符串、路径和组合框控件的专用属性……… 184 644数组的属性和方法…86 64.5簇的属性及方法 65引用句柄 ……188 66I的属性………………… 190 661获取vI的引用 190 662常用ⅥI属性………………………………………………190 663ⅥI前面板属性 191 67常用ⅥI方法… 67.1获取前面板、程序框图和Ⅵ图标的图像…………………194 67.2前面板的运行位置控制方法…………194 6.73打印控制…………194 6.7.4默认值方法… …194 68动态调用vI……………………………195 681静态调用和动态调用的比较 195 682通过“引用节点调用”函数动态调用ⅤI 196 683一般类型vI的动态调用…… 198 6.84创建闪屏 ……200 685创建后台运行程序…………………………………… 686创建向导程序 201 687动态调用ⅥI之间的数据交换…………01 69应用程序的属性和方法 ……203 691获取应用程序引用句柄……… 692常用应用程序的属性 204 6.10小结……………
abVIEW 宝典 >>P 第7章高级控件的运用…………………………………………206 7.1列表框…………………………………………………… 206 7.1.1列表框的创建及显示风格…………………………206 7.1.2列表框的常用属性、方法与事件 713列表框的应用举例…………………………………………………207 7.2多列列表框 210 7.21显示多列项目并排序………… 210 7.2.2多列列表框的特效制作……12 7.3表格…… 212 7.31表格的常用属性和方法 …213 7.32表格的应用举例………214 74树形控件………………… 217 7.4.1树形控件的创建与静态编辑……………217 742树形控件的常用属性、方法和事件…………… …218 743树形控件高级应用举例……………………………………………………219 7.5波形图表…………… 1220 751波形图表的组成要件…… 752波形图表的输入类型…… 753波形图表专用属性…………223 754波形图表应用举例 225 76波形图…26 7.61波形图控件的创建和组成要件………… 226 7.6.2波形图控件的输入类型………………………………………227 7.63波形图控件的专用属性…………………………………………………………228 7.64波形图控件的高级应用举例 230 7.7XY图… 32 7.71XY图的输入数据类型…………… 772XY图的高级应用…………… 7.8强度图表和强度图…… 79数字数据、数字波形数据与数字波形图…… 7.91数字数据……………… 792数字波形数据和数字波形图 …236 7.10图片控件… 7.0.1利用图片控件显示图片……… ……237 7.102常用绘图操作函数 单术 ……239 7.10.3图片控件的高级应用 …240 7.1小结… 242 第8章文本式编程与外部程序接口 243 81公式节点……… 1243 X > D
↓↓目录 8.1.1公式节点的数据类型、语法与控制结构……… 243 81.2公式节点的应用举例………………………… …245 82调用库函数…… 821DLL与AP函数………46 822如何调用DLL函数 …248 823常用API函数的调用…………………………………254 824 LabVIEw调用DLL的局限性 …256 8.3cIN… 831CIN创建的一般过程…… “““““““““““*““*““ …260 83.2CIN的数据类型和常用函数……… ……262 833CIN与内存管理器 266 8.34CIN的运行过程和数据共享……………………………………… 84系统命令 272 8.5剪切板………………274 86DDE库……………………… 275 86.1DDE概述…………………………………………275 86.2LabⅤIEW中DDE的常用方法……………………76 87 ActiveX控件与 ActiveX文档……………… 871 ActiveX的基本概念 87.2 ActiveX控件的调用过程………278 873 ActiveX应用实例 279 874 ActiveX自动化服务器 ……281 88NET技术…282 81NET控件……………8 882NET服务……… 283 883利用NET创建托盘程序 89小结 287 第9章 Math Script ………288 9.1如何使用 MathScript' 288 911使用 MathScript节点…………………288 912使用 MathScript交互窗口………… 289 92 MathScript常用命令………… 290 93 Mathscript:基础知识 …291 9.31创建向量和矩阵的基本方法 932矩阵的基本运算………… …292 9.33标准矩阵…………… 934矩阵元素的插入、替换、删除和提取…… 935矩阵元素的排序和搜索特征值… 295 9.36常用的矩阵变换函数………………………………… 296 937矩阵中元素的数据类型及其转换…