《LABVIEW宝典 第2版》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:陈树学,刘萱编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2017
  • ISBN:9787121325434
  • 页数:676 页
图书介绍:《LabVIEW宝典(第2版)》详尽讲解了LabVIEW常用的编程方法、编程技巧和工程应用技术。全书共分为3篇,其中:入门篇归纳总结了labview编程人员必须掌握的基础知识,包括labview的基本概念、基本函数的用法和常用的运行结构,以及labview的基本数据结构和文件存储方式;高级篇细致地讲解了引用、属性、方法以及各类高级控件的运用,labview的文本方式编程以及dll、c语言接口,基于matlab语法的mathscript编程技术,labview基于组件的高级编程方法和编程模式;工程应用篇介绍了串口、并口和网络通信的常用方法,数据采集的基本原理和方法,labview实时系统的构建和编程,以及各种常用专业工具包的使用方法,包括数据库连接工具包、数据监控与记录工具包、报表生成工具包、状态图工具包等等。

第1部分 入门篇 2

第1章 打开LabVIEW编程之门 2

1.1 从VI开始 2

1.1.1 创建VI 3

1.1.2 控件属性设置与快捷菜单 6

1.1.3 创建控件、常量、局部变量、引用、属性节点和方法节点 8

1.1.4 创建自定义控件 10

1.2 编辑前面板和程序框图 12

1.2.1 选择、移动和删除对象 12

1.2.2 使用布局工具 13

1.3 VI及其属性对话框 17

1.3.1 VI的层次结构 17

1.3.2 调用子VI 19

1.3.3 VI的属性设置 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 表达式节点与公式快速VI 67

2.4 小结 68

第3章 LabVIEW的程序运行结构 69

3.1 两种不同的循环结构 69

3.1.1 For循环的组成和特点 69

3.1.2 For循环与数组 71

3.1.3 For循环与移位寄存器 73

3.1.4 For循环中的continue和break 74

3.1.5 While循环,不仅仅是循环 75

3.1.6 While循环与定时 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.2 U8类型数据与字符串之间的相互转换 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.3 LabVIEW使用的编码 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.7 OpenG中有关类型描述符的函数 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.3 VI使用的内存 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.7 INI文件的读写 157

5.2.8 XML文件的读写 159

5.2.9 注册表的读写 160

5.2.10 TDM文件 162

5.2.11 TDMS文件 164

5.3 小结 167

第2部分 高级篇 169

第6章 LabVIEW对象的解析 169

6.1 LabVIEW控件对象的层次继承结构 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.3 LabVIEW的坐标映射 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.6 VI的属性 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 动态调用VI 197

6.8.1 静态调用和动态调用的比较 197

6.8.2 通过“引用节点调用”函数动态调用VI 197

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.7 XY图 240

7.7.1 XY图的输入数据类型 241

7.7.2 XY图的高级应用 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.1 DLL与API函数 257

8.2.2 如何调用DLL函数 259

8.2.3 常用API函数的调用 265

8.2.4 LabVIEW调用DLL的局限性 267

8.3 CIN 270

8.3.1 CIN创建的一般过程 271

8.3.2 CIN的数据类型和常用函数 273

8.3.3 CIN与内存管理器 277

8.3.4 CIN的运行过程和数据共享 280

8.4 系统命令 283

8.5 剪贴板 284

8.6 DDE库 285

8.6.1 DDE概述 286

8.6.2 LabVIEW中DDE的常用方法 286

8.7 ActiveX控件与ActiveX文档 288

8.7.1 ActiveX的基本概念 288

8.7.2 ActiveX控件的调用过程 289

8.7.3 ActiveX应用实例 289

8.7.4 ActiveX自动化服务器 291

8.8 .NET技术 292

8.8.1 .NET控件 292

8.8.2 .NET服务 293

8.8.3 利用.NET创建托盘程序 295

8.9 小结 298

第9章 MathScript 299

9.1 如何使用MathScript 299

9.1.1 使用MathScript节点 299

9.1.2 使用MathScript交互窗口 300

9.2 MathScript常用命令 301

9.3 MathScript基础知识 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.1 For循环和While循环 312

9.4.2 If条件结构和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.2 LV2型全局变量 335

10.1.3 值变化与上升、下降沿 337

10.1.4 定时触发与计数器 339

10.2 动作机(Action Engine) 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与“取消设置忙碌状态”VI 390

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 多个子面板插入相同VI 397

11.4.13 判断VI是否插入子面板 398

11.4.14 子面板的属性 398

11.5 XControl 398

11.5.1 Hover按钮 399

11.5.2 新建XControl 399

11.5.3 修改数据控件和状态控件 400

11.5.4 “外观”VI 400

11.5.5 创建属性和方法 403

11.5.6 调试XContol 404

11.5.7 自定义属性对话框与快捷菜单 405

11.6 错误处理 405

11.6.1 错误簇 406

11.6.2 常用错误处理函数 406

11.7 LabVIEW的编程风格 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部分 工程应用篇 416

第12章 LabVIEW设计模式与状态图工具 416

12.1 程序的基本单元VI 416

12.1.1 VI的可重入属性 416

12.1.2 不可重入VI 416

12.1.3 可重入VI 417

12.2 VI模板与代码重用 418

12.2.1 内置的VI模板 418

12.2.2 用户自定义模板 418

12.3 VI的调试 419

12.3.1 连续运行VI 419

12.3.2 高亮执行与单步调试 420

12.3.3 单步运行 420

12.3.4 探针 421

12.3.5 自定义探针 421

12.3.6 断点 422

12.4 VI的重构 422

12.4.1 无用编程举例 422

12.4.2 查找框图中重复的功能 423

12.4.3 创建VI代替重复的功能 424

12.4.4 创建多态VI处理相似的功能 424

12.5 LabVIEW标准设计模式 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.4 AMC队列消息处理器 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 有限状态机+LVOOP 439

12.9 状态机工具(State diagram) 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.11 JKI事件驱动队列消息状态机 446

12.11.1 JKI状态机模板 447

12.11.2 JKI状态机的初始化 448

12.11.3 JKI状态机的预定义事件 448

12.11.4 JKI状态机的退出 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.14 Delacor队列消息处理器 456

12.14.1 DQMH项目模板的基本构成 456

12.14.2 DQMH模块的基本构成与对外接口 457

12.14.3 DQMH模块测试器 459

12.14.4 DQMH模块 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 闪屏引导VI 471

12.16.2 操作者框架根操作者 472

12.16.3 Alpha嵌套操作者 473

12.16.4 Beta嵌套操作者 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通信与DSC 489

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.4 DataSocket 503

13.4.1 DataSocket支持的协议与URL 503

13.4.2 DataSocket服务器与服务管理器 504

13.4.3 DataSocket API 505

13.4.4 DataSocket API应用举例 506

13.4.5 DataSocket控件绑定 507

13.5 TCP与UDP网络通信 508

13.5.1 TCP通信 508

13.5.2 TCP STM库 510

13.5.3 UDP通信 510

13.6 网络流 511

13.6.1 在应用程序之间传递命令或者数据 512

13.6.2 网络流基本函数 512

13.6.3 创建网络流URL 512

13.6.4 网络流应用举例 513

13.7 DSC工具包 514

13.7.1 OPC与DSC的基本概念 514

13.7.2 DSC强大的图形显示能力 516

13.7.3 OPC配置与I/O变量 517

13.7.4 Modbus 520

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.4 ADO模型 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.1 LabVIEW中的报表VI 548

14.3.2 VI说明信息与HTML报表 550

14.3.3 报表布局与高级报表VI 551

14.3.4 利用Word和Excel模板创建报表 552

14.4 利用报表工具包操作Excel 553

14.4.1 常用的简单Excel VI 553

14.4.2 单元格格式 555

14.4.3 图表与图片VI 556

14.4.4 Excel通用VI和高级VI 557

14.5 利用报表工具操作Word 559

14.5.1 Word简单VI 560

14.5.2 Word通用VI 560

14.5.3 Word表格与图表VI 561

14.6 小结 562

第15章 LabVIEW与实时操作系统 563

15.1 实时操作系统 563

15.1.1 实时操作系统的特点与实现 563

15.1.2 操作系统的有关名词解释 564

15.1.3 LabVIEW中的实时开发软件 565

15.1.4 LabVIEW支持的实时操作系统 566

15.1.5 LabVIEW实时平台概述 566

15.2 实时控制器软件安装及配置 568

15.2.1 配置实时系统BIOS(PXI) 568

15.2.2 MAX下安装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.2 NI采集卡的常用函数 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.1 FPGA的基本概念与CRIO的组成 642

17.1.1 FPGA的基本概念 642

17.1.2 CRIO的构成 643

17.1.3 构建FPGA项目 644

17.2 FPGA编程 645

17.2.1 FPGA基本I/O之模拟量输入/输出 645

17.2.2 FPGA基本I/O之数字量输入/输出 646

17.2.3 FPAG定时、时钟与分频 648

17.2.4 FPGA计数器应用 649

17.2.5 触发与外部时钟循环 652

17.2.6 FPGA常用函数 653

17.2.7 FPGA多线程与线程之间的数据交换 656

17.2.8 FPGA IP Core 659

17.3 FPGA与RT程序之间的数据交换 660

17.3.1 读写控件方式 660

17.3.2 中断 661

17.3.3 FIFO 662

17.3.4 扫描方式 665

17.3.5 专用C模块 668

17.3.6 FPGA程序的优化 670

17.4 Spartan-3E开发板 673

17.4.1 Spartan-3E简介 673

17.4.2 建立Spartan-3E FPGA项目 674

17.4.3 编译FPGA程序 675

17.5 小结 676