
本书以LabVIEW在测试技术领域的应用为背景,以LabVIEW2012为对象,系统地介绍了LabVIEW程序设计的基本概念、关键技术和实际应用的专门知识,包括虚拟仪器的基础理论、LabVIEW2012编程环境安装及介绍、数据操作、变量/数组/簇与波形数据、程序结构、波形显示、文件输入/输出、信号基础、测试信号处理、信号调理和数据采集、总线技术、远程测控及基于LabVIEW的测试系统实例等内容。全书理论与实践相结合,步步深入地引导读者熟悉LabVIEW编程和在测试领域的应用。
前 言 随着微电子技术和计算机技术的飞速发展,测试技术与计算机层次的结合正引起测试仪器领域里一场新的革命,一种全新的仪器结构概念导致了新一代仪器——虚拟仪器的出现。它是现代计算机技术、通信技术和测量技术相结合的产物,是传统仪器观念的一次巨大变革,是产业发展的一个重要方向。虚拟仪器在工程应用中表现出传统仪器无法比拟的优势,可以说虚拟仪器技术是现代测试技术的关键组成部分。作为测试工程领域的强有力工具,近年来,虚拟仪器软件LabVIEW得到了业界的普遍认可,并在测控应用领域得到了广泛应用。 LabVIEW是一个成熟的工程技术开发平台,同时也是一个优秀的科学技术创新平台,它不断地吸纳最新的科技成果,完善和发展自身。每个新版本的LabVIEW软件都会提供最新的功能以提高效率,它提供获取新技术的途径,并提供对现有软件问题的修补程序。LabVIEW2012提供了强大的帮助系统和丰富的实例库,绝大多数应用均可在实例库中找到范例,在此基础上稍作修改即能达到实用的目的。本书提供的实例程序具有实际参考价值,全部在LabVIEW2012环境中调试通过,读者可按照书中提供的前、后面板直接在不同LabVIEW版本上练习并编辑修改。 全书共分14章,由陆军军官学院张金教授统稿。第1章简要介绍虚拟仪器的基本概念、LabVIEW的作用及优势。第2章围绕LabVIEW2012介绍其安装、启动流程,选板、菜单栏、工具栏等编程环境,以及LabVIEW2012帮助系统和网络学习资源获取方法。第3章从LabVIEW编程的基本概念入手,介绍创建、编辑、运行、调试VI及调用子VI的方法和步骤。第4章介绍LabVIEW使用的数据及运算类型。第5章讨论局部变量、全局变量,数组、簇、波形数据的创建方法及相关函数。第6章讨论LabVIEW的程序结构,包括For循环、While循环、反馈节点、顺序/条件/事件结构、公式节点和属性节点等内容。第7章介绍LabVIEW测试数据的波形显示方法,包括实时趋势图、波形图、强度图及表、三维曲面/参数曲面/线条图。第8章介绍文件操作的流程控制及文本、二进制、数据记录、波形等不同类型文件的输入/输出操作方法。第9章从信号及其描述、测试信号的分析处理入手介绍LabVIEW中的信号来源。第10章从时域和频域角度出发讨论测试信号的处理方法,包括信号运算、滤波、相关分析、卷积运算、特征值处理、波形对齐及越限监测等信号时域处理,离散时间傅里叶变换及谱分析等信号频域处理,还介绍了如何用LabVIEW进行截断加窗及谐波分析。第11章介绍信号调理及其相关硬件选型原则,以及如何利用NI-DAQmx编写信号调理和数据采集程序。第12章介绍总线的基本概念及类型,以及如何正确选用和应用LabVIEW支持的总线。第13章介绍LabVIEW网络通信功能,包括串行通信、数据共享及Web数据发布等内容。第14章从测试系统构建角度讨论LabVIEW的实际应用,包括基于NI USRP 的多输入/多输出系统,BCU单板测试与诊断试验台,基于NI Compact RIO 的高精度研磨系统,基于声卡的测试系统等几个典型应用实例。 本书在编写过程中,参考了大量相关专业的教材和参考资料,无法一一列出,在此表示衷心的感谢。 参与本书编写的还有陆军军官学院的尹春雷、郑文达、许刚、黄国锐、韩玮、丁俊香、李鹏辉等。由于作者水平有限,特别是测试技术的理论和工程实践的飞速发展,所以纰漏、不妥之处在所难免,敬请读者批评指正,并欢迎与作者联系,JGXYZhangJin@163.com。 编著者 2014年4月
目 录 第1章 概述 1 1.1 LabVIEW概述 1 1.1.1 LabVIEW概述 1 1.1.2 LabVIEW的作用 2 1.1.3 选择LabVIEW的优势 3 1.2 G语言 4 1.3 虚拟仪器 5 第2章 LabVIEW编程环境 8 2.1 LabVIEW2012的安装 8 2.2 LabVIEW启动 11 2.3 LabVIEW选板 13 2.3.1 控件选板 13 2.3.2 函数选板 14 2.3.3 工具选板 15 2.4 LabVIEW菜单栏 15 2.5 LabVIEW工具栏 20 2.5.1 前面板工具栏 21 2.5.2 程序框图工具栏 21 2.6 项目浏览器窗口 21 2.7 LabVIEW2012简体中文版的帮助系统 23 2.7.1 使用即时帮助 23 2.7.2 使用目录和索引查找在线帮助 24 2.7.3 查找LabVIEW范例 25 2.7.4 使用网络资源 25 第3章 LabVIEW编程入门 26 3.1 基本概念 26 3.1.1 前面板 26 3.1.2 程序框图 29 3.1.3 使用数据连线 31 3.1.4 图标/连接端口 32 3.2 创建和编辑VI 32 3.2.1 创建VI 33 3.2.2 VI的编辑 36 3.3 运行和调试VI 38 3.3.1 运行VI 39 3.3.2 调试VI 39 3.4 创建和调用子VI 41 3.4.1 创建子VI 41 3.4.2 调用子VI 43 3.5 Express VI 45 3.5.1 Express VI的特点 45 3.5.2 Express VI的使用方法 45 第4章 数据操作 48 4.1 数据类型 48 4.1.1 数值型 48 4.1.2 布尔型 49 4.1.3 字符串型 51 4.1.4 枚举类型 61 4.1.5 时间类型 62 4.2 数据运算 62 4.2.1 算术运算 62 4.2.2 布尔运算 62 4.2.3 比较运算 63 第5章 变量、数组、簇与波形数据 66 5.1 局部变量 66 5.1.1 局部变量的创建 66 5.1.2 局部变量的应用举例 67 5.1.3 局部变量的特点 67 5.2 全局变量 68 5.2.1 全局变量的创建 68 5.2.2 全局变量的应用举例 68 5.2.3 全局变量的特点 70 5.3 数组 70 5.3.1 数组的创建 70 5.3.2 数组函数 71 5.3.3 多态性 76 5.4 簇 76 5.4.1 簇的创建 76 5.4.2 簇函数 78 5.5 波形数据 80 5.5.1 波形数据控件 80 5.5.2 波形数据操作函数 81 第6章 程序结构 85 6.1 For循环 85 6.1.1 For循环的建立 85 6.1.2 For循环的自动索引 86 6.1.3 移位寄存器 87 6.1.4 For循环的应用举例 89 6.2 While循环 89 6.2.1 While循环的建立 89 6.2.2 While循环的应用举例 90 6.3 反馈节点 91 6.3.1 反馈节点的建立 91 6.3.2 反馈节点的应用举例 92 6.4 顺序结构 92 6.4.1 顺序结构的创建 93 6.4.2 顺序结构的数据传递 93 6.4.3 顺序结构的应用举例 94 6.5 条件结构 95 6.5.1 条件结构的创建 95 6.5.2 条件结构的设置 95 6.5.3 条件结构的应用举例 96 6.6 事件结构 97 6.6.1 事件结构的创建 98 6.6.2 用户界面事件的分类与注册 98 6.6.3 事件结构的设置 99 6.6.4 事件结构的应用举例 100 6.7 公式节点 101 6.7.1 公式节点的创建 101 6.7.2 公式节点的应用举例 101 6.8 属性节点 102 6.8.1 属性节点的创建 102 6.8.2 属性节点的使用 102 第7章 波形显示 106 7.1 实时趋势图 106 7.1.1 波形图表 106 7.1.2 波形图表的定制 107 7.1.3 波形图表的应用举例 111 7.2 事后记录波形控件 112 7.2.1 波形图的特点 112 7.2.2 波形图的应用 113 7.3 XY波形控件(XY图与Express XY图) 115 7.4 强度图与强度图表 118 7.4.1 强度图 118 7.4.2 强度图表 120 7.5 三维图形 120 7.5.1 三维曲面图 120 7.5.2 三维参数曲面图 121 7.5.3 三维线条图 123 第8章 文件输入/输出 125 8.1 基本概念及术语 125 8.1.1 路径 125 8.1.2 引用句柄 125 8.1.3 文件I/O操作流程控制 125 8.1.4 文件I/O的出错管理 126 8.1.5 基本文件类型 126 8.2 文件操作 126 8.3 文件输入/输出 127 8.3.1 文本文件的输入/输出 127 8.3.2 二进制文件的输入/输出 130 8.3.3 电子表格格式文件的输入/输出 132 8.3.4 数据记录文件的输入/输出 133 8.3.5 波形文件的输入/输出 135 第9章 信号基础 138 9.1 信号及其描述 138 9.1.1 信号的定义与分类 138 9.1.2 信号的描述方法 140 9.1.3 随机信号描述 140 9.1.4 测试信号的分析处理 145 9.2 LabVIEW中的信号来源 146 9.2.1 信号发生器产生仿真信号 146 9.2.2 公式节点产生仿真信号 154 9.2.3 从文件读入和直接采集测试信号 155 9.3 LabVIEW中的测试信号分析处理函数库简介 156 第10章 测试信号处理 161 10.1 测试信号的时域处理 161 10.1.1 信号特征值处理及LabVIEW实现 161 10.1.2 信号运算及LabVIEW实现 166 10.1.3 滤波器及LabVIEW实现 168 10.1.4 测试信号的相关分析和卷积运算 180 10.1.5 波形对齐、越限监测和波形操作 188 10.2 测试信号的频域处理 193 10.2.1 离散时间傅里叶变换及其LabVIEW实现 193 10.2.2 测试信号谱分析及其LabVIEW实现 198 10.2.3 截断加窗及LabVIEW中的窗函数VI 211 10.2.4 谐波分析及其LabVIEW实现 213 第11章 信号调理和数据采集 217 11.1 信号调理及其硬件选型 217 11.1.1 常见的信号调理方法 218 11.1.2 信号调理硬件的选型原则 219 11.2 数据采集及其硬件选型 221 11.2.1 模数转换的基本原理 222 11.2.2 模数转换芯片的几种类型及其选用 224 11.2.3 数据采集卡的选用 228 11.3 NI-DAQmx编程 230 11.3.1 了解Measurement&Automation Explorer 230 11.3.2 DAQ助手 Express VI 232 11.3.3 NI-DAQmx仿真设备 233 11.3.4 数据采集VI 234 11.3.5 NI-DAQmx应用实例 239 第12章 总线技术 241 12.1 总线技术的基本概念及常见总线类型 241 12.1.1 总线的基本概念 241 12.1.2 总线的分类 242 12.1.3 总线的发展及常见类型 243 12.2 LabVIEW支持的总线 245 12.2.1 PCI总线 245 12.2.2 GPIB总线 246 12.2.3 PXI总线 247 12.2.4 VXI总线 249 12.3 正确选用和应用LabVIEW支持的总线 249 12.3.1 各类总线比较 249 12.3.2 应用PCI总线 251 12.3.3 应用GPIB总线 252 12.3.4 应用PXI总线 257 12.3.5 应用VXI总线 258 12.3.6 VISA 259 第13章 远程测控 263 13.1 串行通信 263 13.1.1 串行通信的基本概念 263 13.1.2 LabVIEW串口通信功能函数 264 13.1.3 LabVIEW串口通信步骤 267 13.2 利用DataSocket技术实现数据共享 268 13.2.1 DataSocket的组成 268 13.2.2 LabVIEW中的DataSocket节点 271 13.2.3 DataSocket应用实例 274 13.3 利用网络协议进行通信 277 13.3.1 TCP协议简介 277 13.3.2 LabVIEW中的TCP节点 278 13.3.3 TCP通信编程实例 283 13.4 在Web上发布程序 285 13.4.1 远程前面板概述 285 13.4.2 服务器端的Web发布配置 286 13.4.3 操作远程前面板 288 第14章 基于LabVIEW的测试系统实例 290 14.1 基于NI USRP 的2×2 MIMO 系统 290 14.1.1 概述 290 14.1.2 软、硬件配置 290 14.1.3 系统设置 291 14.1.4 系统应用 293 14.2 基于LabVIEW的BCU单板测试与诊断试验台 295 14.2.1 概述 295 14.2.2 BCU单板测试系统的设计背景和开发理念 295 14.2.3 BCU单板测试系统的整体设计 297 14.2.4 试验台设计实现 299 14.2.5 现场测试试验 305 14.2.6 结论 306 14.3 基于NI Compact RIO 的高精度研磨系统 306 14.3.1 设计原则 306 14.3.2 总体设计 307 14.3.3 软件实现 308 14.3.4 实验及结论 313 14.4 基于声卡的测试系统 314 14.4.1 声卡的基本常识 314 14.4.2 Lab VIEW中的声音输入/输出控件 314 14.4.3 基于声卡的虚拟示波器 315 14.4.4 声卡的双声道模拟输出 317 14.4.5 声音信号的采集与存储 318 14.4.6 声音信号的功率谱分析 319 参考文献 321