第1章 起源 1
1.1 LabVIEW和自动化 1
1.1.1 虚拟仪器:LabVIEW的基础 3
1.1.2 为什么要使用LabVIEW 5
1.2 LabVIEW的起源 6
1.2.1 简介 7
1.2.2 可视化编程的出现 7
1.2.3 整个世界就是一台仪器 9
1.2.4 一个顽固的UNIX拥护者被Macintosh征服 10
1.2.5 用图片拼成一个整体 10
1.2.6 关注系统设计失败的平台 12
1.2.7 疯狂的开发过程 13
1.2.8 突破工具和机器的限制 14
1.2.9 在估计开发时间方面面对现实 15
1.2.10 发售第一版 16
1.2.11 LabVIEW提供的潜力成就了Apple 16
1.2.12 LabVIEW2 19
1.2.13 向Windows和Sun上移植系统 20
1.2.14 LabVIEW 3 21
1.2.15 LabVIEW 4 22
1.2.16 LabVIEW分支到Bridge VIEW 23
1.2.17 LabVIEW 5 23
1.2.18 LabVIEW RT分支 25
1.3 预言未来 26
1.2.19 LabVIEW 6 26
1.4 LabVIEW参与的大项目 28
第2章 开始 31
2.1 如何装配一个系统 31
2.1.1 使用熟悉的设备 32
2.1.2 选择I/O系统 32
2.1.3 选择一台计算机 37
2.1.4 其他要考虑的软件 40
2.2 帮助和问答的资源 41
2.2.1 接受培训 42
2.2.2 使用实例VIs 42
2.2.4 网络上的LabVIEW 43
2.2.3 当所有方法失败时,阅读目录 43
2.2.5 因特网邮件组 44
2.2.6 来自National Instruments公司的邮件帮助 45
2.2.7 频繁问及的问题(FAQ)文档 45
2.2.8 LabVIEW技术资源(LTR) 46
2.2.9 用户组和Ⅵ用户网 46
2.2.10 联盟表:顾问及其他 47
2.2.11 教育的应用软件 47
2.2.12 (800)IEEE 488 47
2.3 参考文献 48
第3章 输入和输出 49
3.1 信号的起源 49
3.1.1 转换器和传感器 49
3.1.3 信号的分类 52
3.1.2 激励器 52
3.2 连接 56
3.2.1 接地和屏蔽 57
3.2.2 为什么使用放大器或者其他信号调节 62
3.2.3 选择正确的I/O子系统 69
3.2.4 用网络连接一切 73
第4章 抽样信号 74
4.1 抽样法则 74
4.2 滤波与取平均值 76
4.3 有关ADCs、DACs以及多路转换器 77
4.3.1 数模转换器 81
4.3.2 数字码 82
4.4 触发和定时 83
4.5 少量噪音可以成为好事 84
4.6 吞吐量 87
4.7 参考文献 88
第5章 控制程序流 90
5.1 有关这本书的图表 90
5.2 定序和数据流 91
5.2.1 Sequence结构 92
5.2.2 数据从属 93
5.2.3 增加公共线程 94
5.3 循环 95
5.3.1 For循环的微妙 95
5.3.2 奇妙的While 96
5.4 移位寄存器 98
5.5 全局变量和局部变量 100
5.5.1 内置全局变量以及它们的危险 102
5.5.2 局部变量 105
第6章 LabVIEW数据类型 109
6.1 数值类型 109
6.2 字符串 111
6.2.1 创建字符串 111
6.2.2 分析字符串 112
6.2.3 处理不宜打印的字符 115
6.2.4 电子数据表格、字符串以及数组 115
6.3 数组 118
6.3.1 初始化数组 122
6.3.2 数组内存的使用和性能 123
6.4 群集 126
6.5 波形 128
6.6 数据类型转化 131
6.6.1 转化和强迫 131
6.6.2 复杂的转化和类型构造 133
6.6.3 Flatten To String 136
6.6.4 枚举类型(enums) 137
6.6.5 Get Carried Away Department 138
第7章 定时 139
7.1 小型定时器的来历 139
7.2 使用内置定时功能 140
7.2.1 时间间隔 141
7.2.2 绝对定时函数 142
7.3 将定时数据传送至其他应用程序 143
7.4 高精度和高准确定时 145
第8章 同步化 147
8.1 轮询 147
8.2 事件 150
8.3 通告程序 153
8.4 信号量 155
8.5 会合机制 157
9.1 存取文件 159
第9章 文件 159
9.2 文件类型 161
9.3 写文本文件 161
9.4 读文本文件 165
9.5 格式化为文本文件 166
9.6 二进制文件 167
9.6.1 写二进制文件 168
9.6.2 读二进制文件 170
9.7 写数据流文件 172
9.8 读数据记录文件 173
9.9 数据记录文件应用 174
第10章 Gary创建一个应用程序的方法 176
10.1.2 收集规格 177
10.1.1 分析用户需求 177
10.1 定义问题 177
10.1.3 画一个方框图 179
10.2 指定I/O硬件 181
10.3 用户界面的原型 182
10.3.1 用户界面设计 183
10.3.2 可能的面板 183
10.4 设计,然后再编写程序 186
10.4.1 请求范例 187
10.4.2 自顶而下还是自底而上 187
10.4.3 模块化 189
10.4.4 选择一个体系结构:规范的VIs 190
10.4.5 作为设计工具的Ⅵ分层体系结构 200
10.4.6 通过抄袭进行程序设计 201
10.4.7 请关注自己的数据 202
10.4.8 勾画出程序结构 204
10.4.9 编写伪代码 205
10.4.10 语言翻译 207
10.4.11 范围、强制转换以及默认值 208
10.4.12 处理错误 209
10.4.13 将它们都放在一起 212
10.5 测试和调整自己编写的程序 213
10.5.1 搞清楚子VIs所胜任的任务 213
10.5.2 偷看数据 214
10.5.3 每次一步 214
10.5.4 Execution highlighting 215
10.5.5 设置断点 216
10.5.6 调试全局变量 217
10.5.7 调试局部变量和属性节点 218
10.5.8 追踪执行 218
10.5.9 检查性能 220
10.6 最后一击 221
10.7 参考文献 222
第11章 文件编制 223
11.1 Ⅵ描述 223
11.2 控件描述 224
11.4 文件编制图表 225
11.3 自定义在线帮助 225
11.5 Ⅵ历史记录 226
11.6 其他文件编制的方法 226
11.7 打印LabVIEW面板和图表 227
11.8 编写规范的文件 229
11.8.1 文件概述 230
11.8.2 连接器窗体图像 230
11.8.3 Ⅵ描述 231
11.8.4 终端描述 231
11.8.5 编程实例 232
11.9 分配文件 232
第12章 设备驱动程序的基本知识 234
12.1 有关设备库 234
12.2 可相互交换的虚拟设备(IVI) 235
12.3.1 通信标准 236
12.3 驱动程序基础 236
12.3.2 了解自己的设备 247
12.3.3 决定要编程的函数 248
12.3.4 建立通信 249
第13章 设备驱动程序的开发技术 255
13.1 驱动程序体系结构 255
13.2 通过功能的分组进行模块化 256
13.3 错误I/O流程控件 258
13.4 从一个模板开始 263
13.5 打开一个连接器 264
13.6.1 GPIB通信子Ⅵ 265
13.6 使用一个通信子Ⅵ 265
13.6.2 串行通信子Ⅵ 267
13.6.3 VXI通信子Ⅵ 271
13.7 在同一子Ⅵ中的读和写 271
13.8 在一个驱动程序Ⅵ中的多个函数 273
13.9 定时、信息交换以及触发 275
13.9.1 GPIB信息交换 275
13.9.2 串行信息交换 277
13.10 范围检查 278
13.11 设置管理 280
13.11.1 文件编制 282
13.12 参考文献 283
14.1 NI_DAQ驱动程序 284
第14章 DAQ库的使用 284
14.2 NI_DAQ通道模板 286
14.3 硬件选择 286
14.3.1 选择一个平台和总线 286
14.3.2 多功能输入输出板 287
14.3.3 专用模拟输入输出板 287
14.3.4 数字和输入输出定时板 288
14.3.5 SCSI 288
14.3.6 便携式DAQ 289
14.3.7 直接存储器访问(DMA) 289
14.4.1 DAQ库的层级 290
14.4 DAQ库概况 290
14.4.2 DAQ库中的规范 292
14.4.3 DAQ例子和模板 298
第15章 模拟DAQ 300
15.1 模拟输入 300
15.1.1 配置、启动和停止 300
15.1.2 低速采集 302
15.1.3 中速采集和处理 306
15.1.4 高速磁盘流 309
15.1.5 特殊采样 311
15.2 模拟输出 321
15.2.1 设置和停止 321
15.2.2 简单更新 322
15.2.3 波形生成 323
15.2.4 同步模拟输入和输出 327
15.3 参考文献 328
第16章 数字数据采集 329
16.1 数据I/O 329
16.1.1 简单的位I/O 329
16.1.2 支持信息交换的数字I/O 331
16.2 计数器与计时器 334
16.2.1 Am9513系统定时控件的说明 335
16.2.2 事件计数器 336
16.2.3 间隔时间、持续时间和周期计时器 338
16.2.4 脉冲产生 341
16.2.5 频率计数 342
第17章 编写数据采集程序 344
17.1 数据分析与储存 345
17.1.1 运行后分析 346
17.1.2 实时分析与显示 356
17.2 取样与吞吐量 363
17.2.1 信号带宽 364
17.2.2 过度抽样和数字滤波 364
17.2.3 定时技术 369
17.3 配置管理 370
17.3.1 配置内容 370
17.3.2 配置编辑器 372
17.3.3 配置编译器 382
17.3.4 保存和再调用设置 384
17.3.5 一个低速数据采集的例子 388
17.4 参考文献 391
第18章 过程控制应用程序 392
18.1 过程控制基本原理 393
18.1.1 工业标准 393
18.1.2 控制=操纵输出 398
18.1.3 过程信号 400
18.1.4 控制系统的体系结构 402
18.2 使用智能控制器 407
18.2.1 可编程逻辑控制器(PLC) 407
18.3 人机界面 415
18.2.2 其他的智能I/O子系统 415
18.3.1 显示层次 420
18.3.2 其他有趣的显示技术 424
18.3.3 处理所有前面板的项目 425
18.4 数据分配 426
18.4.1 用作服务器的输入扫描器 426
18.4.2 处理输出数据 427
18.4.3 使用网络连接 432
18.4.4 实时过程控制数据库 434
18.4.5 通过模拟得到验证 435
18.5 顺序控制 435
18.5.1 逻辑和表格互锁 436
18.5.2 状态机(state machines) 437
18.5.3 初始化问题 438
18.5.4 GrafcetVIEW 439
18.6 连续控制 440
18.7 趋势显示 446
18.7.1 实时趋势 446
18.7.2 历史趋势 449
18.7.3 统计过程控制 452
18.8 警报 453
18.8.1 使用一个警报处理器 454
18.8.2 通知操作者的技术 457
18.9 商用软件 458
18.10 参考文献 460
19.1 专用的硬件 461
第19章 物理学应用 461
19.1.1 信号调节 462
19.1.2 CAMAC 465
19.1.3 其他的I/O硬件 465
19.2 场和等离子体诊断 466
19.2.1 步进测量实验 467
19.2.2 等离子体电势实验 472
19.3 处理快速脉冲 477
19.3.1 瞬时数字化仪 477
19.3.2 数字存储示波器(DSO) 480
19.3.3 定时和触发 481
19.3.4 捕捉多个脉冲 483
19.3.5 从同步实验复现信号 486
19.4 处理巨量数集 488
19.4.2 为内存占用率优化Ⅵ 489
19.4.1 减少数据的数量 489
19.5 参考文献 495
第20章 数据可视化、成像和声音 496
20.1 成像 497
20.1.1 显示波形和笛卡儿数据 498
20.1.2 二元数据 503
20.1.3 多元数据 504
20.2 三维图形 508
20.3 图形采集和处理 511
20.3.1 成像的系统需求 512
20.3.3 IMAQ组件 514
20.3.2 使用IMAQ Vision 514
20.4 声音输入/输出 522
20.4.1 DAQ实现声音输入/输出 522
20.4.2 声音输入/输出功能 523
20.4.3 声音输入 523
20.4.4 声音输出 523
20.4.5 声音文件 525
20.5 参考文献 525
第21章 LabVIEW RT处理实时任务 526
21.1 实时不意味着快速 526
21.2 RT硬件 528
21.3 设计软件满足实时要求 530
21.3.1 检测性能 531
21.3.2 共享资源 535
21.3.3 多线程和多任务处理 536
21.3.4 组织Ⅵ以获得最佳的实时性能 538
21.3.5 前后关系转换会增加时间花费 540
21.4 时序安排(调度) 541
21.4.1 循环调度程序 541
21.4.2 静态调度程序 542
21.5 通讯 543
21.6 构建应用程序 545
21.7 参考文献 546
第22章 在虚拟机上嵌入LabVIEW for Linux 547
22.1 为什么是Linux 548
22.1.1 Linux资源 549
22.1.2 本书附带CD-ROM上的Linux 549
22.2 使用PeeWeeLinux构建嵌入式系统 550
22.3 VMware Workstation建立虚拟机 551
22.4 在Linux中建立一个新的VMware Workstation虚拟机 553
22.5 构建嵌入式Linux系统的6个步骤 556
22.5.1 虚拟硬盘驱动器分区 556
22.5.2 格式化虚拟硬盘驱动器 557
22.5.3 装入目标分区 558
22.5.4 从CD-ROM传送操作系统 558
22.5.6 启动新的嵌入式系统 559
22.6 示例嵌入式Linux的详述 559
22.5.5 安装引导装入过程 559
22.6.1 目录结构 560
22.6.2 引导过程 561
22.6.3 配置文件 562
22.6.4 通过NFS装入传送OS 565
22.7 VMware-mount工具和Linux 566
22.8 帮助性的提示 567
22.9 进行LabVIEW开发 568
22.10 转到真实的硬件 568
22.11 参考文献 568
第23章 嵌入式系统中的LabVIEW和Linux 569
23.1 为什么使用桌面操作系统构建嵌入式系统 570
23.3 平台 571
23.2 Linux能带来的帮助 571
23.4 在快速存储器里存储嵌入式系统 572
23.5 I/O硬件驱动程序 574
23.5.1 硬件驱动程序以及何处可以获得硬件驱动 575
23.5.2 把驱动程序整合到系统中 576
23.6 构建一个真实的嵌入式系统 578
23.7 成功的7个步骤 581
23.7.1 硬盘驱动器分区 582
23.7.2 格式化硬盘驱动器 583
23.7.3 装入硬盘驱动器 584
23.7.4 传送操作系统和嵌入式应用软件 584
23.7.5 为新的硬件修改安装 584
23.7.6 安装引导装入过程 589
23.7.7 启动新的嵌入式系统 590
23.8 检测和故障检修 591
23.8.1 调试器 591
23.8.2 窗口管理器 591
23.9 在嵌入式领域中使用LabVIEW 592
23.10 为自定义启动屏幕而修改Linux内核 592
23.11 参考文献 596
第24章 LabVIEW与实时Linux的接口技术 597
24.1 综述 598
24.1.1 什么是实时Linux 598
24.1.2 更多的信息来源 600
24.2 安装实时Linux 601
24.4 实时FIFO 602
24.3 在实时Linux中编程 602
24.4.1 Rtf_open和Rtf_closeⅥ 604
24.4.2 使用Rtf_get和Rtf_readⅥ读取数据 604
24.4.3 使用Rtf_put和Rtf_writeⅥ写数据 605
24.5 共享内存 605
24.5.1 Mbuff_open和Mbuff_close Ⅵ 606
24.5.2 使用Mbuff_get和Mbuff_readⅥ读数据 607
24.5.3 使用Mbuff_put和Mbuff_write写数据 608
24.6 处理结构数据 608
24.7 Lvrtl软件包 609
24.8 实时FIFO的POSIX方法 610
24.9 参考文献 613