LabVIEW虚拟仪器项目开发与实践

LabVIEW虚拟仪器项目开发与实践"

作者:杨高科
ISBN:9787302603238
定价:¥179
字数:千字
页数:
出版时间:2022.07.01
开本:
版次:1-1
装帧:
出版社:清华大学出版社
简介

本书是《LabVIEW虚拟仪器项目开发与管理》的升级版,共22章,包括基础知识、虚拟仪器项目开 发方法以及项目管理和实践。第1~6章为基础知识,主要讲解LabVIEW程序前面板设计、数据结构、程 序框图、函数和错误处理等内容;第7~19章主要讲解虚拟仪器项目开发方法,包括用于实际项目开发的 单循环和多循环程序框架、程序用户界面扩展、数据类型扩展、代码和程序结构扩展、数据存储、数据库 和面向对象开发技术、网络通信、信号与传感器、数据采集和滤波等数字信号处理相关的内容;第20~22 章主要讲解项目管理和实践,包括项目管理理论和一些对实际项目开发的经验总结,同时提供几个实际 的工程案例作为参考。本书力求面向实际工程项目开发,并配有实际工程实例源码和相关参考资料。

本书可作为LabVIEW虚拟仪器项目开发和管理人员的技术参考书,也可作为计算机、虚拟仪器和自 动化等专业的教材,或各类LabVIEW虚拟仪器项目开发和管理培训的参考用书。

前言

前 言

随着计算机和测控技术的发展,以“软件即仪器”为核心思想的虚拟仪器技术在

工业领域得到了广泛应用。NI公司的LabVIEW是虚拟仪器系统开发工具的开山鼻祖

和杰出代表。可以快速、高效地将各类软、硬件集成在一起,创建大型的数据采集、

处理分析和测控项目。因此笔者认为有必要深入研究基于LabVIEW的虚拟仪器技术。

自从1998年第一次接触LabVIEW以来,笔者常在国内外各类LabVIEW虚拟仪

器相关的网站上搜集资料,并在LAVA、NI Discussion Forums、OpenG等论坛上与国

内外的同行交流。期间,常感慨国内虚拟仪器开发资料的匮乏,不少书籍资料中的内

容还停留在让人尴尬的、简单绘制函数曲线图的阶段,离实际项目开发相去甚远。每

每遇到这种情况,都有将自己的一些心得整理出来与大家分享的冲动,相信一定对广

大开发人员有所帮助。

2012年,笔者编写的《LabVIEW虚拟仪器项目开发与管理》一书出版后,收到了

大量的读者反馈。很多读者对于书中提出的单循环和多循环框架给予了极高的评价,

并将这些框架应用于他们的项目实践中。也有不少读者对书中内容提出了不少建议,

希望能补充网络通信、数据采集和滤波等方面的内容,并要求增加一些项目实例。

由于2012—2018年,我一直在工作之余忙于编写《图像处理、分析与机器视觉(基

于LabVIEW)》一书,《LabVIEW虚拟仪器项目开发与管理》一书的再版就被搁置

了。此外,近几年LabVIEW虚拟仪器和机器视觉技术也得到了长足发展。为了能紧

跟新技术发展的步伐,我在《LabVIEW虚拟仪器项目开发与管理》一书的基础上,对 

LabVIEW虚拟仪器的项目开发技术进行了更新,并根据读者反馈补充了大量新内容,

重新编写了本书。

全书共22章,主要讲解LabVIEW虚拟仪器项目开发的基础知识、虚拟仪器项目

开发方法以及项目管理和实践。

第1~6章为基础知识,主要讲解LabVIEW程序前面板设计、LabVIEW的基本

数据结构、程序框图、函数和子VI的开发以及错误处理等内容。通过这些内容的学习,

读者会对使用LabVIEW开发虚拟仪器项目的软件有一个概括性的了解。

第7~19章讲解大型复杂虚拟仪器项目开发方法。这部分内容是本书的核心,多

数内容都是笔者实际项目开发经验的总结,书中提及的源码可直接用于实际项目开发。

该部分的内容简要汇总如下。

第7~9章:主要介绍实际项目开发过程中应使用的程序框架。介绍事件结构、

定时结构、禁用结构以及元素同址结构。对各种单循环程序框架进行比较,包括轮询、

II

LabVIEW虚拟仪器项目开发与实践

经典状态机、消息状态机、队列状态机、事件状态机,以及程序框架中数据传递和功能

全局量的使用等。并在讲解多线程编程技术、同步多循环和异步多循环程序结构后,讲

解用于解决大型复杂项目的并行多循环程序框架,以及模块化的多循环程序框架。这些

程序框架均已开源,读者可在实际项目开发时直接使用。

第10章:讲解LabVIEW高级用户界面开发技术,包括自定义控件、XControl、

菜单、光标、工具栏、状态栏以及多语言支持等。

第11~13章:讲解数据类型和程序代码的扩展,以及代码的复用技术,包括自定

义数据类型以及面向对象编程;使用公式节点、表达式节点、脚本节点简化数学运算,

使用CIN将文本代码无缝嵌入程序框图,以及使用VI Server和VI Scripting以编程方式

动态控制VI;OPENG和MGI代码库的使用、调用DLL、ActiveX、.NET以及最新的

Python脚本调用等。

第14、15章:讲解数据存储与表达技术,包括文本文件、二进制文件、数据记录文

件和电子表格文件、配置文件、TDMS文件和XML文件等文件类型的操作、数据压缩、

数据加密、数据表达以及数据库技术等。

第16章:讲解网络通信技术,包括网络参考模型和通信协议,串口通信、红外和蓝

牙通信、TCP/IP与UDP通信、DataSocket技术、FTP和SMTP应用程序开发,以及简

单消息传递参考库NI STM等。

第17~19章:讲解信号与传感器、数据采集技术和数字滤波器的设计和应用。

第20~22章主要介绍虚拟仪器项目的开发管理与实践。在介绍项目管理的相关实

践经验后,给出一个影像增强仪质量检测系统的实际设计开发实例。最后基于航空液流

阀检测系统、ASDX传感器测试系统和灌装检测机器视觉系统三个实例,对项目开发过

程中的一些关键技术进行汇总,给出测控项目和机器视觉项目的完整模板。

LabVIEW虚拟仪器项目开发是一个“既容易又困难”的工作。说容易是因为

LabVIEW作为开发工具很容易上手,说难是因为它覆盖的技术领域很广,而且这些领域

的知识在开发过程中经常交差融合使用。因此,全书在编写过程中力求面向实际应用,

尽量避免浅尝辄止和纸上谈兵。希望能通过笔者的一点努力,提供一些有价值的技术资

料和源码模板(本书中各章配套源码可以扫描图书封底的二维码下载),以便广大开发

人员能更专注于各自专业技术领域的研究和开发。

本书的编写过程犹如播放一首承载记忆的老歌,历久而弥新。十年弹指一挥间,编

写《LabVIEW虚拟仪器项目开发与管理》时的艰辛仍历历在目,而本书编写过程中的甜

蜜又被再次承载。在《LabVIEW虚拟仪器项目开发与管理》编写过程中,我的妻子怀孕,

很多章节都是在照顾妻子和熬夜中完成的,直到我的儿子出生并过第一个生日。感谢妻

子对我的支持,也感谢儿子给了我不断坚持的信念。本书编写过程中,我的儿子Zhuo正

在认真学习微积分,他努力地帮我寻找书中的问题,纠正了很多数学公式中的错误,感

谢他的努力!谨以此书献给我的妻儿。

再次特别感谢我的导师潘建寿教授和带我认识LabVIEW的寇小明博士,是他们让

我与信号处理、机器视觉和LabVIEW结下了不解之缘,也教给了我严谨的工作作风,

III

前 言

使我至今都受益匪浅。感谢所有关心本书的读者,以及国内外技术论坛上的朋友们,他

们给予本书很多建设性的意见和建议,也提供了不少指导和灵感。

由于时间和篇幅的限制,很难在书中全面叙述虚拟仪器项目开发的各方面,同时书

中内容难免存在不妥之处,请读者见谅。对本书内容的任何宝贵建议和意见,可发送至

笔者电子邮箱(邮箱地址在本书资源包中)。

愿携手所有为初心和梦想努力并坚持着的同行,共同为虚拟仪器和机器视觉技术的

发展添砖加瓦,也衷心祝愿虚拟仪器和机器视觉技术在LabVIEW的助力下长足发展!

 杨高科

 2022年3月于多伦多

目录

目 录

第1章

绪 论 / 1

1.1 虚拟仪器与LabVIEW / 1

1.2 虚拟仪器开发环境的搭建 / 4

1.3 VI的开发与调试步骤 / 9

1.4 LabVIEW虚拟仪器项目开发 / 14

1.5 LabVIEW虚拟仪器项目管理 / 15

第2章

前面板设计 / 17

2.1 控件选择 / 17

2.2 前面板设计总原则 / 21

2.3 前面板布局 / 23

2.4 前面板文本和色彩 / 25

2.5 可见性和健壮性 / 27

2.6 对前面板进行装饰 / 29

2.7 本章小结 / 31

第3章

基本数据类型和操作 / 32

3.1 基本数据类型 / 32

3.2 常规数据操作方法 / 38

3.3 数值 / 41

3.4 布尔 / 44

3.5 枚举类型与下拉列表 / 46

3.6 路径和字符串 / 47

3.7 数组、簇和矩阵 / 51

3.8 数组操作 / 54

3.8.1 数组的创建和初始化 / 55

3.8.2 索引数组元素 / 56

3.8.3 编辑数组 / 58

3.8.4 数组排序 / 59

3.8.5 其他数组操作函数 / 59

3.9 图形和图表 / 61

3.9.1 波形图表和波形图形 / 63

3.9.2 XY图形 / 66

VI

LabVIEW虚拟仪器项目开发与实践

3.9.3 二维和三维图形 / 67

3.9.4 强度图形和强度图表 / 71

3.10 本章小结 / 73

第4章

基本程序结构 / 74

4.1 数据流驱动 / 76

4.2 顺序结构 / 78

4.3 分支结构 / 80

4.4 循环结构 / 82

4.4.1 For循环和While循环 / 82

4.4.2 自动索引 / 84

4.4.3 移位寄存器 / 85

4.4.4 反馈节点 / 87

4.5 本章小结 / 89

第5章

函数、程序框图和VI / 90

5.1 LabVIEW内置函数库 / 90

5.2 VI的程序框图 / 94

5.3 创建子VI / 98

5.4 为VI添加说明和帮助 / 102

5.5 可重入VI、递归VI和多态VI / 105

5.6 本章小结 / 108

第6章

错误处理 / 110

6.1 错误簇 / 110

6.2 错误捕获 / 114

6.3 错误报告 / 118

6.4 错误处理 / 122

6.5 自定义错误处理 / 127

6.6 本章小结 / 130

第7章

扩展程序结构 / 131

7.1 事件结构 / 131

7.1.1 事件与事件结构 / 132

7.1.2 事件的静态注册和动态

 注册 / 135

7.1.3 通知事件和过滤事件 / 139

7.1.4 用户自定义事件 / 141

7.1.5 使用事件的注意事项 / 142

7.2 定时结构 / 144

7.2.1 定时循环结构 / 145

7.2.2 定时顺序结构 / 152

7.3 禁用结构 / 153

7.4 元素同址操作结构 / 157

7.5 本章小结 / 159

VII

目 录

第8章

单循环程序框架 / 160

8.1 轮询 / 161

8.2 程序框架中的数据传递和功能全

 局量 / 162

8.3 经典状态机 / 166

8.4 消息状态机 / 169

8.5 队列状态机 / 173

8.6 事件状态机 / 177

8.7 本章小结 / 183

第9章

多循环程序框架 / 185

9.1 多任务、多线程、多处理与多

 循环 / 186

9.2 变量控制多循环 / 189

9.3 同步多循环 / 192

9.3.1 事件发生函数控制

 多循环 / 193

9.3.2 通知器控制多循环 / 194

9.3.3 多个定时循环的同步 / 196

9.3.4 集合点控制多循环 / 199

9.4 异步多循环 / 200

9.4.1 生产者/消费者结构 / 200

9.4.2 大型多任务结构 / 205

9.5 模块化的程序框架 / 211

9.5.1 多循环程序框架的

 模块化 / 212

9.5.2 动态加载 / 217

9.6 本章小结 / 220

第10章

扩展用户界面 / 222

10.1 自定义控件 / 222

10.2 XControl / 228

10.2.1 XControl的能力 / 228

10.2.2 XControl的属性和方法 / 235

10.2.3 XControl的快捷菜单、尺寸

 和位置 / 236

10.3 菜单 / 239

10.3.1 主菜单 / 240

10.3.2 快捷菜单 / 243

10.4 工具栏和状态栏 / 246

10.5 光标 / 250

10.6 多语言支持 / 251

10.6.1 导出/导入语言包 / 252

10.6.2 动态加载语言包 / 259

10.6.3 LCE工具包 / 261

10.7 本章小结 / 264

第11章

数据类型扩展与面向对象 / 266

11.1 自定义数据类型 / 266

11.2 面向对象编程 / 270

11.2.1 封装 / 272

11.2.2 继承 / 275

LabVIEW虚拟仪器项目开发与实践

11.2.3 多态 / 279

11.2.4 LabVIEW类的开发和

 使用 / 281

11.3 本章小结 / 284

第12章

扩展程序代码 / 286

12.1 简化数学运算 / 286

12.1.1 公式节点和表达式节点 / 286

12.1.2 脚本节点 / 290

12.2 调用CIN / 292

12.2.1 指定参数类型和

 传递方式 / 293

12.2.2 创建C代码 / 294

12.2.3 编译代码为LSB格式 / 296

12.2.4 加载、调试代码 / 298

12.3 LabVIEW NXG中的C节点 / 301

12.4 Python节点 / 303

12.5 以编程方式控制VI / 304

12.5.1 VI Server程序 / 305

12.5.2 VI Scripting / 309

12.6 本章小结 / 312

第13章

代码复用 / 314

13.1 OpenG和MGI代码库 / 314

13.2 调用DLL / 317

13.2.1 配置CLN / 318

13.2.2 调用自己开发的DLL / 322

13.2.3 调用硬件驱动或Win32

 API / 329

13.3 ActiveX和.NET组件 / 332

13.3.1 调用ActiveX / 332

13.3.2 调用.NET / 337

13.4 本章小结 / 340

第14章

数据存储与表达 / 341

14.1 文件操作 / 341

14.1.1 文本文件 / 342

14.1.2 二进制文件 / 345

14.1.3 数据记录文件和电子表格

 文件 / 347

14.1.4 配置文件 / 349

14.1.5 TDMS文件 / 351

14.1.6 XML文件 / 359

14.2 数据压缩和加密 / 366

14.3 数据表达 / 369

14.4 本章小结 / 374

目 录

第15章

数据库 / 376

15.1 数据库基础 / 376

15.2 连接数据库 / 381

15.2.1 使用DSN连接数据库 / 381

15.2.2 使用UDL连接数据库 / 382

15.2.3 增强数据库程序的可移植

性 / 384

15.3 数据库基本操作 / 386

15.3.1 创建、删除数据表 / 386

15.3.2 操作数据记录 / 389

15.4 数据库高级操作 / 393

15.4.1 执行SQL语句 / 393

15.4.2 浏览数据记录 / 398

15.4.3 使用存储过程 / 401

15.5 数据库工具函数 / 403

15.5.1 数据库属性信息 / 403

15.5.2 处理数据库事务 / 406

15.5.3 使用文件保存数据 / 409

15.6 本章小结 / 410

第16章

网络通信 / 411

16.1 网络参考模型和通信协议 / 412

16.2 串口通信 / 416

16.3 蓝牙和红外 / 422

16.3.1 蓝牙通信 / 423

16.3.2 红外通信 / 425

16.4 TCP/IP与UDP / 427

16.4.1 TCP/IP / 427

16.4.2 UDP / 435

16.5 NI STM / 441

16.6 DataSocket / 445

16.7 FTP和SMTP / 451

16.7.1 FTP / 451

16.7.2 SMTP / 454

16.8 本章小结 / 456

第17章

信号与传感器 / 458

17.1 信号 / 459

17.1.1 典型测试信号 / 463

17.1.2 常用噪声和随机信号 / 469

17.1.3 模拟波形 / 472

17.2 传感器 / 474

17.2.1 温度传感器及典型数据

 采集程序 / 478

17.2.2 应变和力传感器 / 482

17.2.3 位移传感器 / 485

17.2.4 速度传感器 / 488

17.2.5 毫米波雷达 / 493

17.2.6 工业相机与图像采集 / 494

17.3 本章小结 / 498

LabVIEW虚拟仪器项目开发与实践

第18章

数据采集 / 500

18.1 信号的数字化 / 500

18.2 虚拟仪器数据采集 / 502

18.3 基于声卡的信号采集(1D) / 507

18.4 图像采集(2D) / 513

18.5 本章小结 / 519

第19章

滤波 / 521

19.1 滤波器基础 / 521

19.2 傅里叶变换与频率响应 / 525

19.3 FIR滤波器 / 538

19.3.1 移动平均滤波器 / 540

19.3.2 加窗Sinc滤波器 / 544

19.3.3 等纹波Parks-McClellan和

 窄带插值FIR(iFIR)

 滤波器 / 551

19.4 IIR滤波器 / 553

19.4.1 基本IIR滤波器 / 557

19.4.2 经典IIR滤波器 / 567

19.5 非线性滤波器 / 578

19.6 逐点滤波 / 581

19.7 本章小结 / 587

第20章

虚拟仪器项目管理 / 589

20.1 项目生命周期模型 / 590

20.1.1 边做边改 / 591

20.1.2 瀑布模型 / 592

20.1.3 原型模型 / 594

20.1.4 增量迭代模型 / 595

20.1.5 螺旋模型 / 598

20.2 项目各阶段 / 600

20.2.1 需求分析 / 600

20.2.2 设计 / 605

20.2.3 编码 / 607

20.2.4 测试 / 609

20.2.5 升级维护和版本控制 / 614

20.3 软件质量标准 / 622

20.4 进度与预算 / 626

20.4.1 时间管理 / 626

20.4.2 成本管理 / 631

20.5 本章小结 / 635

第21章

影像增强仪质量检测系统 / 637

21.1 系统需求 / 637

21.1.1 功能需求 / 637

21.1.2 技术指标 / 639

21.2 系统设计 / 639

21.2.1 光源子系统设计 / 640

21.2.2 CCD相机的选择 / 644

目 录

21.2.3 图像采集数据采集设备的

 选择 / 647

21.3 软件开发 / 648

21.3.1 系统自检模块 / 650

21.3.2 应力切换与控制模块 / 651

21.3.3 基于DataSocket的

 通信模块 / 652

21.3.4 标准图像采集模块 / 654

21.3.5 故障识别模块 / 658

21.3.6 数据分析模块 / 663

21.4 集成测试验证 / 665

21.5 系统主要特点 / 667

第22章

项目实践 / 669

22.1 航空液流阀检测系统 / 669

22.1.1 系统需求 / 669

22.1.2 系统组成 / 670

22.1.3 关键技术与软件模块 / 672

22.2 ASDX传感器测试系统 / 682

22.2.1 日志和SQLite数据库 / 684

22.2.2 面向对象方式的测试

 管理 / 689

22.3 灌装检测机器视觉系统 / 691

作者简介

编辑推荐

本书是《LabVIEW虚拟仪器项目开发与管理》的升级版,共22章,包括基础知识、虚拟仪器项目开 发方法以及项目管理和实践。第1~6章为基础知识,主要讲解LabVIEW程序前面板设计、数据结构、程 序框图、函数和错误处理等内容;第7~19章主要讲解虚拟仪器项目开发方法,包括用于实际项目开发的 单循环和多循环程序框架、程序用户界面扩展、数据类型扩展、代码和程序结构扩展、数据存储、数据库 和面向对象开发技术、网络通信、信号与传感器、数据采集和滤波等数字信号处理相关的内容;第20~22 章主要讲解项目管理和实践,包括项目管理理论和一些对实际项目开发的经验总结,同时提供几个实际 的工程案例作为参考。本书力求面向实际工程项目开发,并配有实际工程实例源码和相关参考资料。

本书可作为LabVIEW虚拟仪器项目开发和管理人员的技术参考书,也可作为计算机、虚拟仪器和自 动化等专业的教材,或各类LabVIEW虚拟仪器项目开发和管理培训的参考用书。

作者寄语

电子资料

www.luweidong.cn

下一个