微信扫码下载

编辑推荐

适读人群:《LabVIEW宝典》可作为高等院校通信、测量技术、自动控制等相关课程的教材和教学参考书,也可作为相关工程技术人员设计开发仪器或自动测试系统的技术手册。

LabVIEW工程师15年经验总结

全程配套700多个VI案例文件

3大完整工程实践一线项目

配套PPT电子课件

内容简介

《LabVIEW宝典(第2版)》详尽讲解了LabVIEW常用的编程方法、编程技巧和工程应用技术。《LabVIEW宝典(第2版)》共分为3篇,其中,入门篇归纳总结了LabVIEW编程人员必须掌握的基础知识,包括LabVIEW的基本概念、基本函数的用法和常用的运行结构,以及LabVIEW的基本数据结构和文件存储方式;高级篇细致地讲解了引用、属性、方法及各类高级控件的运用,LabVIEW的文本方式编程及DLL、C语言接口,基于MATLAB语法的math*编程技术,LabVIEW基于组件的高级编程方法和编程模式;工程应用篇介绍了串口、并口和网络通信的常用方法,数据采集的基本原理和方法,LabVIEW实时系统的构建和编程,以及各种常用专业工具包的使用方法,包括数据库连接工具包、数据监控与记录工具包、报表生成工具包、状态图工具包等。《LabVIEW宝典(第2版)》可作为高等院校通信、测量技术、自动控制等相关课程的教材和教学参考书,也可作为相关工程技术人员设计开发仪器或自动测试系统的技术手册。

作者简介

陈树学,1989年毕业于哈尔滨工业大学动力工程系,毕业后进入一汽集团公司,负责专用机床、加工自动线和测试设备的软件开发工作。初期使用C语言,从LabVIEW6.0版本开始,采用LabVIEW作为优选编程语言。刘萱,2005年毕业于天津大学计算机科学与技术专业。毕业后进入天津久荣车轮技术有限公司主持车轮轮胎检测设备系统软件的研发工作。2006年首次接触LabVIEW7.2并在实际项目中使用,十余年来积累了利用LabVIEW开发工程项目的丰富经验。

目录

第1部分入门篇
第1章打开LabVIEW编程之门2
1.1从VI开始2
1.1.1创建VI3
1.1.2控件属性设置与快捷菜单6
1.1.3创建控件、常量、局部变量、引用、属性节点和方法节点8
1.1.4创建自定义控件10
1.2编辑前面板和程序框图12
1.2.1选择、移动和删除对象12
1.2.2使用布局工具13
1.3VI及其属性对话框17
1.3.1VI的层次结构17
1.3.2调用子VI19
1.3.3VI的属性设置19
1.4基本控件及其使用方法23
1.4.1基本数值控件24
1.4.2基本布尔控件30
1.4.3控件的通用编辑方法33
1.4.4字符串和路径控件35
1.4.5下拉列表与枚举控件38
1.4.6数组控件及其属性设置39
1.4.7簇控件40
1.4.8时间标识控件与波形数据控件42
1.5小结44
第2章LabVIEW基本函数45
2.1必须了解的一些基本算术运算函数45
2.1.1基本运算函数45
2.1.2标量之间的基本运算46
2.1.3标量与数组的运算46
2.1.4数组与数组的运算46
2.1.5数组的函数47
2.1.6标量与簇的基本运算55
2.1.7簇与簇的运算56
2.1.8簇的函数56

2.2必须了解的位运算函数和逻辑运算函数59
2.2.1常用逻辑运算函数59
2.2.2位运算59
2.2.3深入理解复合运算函数60
2.3必须了解的关系运算函数和比较函数61
2.3.1比较模式61
2.3.2通用关系运算函数62
2.3.3“比较0”关系运算函数63
2.3.4复杂关系运算函数63
2.3.5字符关系运算函数66
2.3.6表达式节点与公式快速VI67
2.4小结68
第3章LabVIEW的程序运行结构69
3.1两种不同的循环结构69
3.1.1For循环的组成和特点69
3.1.2For循环与数组71
3.1.3For循环与移位寄存器73
3.1.4For循环中的continue和break74
3.1.5While循环,不仅仅是循环75
3.1.6While循环与定时76
3.1.7反馈节点81
3.2定时结构82
3.2.1定时循环的基本组成要素和配置对话框83
3.2.2定时顺序结构85
3.3独特的条件结构85
3.3.1条件结构的基本结构86
3.3.2布尔型输入86
3.3.3错误簇输入86
3.3.4数值型输入87
3.3.5枚举型输入88
3.3.6下拉列表输入88
3.3.7字符串和组合框输入88
3.3.8输入、输出隧道89
3.3.9多重If-Else的处理方法89
3.4不和谐的顺序结构90
3.4.1多线程运行次序90
3.4.2两种不同的顺序结构90
3.4.3隧道与顺序局部变量92
3.4.4顺序结构的替代92
3.4.5顺序结构的典型应用93
3.5程序框图禁用结构93
3.6局部变量、内置全局变量和功能(LV2型)全局变量94
3.6.1局部变量94
3.6.2内置全局变量96
3.6.3功能(LV2型)全局变量97
3.7事件结构99
3.7.1事件结构的基本构成和创建方法99
3.7.2事件的分类及其特点100
3.7.3事件结构之间的数据传送与共享103
3.7.4事件发生的次序、事件过滤和转发103
3.7.5正确地使用事件结构105
3.8小结106
第4章LabVIEW的数据结构及内存优化107
4.1常用数据类型转换函数107
4.1.1“强制类型转换”函数107
4.1.2“平化至字符串”函数与“从字符串还原”函数108
4.1.3变体数据109
4.1.4变体数据数据类型解析109
4.2整数的类型转换及内存映射110
4.2.1布尔型数据与字符串和数值的相互转换110
4.2.2U8类型数据与字符串之间的相互转换111
4.2.3整数与整数类型的相互转换111
4.3其他标量数据类型的类型转换及内存映射112
4.3.1定点数、浮点数的类型转换与内存映射112
4.3.2复数的类型转换及内存映射115
4.3.3时间标识的类型转换与内存映射115
4.4复合数据类型115
4.4.1标量数组的内存映射116
4.4.2字符串、路径和字符串数组的内存映射117
4.4.3LabVIEW使用的编码118
4.5簇的内存映射118
4.5.1标量组成的簇119
4.5.2包含数组和字符串的簇119
4.6类型描述符120
4.6.1类型描述符的基本构成要素120
4.6.2常用类型描述符列表120
4.6.3常见数据类型的类型描述符结构121
4.7OpenG中有关类型描述符的函数122
4.7.1类型描述符函数123
4.7.2利用类型描述符处理枚举型数据124
4.7.3利用类型描述符处理簇124

4.8几种常用的内存分析工具和方法124
4.8.1内存的重要性125
4.8.2内存和性能查看工具126
4.8.3VI使用的内存127
4.8.4优化内存的一般注意事项128
4.8.5数组与内存优化129
4.8.6在循环中避免不必要的计算、读/写控件或者变量132
4.9影响VI运行速度的因素133
4.9.1硬件输入/输出133
4.9.2屏幕显示134
4.10小结134
第5章字符串与文件存储135
5.1字符串135
5.1.1几种常用的字符串常量135
5.1.2几种常用的字符串函数136
5.1.3“匹配模式”和“匹配正则表达式”函数137
5.1.4字符串与数值的相互转换140
5.1.5功能强大的“格式化字符串”函数和“扫描字符串”函数141
5.1.6数组与电子表格字符串144
5.1.7附加字符串函数144
5.2文件存储145
5.2.1文本文件与二进制文件的区别145
5.2.2文件常量和通用目录、文件函数146
5.2.3构造路径的方法147
5.2.4文本文件的读写150
5.2.5数据记录文件的读写154
5.2.6读/写二进制文件155
5.2.7INI文件的读写157
5.2.8XML文件的读写159
5.2.9注册表的读写160
5.2.10TDM文件162
5.2.11TDMS文件164
5.3小结167
第2部分高级篇
第6章LabVIEW对象的解析169
6.1LabVIEW控件对象的层次继承结构169
6.1.1布尔控件的层次继承结构169
6.1.2通用类的属性170
6.1.3图形对象类172
6.2图形对象类的子类173
6.2.1前面板类173
6.2.2窗格类和分隔栏类174
6.2.3LabVIEW的坐标映射175
6.2.4修饰类177
6.3控件类179
6.3.1控件类的常用属性179
6.3.2控件类的常用方法181
6.3.3数值控件类182
6.4常用控件的专有属性183
6.4.1布尔控件的专有属性183
6.4.2枚举控件和下拉列表控件的专有属性184
6.4.3字符串控件、路径控件和组合框控件的专有属性185
6.4.4数组控件的属性和方法187
6.4.5簇的属性及方法189
6.5引用句柄189
6.6VI的属性191
6.6.1获取VI的引用192
6.6.2常用VI属性192
6.7常用VI方法195
6.7.1获取前面板、程序框图和VI图标的图像195
6.7.2打印控制196
6.7.3默认值方法196
6.8动态调用VI197
6.8.1静态调用和动态调用的比较197
6.8.2通过“引用节点调用”函数动态调用VI197
6.8.3一般类型VI的动态调用199
6.8.4创建闪屏201
6.8.5创建后台运行程序202
6.8.6创建向导程序202
6.8.7动态调用VI之间的数据交换203
6.9应用程序的属性和方法204
6.9.1获取应用程序的引用句柄205
6.9.2应用程序的常用属性205
6.10小结206
第7章高级控件的运用207
7.1列表框207
7.1.1列表框的创建及显示风格207
7.1.2列表框的常用属性、方法与事件207
7.1.3列表框的应用举例208

7.2多列列表框211
7.2.1显示多列项目并排序212
7.2.2多列列表框的特效制作214
7.3表格214
7.3.1表格的常用属性和方法215
7.3.2表格的应用举例218
7.4树形控件222
7.4.1树形控件的创建与静态编辑222
7.4.2树形控件的常用属性、方法和事件224
7.4.3树形控件高级应用举例225
7.5波形图表227
7.5.1波形图表的组成要件227
7.5.2波形图表的输入类型229
7.5.3波形图表专用属性229
7.5.4波形图表应用举例231
7.6波形图232
7.6.1波形图控件的创建和组成要件233
7.6.2波形图控件的输入类型233
7.6.3波形图控件的专用属性236
7.6.4波形图控件的高级应用举例238
7.7XY图240
7.7.1XY图的输入数据类型241
7.7.2XY图的高级应用243
7.8强度图表和强度图245
7.9数字数据、数字波形数据与数字波形图246
7.9.1数字数据246
7.9.2数字波形数据和数字波形图246
7.10图片控件247
7.10.1利用图片控件显示图片247
7.10.2常用绘图操作函数249
7.10.3图片控件的高级应用251
7.11小结253
第8章文本式编程与外部程序接口254
8.1公式节点254
8.1.1公式节点的数据类型、语法与控制结构254
8.1.2公式节点的应用举例256
8.2调用库函数257
8.2.1DLL与API函数257
8.2.2如何调用DLL函数259
8.2.3常用API函数的调用265
8.2.4LabVIEW调用DLL的局限性267
8.3CIN270
8.3.1CIN创建的一般过程271
8.3.2CIN的数据类型和常用函数273
8.3.3CIN与内存管理器277
8.3.4CIN的运行过程和数据共享280
8.4系统命令283
8.5剪贴板284
8.6DDE库285
8.6.1DDE概述286
8.6.2LabVIEW中DDE的常用方法286
8.7ActiveX控件与ActiveX文档288
8.7.1ActiveX的基本概念288
8.7.2ActiveX控件的调用过程289
8.7.3ActiveX应用实例289
8.7.4ActiveX自动化服务器291
8.8.NET技术292
8.8.1.NET控件292
8.8.2.NET服务293
8.8.3利用.NET创建托盘程序295
8.9小结298
第9章MathScript299
9.1如何使用MathScript299
9.1.1使用MathScript节点299
9.1.2使用MathScript交互窗口300
9.2MathScript常用命令301
9.3MathScript基础知识302
9.3.1创建向量和矩阵的基本方法302
9.3.2矩阵的基本运算303
9.3.3标准矩阵304
9.3.4矩阵元素的插入、替换、删除和提取305
9.3.5矩阵元素的排序和搜索特征值306
9.3.6常用的矩阵变换函数307
9.3.7矩阵中元素的数据类型及转换308
9.3.8关系运算、逻辑运算和位操作310
9.3.9集合函数311
9.3.10时间、日期和计时函数311
9.4程序控制结构与函数312
9.4.1For循环和While循环312
9.4.2If条件结构和Switch分支条件结构314
9.4.3函数和脚本文件315

9.5数据统计和数据插值拟合316
9.5.1常用数据统计函数317
9.5.2数据插值320
9.6多项式、积分和微分321
9.6.1多项式321
9.6.2极值与零点322
9.6.3积分和微分323
9.7数据的图形显示324
9.7.1窗口类属性与常用窗口操作函数324
9.7.2绘图区域属性327
9.7.3线对象和文本对象的属性及常用函数328
9.7.4基本绘图函数330
9.8小结333
第10章组件、同步技术、面向对象编程334
10.1数据的封装与隔离334
10.1.1合理地使用数据流334
10.1.2LV2型全局变量335
10.1.3值变化与上升、下降沿337
10.1.4定时触发与计数器339
10.2动作机(ActionEngine)341
10.2.1准备建立动作机341
10.2.2建立动作机的步骤342
10.3用户事件与动态注册事件343
10.3.1用户事件343
10.3.2动态注册事件346
10.4堆栈与数据缓冲区348
10.4.1堆栈的实现348
10.4.2数据缓冲区349
10.5同步控制技术350
10.5.1队列350
10.5.2通知器355
10.5.3信号量与集合点358
10.6项目管理器359
10.6.1项目管理器的结构360
10.6.2虚拟文件夹360
10.6.3库361
10.7面向对象编程363
10.7.1面向对象编程的基本概念363
10.7.2类的封装特性364
10.7.3类的继承特性367
10.7.4类的多态特性370
10.7.5类变量373
10.7.6调用父类中的重写方法374
10.7.7类的引用转换376
10.7.8简单工厂模式377
10.7.9类的动态加载与插件功能377
10.7.10类方法的递归功能378
10.7.11类的单态模式378
10.8小结380
第11章人机交互与编程风格381
11.1对话框381
11.1.1内置对话框381
11.1.2用户输入和显示对话框382
11.1.3定制对话框383
11.2菜单383
11.2.1创建静态菜单383
11.2.2菜单相关函数384
11.2.3动态创建菜单386
11.2.4调用多个静态菜单,存储运行时菜单387
11.2.5自动触发预定义的菜单项388
11.2.6控件的快捷菜单388
11.3光标工具389
11.3.1“设置为忙碌状态”VI与“取消设置忙碌状态”VI390
11.3.2设置控件光标390
11.3.3使用光标文件390
11.4选项卡、子面板与分隔栏391
11.4.1选项卡控件391
11.4.2选项卡控件的页面391
11.4.3页面的公用控件392
11.4.4分隔栏控件392
11.4.5分隔栏与窗格滚动条393
11.4.6利用分隔栏创建工具栏与状态栏393
11.4.7利用分隔栏自动缩放控件394
11.4.8子面板控件394
11.4.9动态调用VI插入子面板395
11.4.10异步调用VI插入子面板396
11.4.11并行的静态调用VI插入子面板396
11.4.12多个子面板插入相同VI397
11.4.13判断VI是否插入子面板398
11.4.14子面板的属性398
11.5XControl398
11.5.1Hover按钮399
11.5.2新建XControl399
11.5.3修改数据控件和状态控件400
11.5.4“外观”VI400
11.5.5创建属性和方法403
11.5.6调试XControl404
11.5.7自定义属性对话框与快捷菜单405
11.6错误处理405
11.6.1错误簇406
11.6.2常用错误处理函数406
11.7LabVIEW的编程风格408
11.7.1编程风格的内涵408
11.7.2前面板设计应该遵循的原则409
11.7.3程序框图设计应该遵循的原则410
11.7.4连接板设计应该遵循的原则411
11.7.5图标设计应该遵循的原则412
11.7.6数据结构应该遵循的原则412
11.7.7错误处理应该遵循的原则413
11.8小结414
第3部分工程应用篇
第12章LabVIEW设计模式与状态图工具416
12.1程序的基本单元VI416
12.1.1VI的可重入属性416
12.1.2不可重入VI416
12.1.3可重入VI417
12.2VI模板与代码重用418
12.2.1内置的VI模板418
12.2.2用户自定义模板418
12.3VI的调试419
12.3.1连续运行VI419
12.3.2高亮执行与单步调试420
12.3.3单步运行420
12.3.4探针421
12.3.5自定义探针421
12.3.6断点422
12.4VI的重构422
12.4.1无用编程举例422
12.4.2查找框图中重复的功能423
12.4.3创建VI代替重复的功能424
12.4.4创建多态VI处理相似的功能424

12.5LabVIEW标准设计模式425
12.5.1用户界面事件处理器设计模式425
12.5.2生产者/消费者设计模式(事件)426
12.5.3生产者/消费者设计模式(数据)427
12.5.4主/从设计模式427
12.6用户界面事件处理器模式的拓展428
12.6.1用户界面事件处理器+顺序结构设计模式428
12.6.2用户界面事件处理器+用户事件428
12.6.3用户界面事件处理器+超时分频429
12.6.4用户界面事件处理器+定时循环430
12.7队列消息处理器(QMH)设计模式430
12.7.1基本队列消息处理器模式(字符串数组)430
12.7.2基本队列消息处理器模式(字符串)431
12.7.3基于生产者/消费者设计模式(队列)的队列消息处理器431
12.7.4AMC队列消息处理器432
12.7.5基于队列消息处理器的命令模式434
12.8有限状态机设计模式435
12.8.1标准状态机设计模式436
12.8.2早期界面处理状态机436
12.8.3顺序状态机437
12.8.4处理公共状态438
12.8.5状态机+用户界面事件处理器438
12.8.6进入、运行和离开状态的处理439
12.8.7有限状态机+LVOOP439
12.9状态机工具(Statediagram)442
12.9.1调用状态机工具442
12.9.2使用状态图编辑器442
12.9.3添加转换条件和状态代码442
12.9.4选择独立运行或者子VI方式443
12.10队列消息状态机444
12.10.1通用队列消息状态机自定义模板444
12.10.2消息+数据队列状态机445
12.10.3事件驱动队列消息状态机446
12.11JKI事件驱动队列消息状态机446
12.11.1JKI状态机模板447
12.11.2JKI状态机的初始化448
12.11.3JKI状态机的预定义事件448
12.11.4JKI状态机的退出449
12.12简单状态机项目模板449
12.12.1简单状态机项目模板的基本构成450
12.12.2简单状态机450
12.12.3简单状态机范例(有限次测量)451
12.13队列消息处理器项目模板452
12.13.1队列消息处理器项目模板的基本构成452
12.13.2队列消息处理器453
12.13.3队列消息处理器的退出机制453
12.13.4队列消息处理器的错误处理机制454
12.13.5队列消息处理器的拓展455
12.14Delacor队列消息处理器456
12.14.1DQMH项目模板的基本构成456
12.14.2DQMH模块的基本构成与对外接口457
12.14.3DQMH模块测试器459
12.14.4DQMH模块460
12.14.5使用DQMH模块461
12.15操作执行者框架463
12.15.1操作者框架概述463
12.15.2创建操作者、消息464
12.15.3启动、停止操作者,发送消息至操作者核心466
12.15.4创建操作者界面467
12.15.5操作者的定时功能467
12.15.6嵌套操作者468
12.15.7嵌套操作者动态启动与停止470
12.16操作执行者框架项目模板471
12.16.1闪屏引导VI471
12.16.2操作者框架根操作者472
12.16.3Alpha嵌套操作者473
12.16.4Beta嵌套操作者474
12.17状态图工具包(Statechart)475
12.17.1状态图工具包简介475
12.17.2同步与异步方式475
12.17.3创建状态图475
12.17.4同步型状态图477
12.17.5状态图的调用和调试480
12.17.6异步型状态图481
12.17.7区域、超级状态和子状态482
12.17.8多区域并发、连接、分叉与子图484
12.17.9高级应用函数486
12.18小结488
第13章LabVIEW通信与DSC489
13.1串口通信489
13.1.1串口通信的基本概念489
13.1.2串口通信的准备工作491
13.1.3串口通信函数492
13.1.4串口通信典型应用举例493
13.2并口通信495
13.2.1设置并口通信模式495
13.2.2传送字节型数据496
13.2.3传送EPP模式数据496
13.3共享变量497
13.3.1共享变量与共享变量引擎497
13.3.2创建与监视共享变量498
13.3.3共享变量的内部缓冲机制500
13.3.4共享变量的批量创建、部署与引用501
13.4DataSocket503
13.4.1DataSocket支持的协议与URL503
13.4.2DataSocket服务器与服务管理器504
13.4.3DataSocketAPI505
13.4.4DataSocketAPI应用举例506
13.4.5DataSocket控件绑定507
13.5TCP与UDP网络通信508
13.5.1TCP通信508
13.5.2TCPSTM库510
13.5.3UDP通信510
13.6网络流511
13.6.1在应用程序之间传递命令或者数据512
13.6.2网络流基本函数512
13.6.3创建网络流URL512
13.6.4网络流应用举例513
13.7DSC工具包514
13.7.1OPC与DSC的基本概念514
13.7.2DSC强大的图形显示能力516
13.7.3OPC配置与I/O变量517
13.7.4Modbus520
13.7.5共享变量的属性521
13.7.6共享变量引擎SVE函数523
13.7.7预警与事件525
13.7.8数据记录528
13.7.9安全与权限管理531
13.8小结533
第14章数据库与报表工具包534
14.1准备使用数据库工具包534
14.1.1创建数据库534
14.1.2建立数据源535
14.1.3数据库工具包支持的数据类型536
14.1.4ADO模型537
14.2数据库基本操作537
14.2.1建立连接537
14.2.2表操作539
14.2.3插入数据540
14.2.4读取数据541
14.2.5记录集与数据浏览543
14.2.6事务与提交546
14.2.7使用命令对象和SQL语句547
14.3报表与报表工具包548
14.3.1LabVIEW中的报表VI548
14.3.2VI说明信息与HTML报表550
14.3.3报表布局与高级报表VI551
14.3.4利用Word和Excel模板创建报表552
14.4利用报表工具包操作Excel553
14.4.1常用的简单ExcelVI553
14.4.2单元格格式555
14.4.3图表与图片VI556
14.4.4Excel通用VI和高级VI557
14.5利用报表工具操作Word559
14.5.1Word简单VI560
14.5.2Word通用VI560
14.5.3Word表格与图表VI561
14.6小结562
第15章LabVIEW与实时操作系统563
15.1实时操作系统563
15.1.1实时操作系统的特点与实现563
15.1.2操作系统的有关名词解释564
15.1.3LabVIEW中的实时开发软件565
15.1.4LabVIEW支持的实时操作系统566
15.1.5LabVIEW实时平台概述566
15.2实时控制器软件安装及配置568
15.2.1配置实时系统BIOS(PXI)568
15.2.2MAX下安装PXI实时软件569
15.2.3识别远程设备569
15.2.4建立实时项目570
15.3实时应用软件高级编程及技巧571
15.3.1实时操作系统下LabVIEW不支持的特性572
15.3.2实时操作系统下的多线程572
15.3.3实时系统中时间确定性的实现575
15.3.4实时系统中的线程间通信579
15.3.5实时控制系统的网络通信582
15.3.6实时控制系统的软件架构590
15.4小结593
第16章LabVIEW实现数据采集594
16.1数据采集的基本概念594
16.1.1信号594
16.1.2传感器595
16.1.3信号处理596
16.2数据采集卡598
16.2.1数据采集卡的定义及分类598
16.2.2多功能数据采集卡原理图599
16.2.3数据采集的关键参数和概念599
16.2.4数据采集卡与信号接地604
16.3采样定理606
16.4降低系统噪声和提高精度608
16.5如何选购采集卡610
16.6数据采集软件基础611
16.6.1采集系统的安装611
16.6.2NI采集卡的常用函数614
16.6.3研华常用采集函数618
16.7基于NI-DAQmx的高级编程619
16.7.1触发信号(Trigger)619
16.7.2采集系统时钟621
16.7.3多板卡之间的同步采集624
16.7.4数据传输机制626
16.7.5完整波形输出630
16.7.6并行结构采集631
16.7.7通过硬件信号触发定时循环运行631
16.7.8用NI-DAQmx的事件编写事件驱动程序633
16.7.9选择合适的读取策略633
16.7.10使用NI-DAQmx控制任务安全中止采集636
16.7.11计数器/定时器及其应用636
16.8小结641
第17章FPGA开发642
17.1FPGA的基本概念与CRIO的组成642
17.1.1FPGA的基本概念642
17.1.2CRIO的构成643
17.1.3构建FPGA项目644
17.2FPGA编程645
17.2.1FPGA基本I/O之模拟量输入/输出645
17.2.2FPGA基本I/O之数字量输入/输出646
17.2.3FPAG定时、时钟与分频648
17.2.4FPGA计数器应用649
17.2.5触发与外部时钟循环652
17.2.6FPGA常用函数653
17.2.7FPGA多线程与线程之间的数据交换656
17.2.8FPGAIPCore659
17.3FPGA与RT程序之间的数据交换660
17.3.1读写控件方式660
17.3.2中断661
17.3.3FIFO662
17.3.4扫描方式665
17.3.5专用C模块668
17.3.6FPGA程序的优化670
17.4Spartan-3E开发板673
17.4.1Spartan-3E简介673
17.4.2建立Spartan-3EFPGA项目674
17.4.3编译FPGA程序675
17.5小结676

前言/序言

前言

计算机的出现,彻底改变了人们的工作和生活方式。如今计算机已经无处不在,进入了每个人的生活之中。在工程技术人员看来,计算机不仅仅是人们常见的PC,也包括各种微处理器。从这个角度看,我们无时无刻不在使用计算机,例如,电视、洗衣机、自动提款机等都依赖计算机来实现各种便捷的功能。

相同的计算机可以完成不同的工作,在于它们使用不同的程序,而程序是由计算机编程语言创建的。短短几十年中,出现了众多的编程语言,这些编程语言的共同特点是采用文本方式创建程序。文本方式编程对编程人员要求很高,这使得计算机编程只能是少数人才可以从事的职业。

美国国家仪器公司(NationalInstruments,NI)的创新软件产品LabVIEW,允许用图形方式编程,摒弃了晦涩难懂的文本代码,使得计算机编程不再是少数人的专利。LabVIEW的最早版本诞生于1986年,几乎和Windows的最早版本同步,这注定了LabVIEW是多平台的编程语言,适合于不同的操作系统。

20世纪80年代初,NI公司是GPIB总线设备的主要供货商,丰富的硬件经验和强大的软件开发需求,促使NI公司的工程师们决心寻找一种代替传统编程语言的开发工具,这导致了1986年LabVIEW的横空出世。LabVIEW是由测试工程师开发的专用编程语言,因此,LabVIEW具有鲜明的行业特点,最早主要用于测试测量领域。NI公司独创了虚拟仪器的理念,提出了“软件就是仪器”的理念,并逐步成为业界的标准。

随着LabVIEW的不断发展,几乎每隔一两年,都要推出新的版本。LabVIEW的应用范围已经覆盖了工业自动化、测试测量、嵌入式应用、运动控制、图像处理、计算机仿真、FPGA等众多领域。以LabVIEW为核心,采用不同的专用工具包和统一的图形编程方式,可以实现不同技术领域的需求。

由于LabVIEW版本升级过快,导致许多函数、VI的名称与图标发生了变化。使用LabVIEW新版本的读者,会发现《LabVIEW宝典(第2版)》第1版中程序框图的函数、VI与新版LabVIEW对应不上,而且LabVIEW每次更新都增加了很多新功能。鉴于此,我们编写了《LabVIEW宝典(第2版)》的第2版。第2版在2016新版LabVIEW的基础上,重新编写了绝大部分程序框图,同时也针对新功能,增加了对应的内容。尤其是对第10章,重写了大部分内容,增加了许多流行的框架结构的介绍。除了LabVIEW本身的框架外,也介绍了几种流行的第三方常用框架结构。

LabVIEW宝典(第2版)》要点

LabVIEW宝典(第2版)》作者多年使用LabVIEW作为主要的编程语言,因此特别关注LabVIEW在工业领域的具体运用以及LabVIEW的实用编程技术。《LabVIEW宝典(第2版)》共17章,分为入门篇、高级篇、工程应用篇。

第1~5章为入门篇,介绍了LabVIEW的基本概念、基本函数的用法和常用的运行结构,详尽地分析了LabVIEW的基本数据结构和文件存储方式。

第6~11章为高级篇,介绍了应用程序、VI和控件的引用、属性和方法,以及各类高级控件的运用方法。第8章介绍了LabVIEW的文本编程方式及DLL、C语言接口,第9章详细介绍了基于MATLAB语法的MathScript编程技术,第10章介绍了LabVIEW基于组件的编程方法。

第12~17章为工程应用篇,具体而细致地讲解了在做实际工程开发时所用到的LabVIEW编程技术。本篇结合LabVIEW的常用工具包,具体分析了计算机串口、并口、网络通信方面的编程技术,以及数据记录和监控工具包、数据库连接工具包、报表生成工具包、状态图工具包、FPGA工具包等的应用。第13、第14章详细介绍了数据采集的基本原理和常用编程方法,其中重点介绍了LabVIEW在实时系统下的运用。第15章讲解了LabVIEW实时系统的开发案例。第16章讲解了LabVIEW数据采集系统开发案例。第17章讲解了FPGA的开发案例,以及如何利用LabVIEW图形编程方式,提高开发效率。

LabVIEW宝典(第2版)》读者

LabVIEW宝典(第2版)》可作为高等院校通信、测量技术、自动控制等相关课程的教材和教学参考书,也可作为相关工程技术人员设计开发仪器或自动测试系统的技术手册。

LabVIEW宝典(第2版)》特色

LabVIEW宝典(第2版)》内容非常丰富,在每个章节都安排了大量的示例,针对具体编程实践中遇到的问题,提出了多种解决方法。在兼顾基础知识的前提下,深入讨论了LabVIEW的高级编程方法和编程技巧。

LabVIEW宝典(第2版)》的宗旨是作为实用工具书,侧重于来自工程实践的一线案例。笔者在写作过程中,与众多的LabVIEW爱好者进行了充分的沟通与交流,总结了编程过程中经常遇到的问题,并作为《LabVIEW宝典(第2版)》的重要内容。

LabVIEW宝典(第2版)》使用了大量篇幅讲解NI公司各种专用工具包的运用,这部分内容具有一定的深度和实用价值,特别适合于具有一定基础的编程人员学习运用。在基础篇中,虽然也介绍了许多LabVIEW的基础知识,但还是侧重于具体应用,其中大量的例程可以直接在具体项目中使用。

在高级篇中,重点介绍了LabVIEW常用的编程模式,以及状态图工具包的运用,同时介绍了新增的面向对象的编程方法。

补遗说明

LabVIEW宝典(第2版)》写作时主要使用8.6版本,但是书中介绍的具体内容并不限于特定的版本,因此无版本限制。《LabVIEW宝典(第2版)》案例文件和相关课件在网址read.zhiliaobang.com可以下载,方便读者提高学习效率,也方便教师教学。此外,对于比较重要的内容,为了让读者印象深刻,我们以“学习笔记”的体例呈现出来。

致谢与分工

LabVIEW宝典(第2版)》由陈树学、刘萱两位工程师编写,我们有多年的LabVIEW实际开发经验,经过浓缩和总结才成此书。在编写《LabVIEW宝典(第2版)》的过程中得到张国强老师的大力支持,他为我们提供了开发硬件,使得写作能在真实的开发环境中进行,应该说没有他的热心帮助完成《LabVIEW宝典(第2版)》是难以想象的事情。《LabVIEW宝典(第2版)》也离不开成都道然科技有限责任公司的专业策划支持。因为《LabVIEW宝典(第2版)》作者为工程技术人员,对于写作并不擅长,书中错漏之处在所难免,敬请批评指正。能够为LabVIEW在国内的推广使用做一点力所能及的贡献,能够对广大的LabVIEW爱好者有所帮助,是我们最大的愿望。如果你有任何意见或者建议欢迎联系:info@dozan.cn。


其他推荐