内容简介
本书以LabVIEW 8.2版本为讲解对象,系统地介绍了LabVIEW程序设计的理念、关键技术和应用实例。全书从内容上共分为3部分。第1~10章简洁明了地介绍了LabVIEW程序设计所需的基础知识;第11~17章则介绍了实际应用中涉及的具体问题和应用实例;第28~32章为对现实工作和生活中的具体系统的了解和分析。 本书共有100个实例,具有涵盖面广、内容丰富、结构清晰、实用性强的特点。本书通过大量实例阐述程序设计中的重要概念和设计步骤,突出了系统完整性和实用性相结合的优点。
作者简介
严雨:嵌入式开发工程师,具有丰富的开发经验,曾就职于多家世界知名公司,从事嵌入式开发工作。对于单片机的学习,融入了作者自身多年积累的经验和技巧。
目录
目 录
第1章 LabVIEW 8.2的基本操作
1.1 【实例1】基于模板打开一个VI并运行
1.1.1 打开模板VI
1.1.2 窗口介绍
1.1.3 运行模板VI
1.2 【实例 2】基于模板创建一个VI
1.3 【实例3】编辑前面板
1.3.1 控件选板
1.3.2 工具选板
1.3.3 前面板的编辑
1.4 【实例4】调试VI
1.5 本章小结
第2章 自定义VI
2.1 【实例 5】简易数值运算
2.1.1 设计目的
2.1.2 程序框图主要功能模块介绍
2.1.3 详细设计步骤
2.2 【实例6】简单滤除信号噪声
2.2.1 设计目的
2.2.2 程序框图主要功能模块介绍
2.2.3 详细设计步骤
2.3 本章小结
第3章 数组
3.1 【实例7】创建数组控件
3.1.1 程序框图主要功能模块介绍
3.1.2 详细设计步骤
3.2 【实例 8】创建二维数组
3.3 【实例9】数组的多态性
3.3.1 程序框图主要功能模块介绍
3.3.2 详细设计步骤
3.4 【实例 10】“数组大小(Array Size)”函数
3.4.1 程序框图主要功能模块介绍
3.4.2 详细设计步骤
3.5 【实例 11】“索引数组(Index Array)”函数
3.5.1 程序框图主要功能模块介绍
3.5.2 详细设计步骤
3.6 【实例 12】“数组插入(Insert into Array)”函数
3.6.1 程序框图主要功能模块介绍
3.6.2 详细设计步骤
3.7 【实例 13】“初始化数组(Initialize Array)”函数
3.7.1 程序框图主要功能模块介绍
3.7.2 详细设计步骤
3.8 本章小结
第4章 簇
4.1 【实例 14】创建簇
4.1.1 程序框图主要功能模块介绍
4.1.2 详细设计步骤
4.2 【实例 15】“捆绑(Bundle)”函数
4.2.1 程序框图主要功能模块介绍
4.2.2 详细设计步骤
4.3 【实例 16】“解除捆绑(Unbundle)”函数
4.3.1 程序框图主要功能模块介绍
4.3.2 详细设计步骤
4.4 【实例17】“数组/簇转换(Array to Cluster /Cluster to Array)”函数
4.4.1 程序框图主要功能模块介绍
4.4.2 详细设计步骤
4.5 本章小结
第5章 字符串、变量和矩阵
5.1 【实例 18】基本字符串函数的使用
5.1.1 程序框图主要功能模块介绍
5.1.2 详细设计步骤
5.2 【实例 19】“数组/电子表格字符串转换”函数
5.2.1 程序框图主要功能模块介绍
5.2.2 详细设计步骤
5.3 【实例 20】局部变量和全局变量的使用
5.3.1 程序框图主要功能模块介绍
5.3.2 详细设计步骤
5.4 【实例 21】矩阵的基本运算
5.4.1 程序框图主要功能模块介绍
5.4.2 详细设计步骤
5.5 【实例 22】求解线性代数方程
5.5.1 程序框图主要功能模块介绍
5.5.2 详细设计步骤
5.6 本章小结
第6章 程 序 结 构
6.1 【实例23】For循环
6.1.1 程序框图主要功能模块介绍
6.1.2 详细设计步骤
6.2 【实例 24】While循环
6.2.1 程序框图主要功能模块介绍
6.2.2 详细设计步骤
6.3 【实例 25】顺序结构(Sequence Structure)
6.3.1 程序框图主要功能模块介绍
6.3.2 详细设计步骤
6.4 【实例26】事件结构(Event Structure)
6.4.1 程序框图主要功能模块介绍
6.4.2 详细设计步骤
6.5 【实例 27】使能结构(Disable Structure)
6.5.1 程序框图主要功能模块介绍
6.5.2 详细设计步骤
6.6 【实例 28】选择结构(Case Structure)
6.6.1 程序框图主要功能模块介绍
6.6.2 详细设计步骤
6.7 【实例 29】公式节点
6.7.1 程序框图主要功能模块介绍
6.7.2 详细设计步骤
6.8 【实例 30】移位寄存器
6.8.1 程序框图主要功能模块介绍
6.8.2 详细设计步骤
6.9 本章小结
第7章 图形化数据显示
7.1 【实例 31】波形图表(Graph)
7.1.1 程序框图主要功能模块介绍
7.1.2 详细设计步骤
7.2 【实例 32】波形图(Waveform)
7.2.1 程序框图主要功能模块介绍
7.2.2 详细设计步骤
7.3 【实例 33】定制波形图表
7.3.1 程序框图主要功能模块介绍
7.3.2 详细设计步骤
7.4 【实例 34】定制波形图
7.4.1 程序框图主要功能模块介绍
7.4.2 详细设计步骤
7.5 【实例 35】XY曲线图
7.5.1 程序框图主要功能模块介绍
7.5.2 详细设计步骤
7.6 【实例 36】强度图(Intensity Graph)
7.6.1 程序框图主要功能模块介绍
7.6.2 详细设计步骤
7.7 【实例 37】三维曲面图
7.7.1 程序框图主要功能模块介绍
7.7.2 详细设计步骤
7.8 本章小结
第8章 人机界面交互设计
8.1 【实例 38】创建登录对话框
8.1.1 设计目的
8.1.2 程序框图主要功能模块介绍
8.1.3 详细设计步骤
8.2 【实例 39】创建主菜单
8.2.1 设计目的
8.2.2 程序框图主要功能模块介绍
8.2.3 详细设计步骤
8.3 【实例 40】自定义控件
8.3.1 设计目的
8.3.2 程序框图主要功能模块介绍
8.3.3 详细设计步骤
8.4 【实例 41】修饰静态界面
8.4.1 设计目的
8.4.2 程序框图主要功能模块介绍
8.4.3 详细设计步骤
8.5 【实例 42】动态交互界面
8.5.1 设计目的
8.5.2 程序框图主要功能模块介绍
8.5.3 详细设计步骤
8.6 本章小结
第9章 文件I/O
9.1 【实例 43】向文件中写入数据
9.1.1 设计目的
9.1.2 程序框图主要功能模块介绍
9.1.3 详细设计步骤
9.2 【实例 44】从文件中读取数据
9.2.1 设计目的
9.2.2 程序框图主要功能模块介绍
9.2.3 详细设计步骤
9.3 【实例 45】写入二进制文件
9.3.1 设计目的
9.3.2 程序框图主要功能模块介绍
9.3.3 详细设计步骤
9.4 【实例 46】写入表单文件
9.4.1 设计目的
9.4.2 程序框图主要功能模块介绍
9.4.3 详细设计步骤
9.5 【实例 47】读取电子表格文件
9.5.1 设计目的
9.5.2 程序框图主要功能模块介绍
9.5.3 详细设计步骤
9.6 【实例 48】向文件中写入波形数据
9.6.1 设计目的
9.6.2 程序框图主要功能模块介绍
9.6.3 详细设计步骤
9.7 本章小结
第10章 子VI与程序调试
10.1 【实例 49】创建子VI
10.1.1 设计目的
10.1.2 程序框图主要功能模块介绍
10.1.3 详细设计步骤
10.2 【实例 50】调用子VI
10.2.1 设计目的
10.2.2 程序框图主要功能模块介绍
10.2.3 详细设计步骤
10.3 本章小结
第11章 数学分析与信号处理
11.1 【实例51】求商和余数
11.1.1 设计目的
11.1.2 程序框图主要功能模块介绍
11.1.3 详细设计步骤
11.2 【实例52】数值微积分
11.2.1 设计目的
11.2.2 程序框图主要功能模块介绍
11.2.3 详细设计步骤
11.3 【实例53】曲线积分
11.3.1 设计目的
11.3.2 程序框图主要功能模块介绍
11.3.3 详细设计步骤
11.4 【实例54】求解微分方程――单摆运动
11.4.1 设计目的
11.4.2 程序框图主要功能模块介绍
11.4.3 详细设计步骤
11.5 【实例55】线性代数计算器
11.5.1 设计目的
11.5.2 程序框图主要功能模块介绍
11.5.3 详细设计步骤
11.6 【实例56】求解多项式函数零点
11.6.1 设计目的
11.6.2 程序框图主要功能模块介绍
11.6.3 详细设计步骤
11.7 【实例57】曲线拟合
11.7.1 设计目的
11.7.2 程序框图主要功能模块介绍
11.7.3 详细设计步骤
11.8 【实例58】概率与统计
11.8.1 设计目的
11.8.2 程序框图主要功能模块介绍
11.8.3 详细设计步骤
11.9 【实例59】取值最优化
11.9.1 设计目的
11.9.2 程序框图主要功能模块介绍
11.9.3 详细设计步骤
11.10 【实例60】MathScript节点实现信号分析
11.10.1 设计目的
11.10.2 程序框图主要功能模块介绍
11.10.3 详细设计步骤
11.11 【实例61】信号生成
11.11.1 设计目的
11.11.2 程序框图主要功能模块介绍
11.11.3 详细设计步骤
11.12 【实例62】计算信号归一化频率
11.12.1 设计目的
11.12.2 程序框图主要功能模块介绍
11.12.3 详细设计步骤
11.13 【实例63】测量信号幅值和电平
11.13.1 设计目的
11.13.2 程序框图主要功能模块介绍
11.13.3 详细设计步骤
11.14 【实例64】信号的瞬态特性测量
11.14.1 设计目的
11.14.2 程序框图主要功能模块介绍
11.14.3 详细设计步骤
11.15 【实例65】单边傅里叶变换
11.15.1 设计目的
11.15.2 程序框图主要功能模块介绍
11.15.3 详细设计步骤
11.16 【实例66】双边傅里叶变换
11.16.1 设计目的
11.16.2 程序框图主要功能模块介绍
11.16.3 详细设计步骤
11.17 【实例67】平滑窗
11.17.1 设计目的
11.17.2 程序框图主要功能模块介绍
11.17.3 详细设计步骤
11.18 【实例68】汉明(Hamming)窗
11.18.1 设计目的
11.18.2 程序框图主要功能模块介绍
11.18.3 详细设计步骤
11.19 【实例69】提取正弦波
11.19.1 设计目的
11.19.2 程序框图主要功能模块介绍
11.19.3 详细设计步骤
11.20 【实例70】逐点分析滤波器
11.20.1 设计目的
11.20.2 程序框图主要功能模块介绍
11.20.3 详细设计步骤
11.21 本章小结
第12章 数据采集和仪器控制
12.1 【实例71】单通道单点采样
12.1.1 设计目的
12.1.2 程序框图主要功能模块介绍
12.1.3 详细设计步骤
12.2 【实例72】采集波形
12.2.1 设计目的
12.2.2 程序框图主要功能模块介绍
12.2.3 详细设计步骤
12.3 【实例73】单通道单点输出
12.3.1 设计目的
12.3.2 程序框图主要功能模块介绍
12.3.3 详细设计步骤
12.4 【实例74】生成波形
12.4.1 设计目的
12.4.2 程序框图主要功能模块介绍
12.4.3 详细设计步骤
12.5 【实例75】VISA函数
12.5.1 设计目的
12.5.2 程序框图主要功能模块介绍
12.5.3 详细设计步骤
12.6 【实例76】LabVIEW 8.2与GPIB通信
12.6.1 设计目的
12.6.2 程序框图主要功能模块介绍
12.6.3 详细设计步骤
12.7 【实例77】使用NI-DAQmx VI创建任务
12.7.1 设计目的
12.7.2 详细设计步骤
12.8 【实例78】使用DAQ Assistant创建任务
12.8.1 设计目的
12.8.2 程序框图主要功能模块介绍
12.8.3 详细设计步骤
12.9 本章小结
第13章 Express VIs
13.1 【实例79】利用Express VI创建数值比较实例
13.1.1 设计目的
13.1.2 程序框图主要功能模块介绍
13.1.3 详细设计步骤
13.2 【实例80】利用Express VI实现刻度标示变换
13.2.1 设计目的
13.2.2 程序框图主要功能模块介绍
13.2.3 详细设计步骤
13.3 【实例81】利用Express VI进行信号选择
13.3.1 设计目的
13.3.2 程序框图主要功能模块介绍
13.3.3 详细设计步骤
13.4 本章小结
第14章 【实例82】获取系统当前时间
14.1 设计目的
14.2 程序框图主要功能模块介绍
14.2.1 “获取日期/时间(秒)”函数
14.2.2 “格式化日期/时间字符串”
函数
14.2.3 结果显示部分
14.3 详细设计步骤
14.3.1 前面板的设计
14.3.2 程序框图的设计
14.3.3 运行结果
14.4 本章小结
第15章 【实例83】创建右键快捷菜单
15.1 设计目的
15.2 程序框图主要功能模块介绍
15.2.1 While循环模块
15.2.2 用户界面事件响应模块
15.2.3 摄氏-华氏公式转换模块
15.2.4 摄氏-华氏转换显示模块
15.3 详细设计步骤
15.3.1 前面板的设计
15.3.2 程序框图的设计
15.3.3 运行结果
15.4 本章小结
第16章 【实例84】数字示波器
16.1 设计目的
16.2 程序框图主要功能模块介绍
16.2.1 触发器功能块
16.2.2 通道选择功能块
16.2.3 水平分度调节功能块
16.2.4 幅值分度调节功能块
16.2.5 相位分析功能块
16.2.6 功率估计功能块
16.2.7 波形显示功能块
16.3 详细设计步骤
16.3.1 前面板设计
16.3.2 触发电平(Slope)子VI的设计
16.3.3 触发器(Trigger)子VI的设计
16.3.4 通道选择(Select Channel)子VI的设计
16.3.5 功率估计子VI的设计
16.3.6 相位分析子VI的设计
16.3.7 选择功能的实现
16.3.8 水平分度调节处理功能块的设计
16.3.9 幅值分度调节处理功能块的设计
16.3.10 完整程序框图
16.3.11 运行结果
16.4 本章小结
第17章 【实例85】触发计数器
17.1 设计目的
17.2 程序框图主要功能模块介绍
17.2.1 “触发与门限”函数
17.2.2 “统计”函数
17.3 详细设计步骤
17.3.1 创建一个新的VI
17.3.2 添加仿真信号
17.3.3 添加“触发与门限”函数
17.3.4 进行统计计数
17.3.5 完整程序框图
17.3.6 运行结果
17.4 本章小结
第18章 【实例86】基本函数发生器
18.1 设计目的
18.2 程序框图主要功能模块介绍
18.2.1 基本函数发生器函数模块
18.2.2 While循环模块
18.3 详细设计步骤
18.3.1 创建一个新的VI
18.3.2 配置基本函数发生器
18.3.3 完整程序框图
18.3.4 前面板界面布局
18.3.5 运行结果
18.4 本章小结
第19章 【实例87】对高斯噪声的统计分析
19.1 设计目的
19.2 程序框图主要功能模块介绍
19.2.1 仿真信号生成模块
19.2.2 统计函数模块
19.2.3 “创建直方图”函数
19.3 详细设计步骤
19.3.1 创建一个新的VI
19.3.2 添加信号源
19.3.3 对信号进行统计分析
19.3.4 创建柱状图
19.3.5 完整程序框图
19.3.6 运行结果
19.4 本章小结
第20章 【实例88】信号的功率谱测量
20.1 设计目的
20.2 程序框图主要功能模块介绍
20.2.1 “正弦波形”函数
20.2.2 “高斯白噪声波形”函数
20.2.3 “FFT功率谱”函数
20.3 详细设计步骤
20.3.1 创建一个新的VI
20.3.2 产生添加了噪声的正弦信号
20.3.3 前面板的设计
20.3.4 功率谱测量程序框图
20.3.5 完整程序框图
20.3.6 运行结果
20.4 本章小结
第21章 【实例89】低通滤波器设计
21.1 设计目的
21.2 程序框图主要功能模块介绍
21.2.1 测试信号生成模块
21.2.2 滤波功能模块
21.2.3 频谱分析模块
21.2.4 While循环模块
21.2.5 结果显示模块
21.3 详细设计步骤
21.3.1 创建一个新的VI
21.3.2 产生信号源
21.3.3 低通滤波
21.3.4 进行频谱分析
21.3.5 完整程序框图
21.3.6 运行结果
21.4 本章小结
第22章 【实例90】火车轮状态的实时监控
22.1 设计目的
22.2 程序框图主要功能模块介绍
22.2.1 “Butterworth滤波器(逐点)”函数
22.2.2 “数组最大值与最小值(逐点)”函数
22.2.3 “布尔值转换(逐点)”函数
22.2.4 条件结构
22.3 详细设计步骤
22.3.1 创建一个新的VI
22.3.2 构建仿真数据数组
22.3.3 Butterworth滤波处理
22.3.4 峰值检测
22.3.5 完整程序框图
22.3.6 运行结果
22.4 本章小结
第23章 【实例91】温度分析仪
23.1 设计目的
23.2 程序框图主要功能模块介绍
23.2.1 数字温度计子VI模块
23.2.2 “数组最大值与最小值”函数
23.2.3 “均值”函数
23.2.4 簇捆绑函数(控件)
23.3 详细设计步骤
23.3.1 数字温度计子VI的设计
23.3.2 前面板的设计
23.3.3 温度数据采集
23.3.4 温度分析
23.3.5 完整程序框图设计
23.3.6 运行结果
23.4 本章小结
第24章 【实例92】高级谐波分析仪
24.1 设计目的
24.2 程序框图主要功能模块介绍
24.2.1 测试信号子VI
24.2.2 “谐波失真分析”函数
24.2.3 “简易错误处理器”函数
24.3 详细设计步骤
24.3.1 创建一个新的VI
24.3.2 编写测试信号子VI
24.3.3 添加“谐波失真分析”函数
24.3.4 完成前面板的设计
24.3.5 运行结果
24.4 本章小结
第25章 【实例93】电话按键声音模拟器
25.1 设计目的
25.2 程序框图主要功能模块介绍
25.2.1 “创建路径”函数
25.2.2 “播放声音文件”函数
25.2.3 “数值至十进制数字符串转换”函数
25.3 详细设计步骤
25.3.1 创建一个新的VI
25.3.2 前面板的设计
25.3.3 电话按键声音模拟和键值显示
25.3.4 完整程序框图
25.3.5 运行结果
25.4 本章小结
第26章 【实例94】回声产生器
26.1 设计目的
26.2 程序框图主要功能模块介绍
26.2.1 回声产生器功能模块
26.2.2 While循环功能模块
26.3 详细设计步骤
26.3.1 创建一个新的VI
26.3.2 回声产生模块程序设计
26.3.3 完整程序框图
26.3.4 运行结果
26.4 本章小结
第27章 【实例95】回声探测器
27.1 设计目的
27.2 程序框图主要功能模块介绍
27.2.1 回声产生子VI功能模块
27.2.2 回声探测功能模块
27.2.3 结果显示功能模块
27.2.4 While循环功能模块
27.3 详细设计步骤
27.3.1 创建回声产生子VI
27.3.2 前面板的设计
27.3.3 回声探测程序框图设计
27.3.4 完整程序框图
27.3.5 运行结果
27.4 本章小结
第28章 【实例96】信号的发生与处理综合实例
28.1 设计目的
28.2 程序框图主要功能模块介绍
28.2.1 产生原始信号子VI模块
28.2.2 窗函数滤波模块
28.2.3 FFT功率谱函数模块
28.2.4 波形最大最小值函数模块
28.2.5 活动游标控件模块
28.3 详细设计步骤
28.3.1 产生原始信号子VI
28.3.2 前面板的设计
28.3.3 产生原始信号
28.3.4 添加“FIR加窗滤波器”函数
28.3.5 添加“FFT功率谱”函数
28.3.6 添加“波形最大最小值”函数
28.3.7 游标设置
28.3.8 完整程序框图
28.3.9 运行结果
28.4 本章小结
第29章 【实例97】双通道频谱测量的滤波器设计
29.1 设计目的
29.2 程序框图主要功能模块介绍
29.2.1 测试信号生成模块
29.2.2 “双通道谱测量”VI
29.2.3 “信号掩区和边界测试”VI
29.2.4 “滤波器”VI
29.2.5 设置截止频率子VI模块
29.2.6 处理结果显示部分
29.3 详细设计步骤
29.3.1 创建截止频率设置子VI
29.3.2 前面板的设计
29.3.3 产生仿真信号
29.3.4 信号滤波
29.3.5 信号的双通道谱测量
29.3.6 检测信号
29.3.7 程序框图中数据流的传输
29.3.8 完整程序框图
29.3.9 运行结果
29.4 本章小结
第30章 【实例98】微处理器冷却装置的实时监控
30.1 设计目的
30.2 微处理器冷却装置实时监控系统的运行
30.3 程序框图主要功能介绍
30.3.1 系统的总体框架
30.3.2 初始化和整体参数设定功能块
30.3.3 输入阶段功能块
30.3.4 计算阶段功能块
30.3.5 输出阶段功能块
30.3.6 微处理器温度控制模拟子VI
30.3.7 微处理器温度记录子VI
30.3.8 定时参数时序图更新子VI
30.3.9 风扇运行状态计算子VI
30.4 微处理器冷却装置实时监控系统的设计步骤
30.4.1 前面板的设计
30.4.2 PAC-IO with Fan Status子VI的创建
30.4.3 Temp. Logger子VI的创建
30.4.4 Update Timing Diagram子VI的创建
30.4.5 Fan Computation子VI的创建
30.4.6 程序总体框架的处理
30.4.7 “定时循环”结构的输入和初始化
30.4.8 输入阶段的处理过程
30.4.9 计算阶段的处理过程
30.4.10 输出阶段的处理过程
30.4.11 添加程序注释和说明
30.5 本章小结
第31章 【实例99】脉冲及瞬态测量控件设计
31.1 设计目的
31.2 程序框图主要功能模块介绍
31.2.1 仿真波形生成
31.2.2 瞬态特性测量
31.2.3 脉冲测量
31.2.4 周期平均值和均方根
31.2.5 幅值和电平
31.2.6 波形图缩放功能
31.2.7 波形图显示功能
31.3 详细设计步骤
31.3.1 生成基本波形和噪声波形
31.3.2 仿真波形的生成和显示
31.3.3 瞬态测量程序块
31.3.4 脉冲测量程序块
31.3.5 周期平均值和均方根程序块
31.3.6 幅值和电平测量程序块
31.3.7 完整的程序框图
31.4 本章小结
第32章 【实例100】数据采集系统的设计
32.1 设计目的
32.2 数据采集系统相关介绍
32.2.1 测试过程介绍
32.2.2 测试参数分析
32.3 系统前面板的开发
32.3.1 创建新的虚拟仪器(VI)
32.3.2 系统选项卡控件
32.3.3 修饰图案
32.3.4 系统下拉列表
32.3.5 数值输入控件
32.3.6 文件路径输入控件
32.3.7 布尔控件
32.3.8 波形图表控件
32.3.9 系统单选控件
32.3.10 旋钮控件
32.3.11 温度计控件
32.3.12 仪表控件
32.3.13 多列列表框控件
32.4 程序框图设计
32.4.1 顺序结构
32.4.2 数据采集装置的参数设置
32.4.3 冷端补偿通道
32.4.4 电压信号采集模块
32.4.5 数据采集和处理模块
32.4.6 数据显示与保存模块
32.4.7 程序运行控制模块
32.5 本章小结
参考文献
前言/序言
前 言
本书全面介绍了LabVIEW 8.2(中文版)虚拟仪器开发过程中的各种编程知识与技巧;通过理论与实例结合的方式,深入浅出地介绍了其使用方法和技巧,目的在于让读者快速掌握这门功能强大的图形化编程语言。
本书第3版在第1版和第2版的基础之上,对书中实例的实际开发过程进行了适当的精简,使得实例的讲解更加贴近读者的理解过程。此外,对第1版和第2版中的部分综合实例做了适当调整,将其中原理性比较强而实际应用比较差的综合实例替换为更加实用的综合实例,以期达到开发人员实际开发参考用书的目的。
本书紧密结合开发人员的心得体会,以实用性强的100个实例细致地讲述了LabVIEW 8.2的软件操作方法、关键细节技巧和工程应用实践经验,在编写过程中力求做到语言精练、通俗易懂、内容紧凑。
本书可分为3篇——基础篇、实例应用篇和综合开发篇,具体章节内容安排如下。
1.第1章至第10章为LabVIEW的基础篇
第1章介绍了LabVIEW 8.2软件的基础操作,包括VI的创建、前面板的编辑和VI实例的调试等。第2章对VI的自定义进行了讲解。第3章至第5章分别介绍了编程过程中经常遇到的数组、簇、字符串、变量和矩阵。第6章介绍了程序结构,包括循环结构、选择结构和顺序结构等。第7章至第9章介绍了图形化数据显示、人机界面交互设计,以及文件I/O操作的具体内容。第10章则对大型系统程序编写过程中常用到的子VI的创建和调试进行了详细的介绍。
2.第11章至第27章为LabVIEW的实例应用篇
第11章介绍了数学分析和信号处理中常用到的函数和处理方法。第12章讲解了LabVIEW数据采集和仪器控制的常用方法。第13章向读者呈现了Express VI编程的快速和易用特点。第14章讲解了如何获得系统当前时间。第15章对创建右键快捷菜单进行了举例说明。第16章至第24章分别介绍了信号生成和处理过程中常用的分析方法和实现方式,包括数字示波器、触发计数器、基本函数发生器、噪声分析、功率谱测量、滤波处理和高级谐波分析等。第25章介绍了一个电话按键声音模拟器的设计技巧。第26章和第27章介绍了回声发生器和回声探测器的设计方法。
3.第28章至第32章为LabVIEW的综合开发篇
第28章介绍了一个信号的发生和处理综合实例,对信号发生和处理的函数进行了综合使用。第29章介绍了LabVIEW在双通道频谱测量的滤波器设计中的应用,体现了虚拟设计的实用性。第30章介绍了微处理器冷却装置的实时监控的实例应用和编程特点。第31章介绍了脉冲及瞬态测量控件设计,凸显了LabVIEW控件编程的实用性。第32章介绍了数据采集系统的设计实例的详细编程过程,对数据采集系统的实际开发进行了深入的介绍。
本书给读者提供了大量的实例,使读者可以触类旁通、学以致用地掌握LabVIEW的实践应用,并可帮助读者快速、深入地学习和掌握该软件的强大功能,切实提高工作效率。
本书主要由严雨、田京京、夏宁编著,参与编写的还有岂兴明、李若谷、严安国、张为平、何世兰、刘洋洋、姚宗旭、王闯、徐慧超、葛祥磊等。由于编著者水平有限,书中难免存在错误和疏漏之处,恳请广大读者批评指正!
编著者
2016年7月
LabVIEW入门与实战开发100例(第3版) 内容简介 本书是一本面向LabVIEW初学者及有一定基础的开发人员的全面指南,旨在帮助读者快速掌握LabVIEW图形化编程环境,并能够独立完成各类实际项目。本书共包含100个精心设计的实战案例,涵盖了从基础概念到高级应用的广泛主题,力求理论与实践紧密结合,让读者在动手实践中深入理解LabVIEW的核心功能和开发技巧。 第一部分:LabVIEW基础与入门 本部分将引导读者走进LabVIEW的世界,从认识其独特的图形化编程范式开始,循序渐进地掌握核心概念和基本操作。 第一章:LabVIEW初识 LabVIEW简介与应用领域: 深入解读LabVIEW作为一种强大的图形化集成开发环境(GIDE)的优势,以及其在数据采集、仪器控制、自动化测试、嵌入式系统、信号处理、图像处理、机器人控制等众多领域的广泛应用。我们将通过实际案例展示LabVIEW如何简化复杂系统的开发流程,提高开发效率。 LabVIEW开发环境概览: 详细介绍LabVIEW的各项重要窗口,包括前面板(Front Panel)、程序框图(Block Diagram)、项目资源管理器(Project Explorer)、查找窗口(Find Window)、工具面板(Tools Palette)、函数选板(Function Palette)等。重点讲解各窗口的功能和使用方法,让读者熟悉LabVIEW的整体布局。 第一个LabVIEW VI(虚拟仪器): 从零开始,引导读者创建并运行第一个简单的LabVIEW VI。我们将演示如何放置控件(Controls)和指示器(Indicators)到前面板,如何在程序框图上连接节点(Nodes)和导线(Wires)来构建程序逻辑。这个过程将直观地展示图形化编程的魅力。 LabVIEW数据类型与基本操作: 介绍LabVIEW支持的主要数据类型,如数值型(Numeric)、布尔型(Boolean)、字符串型(String)、数组(Array)、簇(Cluster)等。讲解如何在这类数据之间进行转换,以及如何在VI中进行基本的数据操作,如算术运算、逻辑运算、字符串连接等。 VI的组织与重用: 探讨如何将复杂的VI分解成更小的、可管理的子VI,以提高代码的可读性和可维护性。讲解子VI的创建、编辑、参数传递以及如何在主VI中调用子VI。 第二章:LabVIEW核心概念解析 流程控制结构: 深入讲解LabVIEW中的核心流程控制结构,包括: 顺序结构(Sequence Structure): 演示如何在多个操作之间强制执行特定的执行顺序。 条件结构(Case Structure): 讲解如何根据条件的不同执行不同的程序分支,适用于简单的条件判断。 移位寄存器(Shift Register): 解释移位寄存器在循环中传递数据的功能,是实现迭代计算和状态保持的关键。 反馈节点(Feedback Node): 介绍反馈节点在循环中实现数据回馈和状态累积的作用。 循环结构: 详细介绍LabVIEW的两种主要循环结构: While循环(While Loop): 演示如何根据一个条件来控制循环的执行,直到条件不满足时退出。 For循环(For Loop): 讲解如何根据指定的迭代次数来执行循环,适用于已知循环次数的场景。 事件结构(Event Structure): 重点介绍事件结构在用户界面交互中的重要性。解释事件的类型(如按键按下、值改变、定时器超时等)以及如何响应这些事件,实现用户友好的交互式应用程序。 簇与数组的应用: 结合实际例子,详细阐述簇和数组在组织和管理相关数据方面的强大能力。讲解如何创建、访问和操作簇和数组,例如如何将多个传感器数据打包成一个簇,或如何处理大量采集的数据点。 第三章:前面板设计与用户界面 控件与指示器的选择与配置: 介绍LabVIEW丰富的控件和指示器库,包括数值显示、图表、开关、按钮、LED灯、文本框等。讲解如何根据应用需求选择合适的控件,以及如何对其属性(如颜色、大小、可见性、格式等)进行详细配置。 图表与图形工具: 重点讲解LabVIEW强大的图表和图形工具,包括波形图(Waveform Chart)、XY图(XY Graph)、幅度和相位图(Amplitude and Phase Plot)、三维图表(3D Graph)等。演示如何实时显示采集到的数据,如何配置图表的显示模式、坐标轴、图例等,以及如何进行数据分析和可视化。 菜单栏、工具栏与快捷键: 介绍如何自定义LabVIEW的菜单栏和工具栏,以适应特定的开发流程。同时,讲解常用的快捷键,提高开发效率。 打包与部署: 讲解如何将开发的VI打包成可执行文件(Executable)或安装程序(Installer),以便在没有LabVIEW开发环境的计算机上运行。 第二部分:数据采集与仪器控制实战 本部分将深入探讨LabVIEW在数据采集和仪器控制领域的强大功能,通过一系列经典案例,让读者掌握与硬件交互的核心技术。 第四章:数据采集基础 NI DAQ硬件简介: 简要介绍NI(National Instruments)DAQ(Data Acquisition)硬件产品系列,包括PCI/PCIe、USB、EthernetDAQ等,以及它们在各种应用中的角色。 DAQmx驱动与API: 详细讲解NI-DAQmx驱动程序及其API(Application Programming Interface)。演示如何使用DAQmx函数来配置和管理DAQ设备,包括通道配置、采样率设置、触发方式选择等。 模拟量输入(AI)采集: 通过实例,讲解如何使用DAQmx实现对模拟信号的采集,如电压、电流、温度等。演示如何配置AI通道、设置采样时序、读取采集到的数据,并将其显示在波形图上。 模拟量输出(AO)控制: 讲解如何使用DAQmx生成模拟输出信号,用于控制外部设备。演示如何设置AO通道、写入输出值,以及在不同应用场景下进行模拟输出控制。 数字量输入(DI)与输出(DO): 讲解如何使用DAQmx进行数字信号的读写,例如读取开关状态、控制LED灯、驱动继电器等。演示数字量采集和输出的配置与实现。 计数器/定时器(CI/CO)功能: 介绍DAQ硬件的计数器/定时器功能,用于测量频率、脉冲宽度、生成脉冲信号等。通过实例演示如何利用这些功能实现更复杂的测量和控制。 多通道与同步采集: 讲解如何配置和实现多通道数据的同步采集,确保不同通道数据的时间一致性,这对于分析复杂系统至关重要。 第五章:仪器连接与控制 仪器通信接口: 介绍LabVIEW支持的常见仪器通信接口,包括GPIB(General-Purpose Interface Bus)、VISA(Virtual Instrument Software Architecture)、串行通信(RS-232)、以太网(Ethernet)和USB。 VISA介绍与使用: 详细讲解VISA作为统一的仪器通信抽象层。演示如何使用VISA驱动来查找、打开、配置和关闭仪器连接,以及如何读写仪器命令。 GPIB仪器控制: 通过实例,演示如何使用LabVIEW的GPIB工具包来控制GPIB接口的仪器,如示波器、函数发生器、电源等。讲解SCPI(Standard Commands for Programmable Instruments)命令集的使用。 串行通信(RS-232)控制: 讲解如何通过LabVIEW实现RS-232串行通信,控制串口设备,如GPS模块、某些传感器等。演示串口参数的配置和数据收发。 网络通信(TCP/IP, UDP)与仪器控制: 介绍如何利用TCP/IP和UDP协议进行网络通信,控制网络接口的仪器。这在分布式测量和远程控制中尤为重要。 常用仪器驱动程序: 介绍如何获取和使用特定仪器的驱动程序(Instrument Driver)。演示如何通过这些驱动程序调用仪器的高级功能,而无需手动编写低级命令。 实例:控制示波器采集波形: 一个经典的实战案例,将演示如何使用LabVIEW控制一台示波器,设置触发、通道、时间基等参数,然后采集波形并显示在LabVIEW前面板上。 实例:控制函数发生器产生信号: 另一个实例,演示如何使用LabVIEW控制函数发生器,生成不同类型(正弦、方波、三角波等)和参数(频率、幅度、占空比等)的信号。 第三部分:高级LabVIEW开发技巧与应用 本部分将进一步深入LabVIEW的开发,介绍一些高级技术和在特定领域的应用,帮助读者构建更强大、更灵活的系统。 第六章:高级数据处理与分析 一维与多维数组的高级操作: 讲解如何使用LabVIEW的数组函数对数据进行更复杂的操作,如子数组提取、数组重塑、数组转置、数组排序、数组搜索等。 滤波器设计与应用: 介绍LabVIEW中内置的各种滤波器(如低通、高通、带通、带阻滤波器),以及如何使用它们对信号进行滤波。演示如何设计和应用数字滤波器。 FFT(快速傅里叶变换)与频谱分析: 讲解FFT的原理,以及如何使用LabVIEW的FFT函数进行频谱分析。演示如何通过FFT观察信号的频率成分,识别噪声源等。 统计分析函数: 介绍LabVIEW提供的各种统计分析函数,如计算平均值、标准差、最小值、最大值、直方图等,用于数据分析和质量控制。 信号生成与处理: 演示如何使用LabVIEW生成各种类型的信号,如正弦波、方波、随机噪声等,并对这些信号进行各种处理,如叠加、调制、解调等。 自定义数学函数与工具包: 介绍如何通过LabVIEW的数学函数来构建自定义的数学算法,以及如何利用NI提供的或第三方开发的数学和信号处理工具包来扩展功能。 第七章:程序结构与效率优化 状态机(State Machine)设计: 详细讲解状态机的概念和在LabVIEW中的实现方法。通过实例演示如何使用状态机来管理复杂系统的不同工作状态,提高程序的模块化和可维护性。 生产者-消费者(Producer-Consumer)设计模式: 介绍生产者-消费者模式在多任务并发处理中的应用。演示如何使用队列(Queue)和通知(Notification)来实现高效的数据传递和任务同步。 亚VI(SubVI)与VI服务器: 深入讲解如何有效地组织和重用代码,包括创建具有不同输入输出的亚VI,以及如何使用VI服务器来实现远程调用和动态加载VI。 错误处理与报告: 介绍LabVIEW强大的错误处理机制,包括错误簇(Error Cluster)的使用、用户自定义错误处理以及如何编写健壮的错误报告机制。 性能分析与优化: 讲解如何使用LabVIEW的性能分析工具(如Profile Performance and Memory)来识别程序瓶颈,并提供优化代码执行效率的方法,如优化循环、减少不必要的内存操作等。 并行处理与多线程: 介绍LabVIEW中实现并行处理的方法,如使用条件编译、亚VI的可重入性以及NI提供的并行编程工具包,以充分利用多核处理器的性能。 第八章:特定领域应用案例 实例:PID控制器设计与仿真: 演示如何使用LabVIEW设计和仿真一个PID(Proportional-Integral-Derivative)控制器,用于温度、位置等闭环控制系统。 实例:电机控制与速度测量: 通过实际案例,展示如何使用LabVIEW采集电机编码器的脉冲信号,计算电机转速,并实现对电机速度的闭环控制。 实例:数据记录与分析系统: 构建一个通用的数据记录系统,能够采集多路传感器数据,并实时显示、保存到文件,同时提供基本的离线数据分析功能。 实例:用户界面定制与嵌入式系统交互: 演示如何创建更复杂的、具有专业界面的LabVIEW应用程序,以及如何将其与NI嵌入式硬件(如CompactRIO, sbRIO)进行交互,实现独立的嵌入式数据采集与控制系统。 实例:图像采集与基础图像处理: 介绍如何使用LabVIEW连接相机进行图像采集,并利用Vision Development Module(如果包含)或基础的图像处理函数实现一些简单的图像分析,如边缘检测、目标识别等。 实例:基于网络的服务或客户端开发: 演示如何利用LabVIEW的网络通信功能,开发简单的网络服务或客户端,实现与其他应用程序或设备的远程通信。 附录 LabVIEW快捷键列表 常用LabVIEW函数速查 常见问题解答(FAQ) 本书旨在为读者提供一个全面、系统的LabVIEW学习路径,通过100个详实、可操作的实战案例,帮助读者从零开始掌握LabVIEW的核心技术,并能够胜任各种实际工程开发任务。无论是学生、研究人员还是工程师,都能从中获益,加速您的LabVIEW开发之路。