LabVIEW 数据采集 全方位教程
目录
-
第一部分:基础理论
(图片来源网络,侵删)- 1 什么是数据采集?
- 2 DAQ 系统的核心组成部分
- 3 信号类型:模拟 vs. 数字
- 4 关键概念:采样率、分辨率、触发
- 5 NI-DAQmx:现代的驱动软件
-
第二部分:硬件准备
- 1 选择合适的 NI DAQ 设备
- 2 硬件安装与连接
- 3 使用 NI MAX 进行设备配置与测试
-
第三部分:软件入门 - 第一个 DAQ 程序
- 1 LabVIEW 项目环境简介
- 2 使用 DAQmx Assistant(助手)快速生成代码(最简单方式)
- 3 理解生成的 DAQmx VIs
-
第四部分:核心 DAQmx 编程
- 1 DAQmx 编程思想(任务与通道)
- 2 模拟输入
- 3 模拟输出
- 4 数字 I/O
- 5 计数器/定时器
- 6 DAQmx 的核心结构:配置 -> 启动 -> 读取/写入 -> 停止 -> 清除
-
第五部分:高级应用与技巧
(图片来源网络,侵删)- 1 数据记录与回放
- 2 硬件定时与软件定时的区别
- 3 事件触发
- 4 并行 DAQ 任务
- 5 错误处理
-
第六部分:学习资源与最佳实践
- 1 官方资源
- 2 推荐书籍
- 3 编程最佳实践
第一部分:基础理论
1 什么是数据采集?
数据采集是指从外部世界(传感器、变送器、开关等)获取物理信号,并将其转换为计算机可以处理的数字形式的过程,在 LabVIEW 中,这个过程被高度图形化,变得非常直观。
2 DAQ 系统的核心组成部分
一个完整的 DAQ 系统包括:
- 传感器/变送器: 将物理量(如温度、压力、光强)转换为电信号(如电压、电流)。
- 信号调理: 对原始电信号进行处理,如放大、滤波、隔离、激励等,使其符合 DAQ 设备的输入范围。
- DAQ 设备: 核心硬件,负责将模拟信号转换为数字信号,或将数字信号转换为模拟信号,常见的有 USB、PCI、PXI 等形式。
- 计算机: 运行 LabVIEW 软件,处理和显示数据。
- 软件: LabVIEW 和 NI-DAQmx 驱动,控制硬件,实现数据采集逻辑。
3 信号类型:模拟 vs. 数字
- 模拟信号: 连续变化的信号,如温度、压力,DAQ 主要关心 模拟输入 和 模拟输出。
- AI (Analog Input): 读取电压或电流信号。
- AO (Analog Output): 输出电压或电流信号。
- 数字信号: 离散的、非高即低的信号,如开关状态、传感器通断,DAQ 主要关心 数字 I/O。
- DI (Digital Input): 读取数字电平(高/低,1/0)。
- DO (Digital Output): 输出数字电平(高/低,1/0)。
- 计数器/定时器: 用于测量频率、脉冲宽度、计数事件或产生精确的时间脉冲。
4 关键概念
- 采样率: 每秒对模拟信号进行采样的次数,根据奈奎斯特定理,采样率至少是信号最高频率的 2 倍,才能准确重构信号,通常建议为 5-10 倍。
- 分辨率: ADC 能够分辨的最小电压变化,以位数表示,如 16 位,位数越高,能分辨的电压等级越多,测量越精确,一个 ±10V 范围的 16 位 DAQ,其分辨率为 20V / (2^16) ≈ 0.3mV。
- 触发: 启动或停止 DAQ 操作的事件,常见的有软件触发(立即开始)和硬件触发(当某个条件满足时开始,如达到某个电压值)。
5 NI-DAQmx:现代的驱动软件
NI-DAQmx 是 National Instruments 提供的硬件驱动和 API,它不是一个简单的驱动程序,而是一个完整的软件层,提供了强大的功能、简化的编程接口和出色的性能。所有现代的 LabVIEW DAQ 编程都应使用 NI-DAQmx。

第二部分:硬件准备
1 选择合适的 NI DAQ 设备
选择设备时需考虑:
- 通道数量: 需要同时测量多少个信号?
- 采样率: 需要多快的速度?
- 分辨率: 需要多高的精度?
- 信号类型: 是否需要 AI, AO, DI, DO 或计数器?
- 输入范围: 信号电压范围是多少?(如 ±5V, 0-10V)
- 接口类型: USB(便携)、PCIe(台式机高性能)、PXI/PCI(机架式系统)。
2 硬件安装与连接
- USB 设备: 通常即插即用,LabVIEW 和 NI MAX 会自动识别。
- PCIe/PXI 设备: 需要物理安装在计算机的扩展槽中。
- 接线: 务必仔细阅读设备手册,正确连接信号,注意使用正确的端子(如 AI+, AI-, AO+, GND)。
3 使用 NI MAX 进行设备配置与测试
NI Measurement & Automation Explorer (MAX) 是管理和配置 NI 硬件的必备工具。
- 打开 MAX。
- 在左侧的 "设备和接口" 下,你应该能看到已连接的 DAQ 设备。
- 测试设备: 右键点击你的设备 -> "测试面板"。
- 你可以手动读取 AI 通道的电压、输出 AO 电压、切换 DO 状态等。
- 这是一个验证硬件是否正常工作的黄金方法。在写代码前,请务必先用测试面板确认硬件!
第三部分:软件入门 - 第一个 DAQ 程序
1 LabVIEW 项目环境简介
- 项目浏览器: 管理所有 VI、依赖项和配置。
- VI (Virtual Instrument): LabVIEW 的程序文件,包含前面板(用户界面)和程序框图(代码)。
2 使用 DAQmx Assistant(助手)快速生成代码(最简单方式)
这是初学者最快上手的方式,无需了解底层函数。
- 在程序框图上,右键点击 -> 测量 I/O -> NI-DAQmx -> DAQmx Assistant...。
- 在弹出的窗口中:
- 输入类型: 选择 "模拟输入"。
- 测量物理量: 选择 "电压"。
- 配置通道: 点击 "添加通道",选择你的物理通道(如
ai0)。 - 定时: 选择 "采样数",输入采样数量(如 1000)。
- 触发: 可以选择 "立即"。
- 点击 "确定",LabVIEW 会自动生成一个配置 VI。
- 在生成的代码中,添加一个 "DAQmx Start Task" VI,一个 "DAQmx Read" VI(读取多个采样),一个 "DAQmx Stop Task" VI,最后是 "DAQmx Clear Task" VI。
- 运行程序,你将在前面板上看到采集到的波形数据。
3 理解生成的 DAQmx VIs
- DAQmx Create Virtual Channel (AI Voltage).vi: 创建一个虚拟通道,定义你要测量的物理通道和测量类型。
- DAQmx Timing (Sample Clock).vi: 配置采样模式(连续采样或有限采样)、采样率和采样数。
- DAQmx Start Task.vi: 启动任务,准备开始采集。
- DAQmx Read.vi: 从任务中读取数据,根据你配置的采样模式,可以选择读取 1 个采样或多个采样。
- DAQmx Stop Task.vi: 停止任务。
- DAQmx Clear Task.vi: 清除任务,释放资源。这一点非常重要,不执行会导致下次无法创建任务。
第四部分:核心 DAQmx 编程
1 DAQmx 编程思想(任务与通道)
- 任务: 一个或多个通道的集合,以及这些通道的定时、触发等属性的配置,它是 DAQmx 操作的核心单元。
- 通道: 代表一个物理输入/输出端子。
- 编程流程:
- 创建任务 和 创建通道。
- 配置定时和触发。
- 启动任务。
- 循环读取/写入数据。
- 停止任务。
- 清除任务。
2 模拟输入
示例:连续采集电压并实时显示波形
- 创建任务:
DAQmx Create Task - 创建通道:
DAQmx Create Virtual Channel->AI Voltage - 配置定时:
DAQmx Timing-> 选择 连续采样,设置采样率(如 1000 samples/sec)。 - 启动任务:
DAQmx Start Task - 循环读取:
- 使用一个
While Loop。 - 在循环内放置
DAQmx ReadVI,选择 Analog 1D DBL NChan NSamp(读取N个通道的N个双精度浮点数)。 - 设置每次读取的采样数(如 100),这决定了波形的刷新率。
- 将读取的数据数组连接到波形图表。
- 使用
Wait Until Next ms Multiple函数来控制循环速率,避免 CPU 占用过高。
- 使用一个
- 停止与清除:
- 在循环外放置
DAQmx Stop Task和DAQmx Clear Task。 - 使用一个 停止按钮 来控制 While Loop 的退出,并在其值改变时执行停止和清除操作。强烈推荐使用事件结构来处理停止按钮,以避免数据丢失。
- 在循环外放置
3 模拟输出
示例:生成一个正弦波
- 创建任务:
DAQmx Create Task - 创建通道:
DAQmx Create Virtual Channel->AO Voltage - 配置定时:
DAQmx Timing-> 选择 连续采样,设置采样率。 - 启动任务:
DAQmx Start Task - 循环写入:
- 使用一个
While Loop。 - 在循环内生成数据(如使用
Sine Pattern函数生成一个周期的正弦波数据数组)。 - 将数据数组写入
DAQmx WriteVI。 - 使用
Wait Until Next ms Multiple控制写入频率。
- 使用一个
- 停止与清除: 同 AI。
4 数字 I/O
过程与模拟 I/O 类似,只是通道创建和读写函数不同。
- 创建通道:
DAQmx Create Virtual Channel->DI Port或DO Port。 - 读取:
DAQmx Read-> 选择 Digital 1D U8 NChan NSamp。 - 写入:
DAQmx Write-> 选择写入数字线(如Line Group)。
5 计数器/定时器
用于测量频率、脉冲宽度等。
- 测量频率:
DAQmx Create Virtual Channel->CI Count Edges。 - 产生脉冲:
DAQmx Create Virtual Channel->CO Pulse Time。
第五部分:高级应用与技巧
1 数据记录与回放
使用 TDMS (Technical Data Management Streaming) 格式。
- 记录: 在 DAQmx Read 之后,使用
TDMS Open,TDMS Write,TDMS CloseVIs 将数据写入文件,TDMS 格式非常适合高速数据记录。 - 回放: 从 TDMS 文件中读取数据,然后使用
DAQmx Write将数据发送到 AO 通道,以重现原始信号。
2 硬件定时与软件定时的区别
- 硬件定时: 使用 DAQ 设备的 onboard clock 来控制采样/写入,这是最精确、最可靠的方式,可以实现高速、连续、确定性的数据流。
- 软件定时: 使用 LabVIEW 的
Wait Until Next ms Multiple或定时循环,这种方式简单,但精度较低,容易受到操作系统负载的影响,不适用于高速或高精度的应用。对于生产级应用,请务必使用硬件定时。
3 事件触发
只有当输入电压超过某个阈值时才开始采集。
- 创建 AI 通道。
- 使用
DAQmx TriggerVI 配置一个 Start Trigger,类型为Analog Edge,设置触发源和触发边沿(上升/下降)。 - 之后正常配置定时和启动任务,设备会等待触发条件满足后才开始采集。
4 并行 DAQ 任务
如果需要同时执行两个独立的 DAQ 操作(如同时读取 AI 和控制 DO),可以为每个操作创建一个独立的任务,LabVIEW 和 NI-DAQmx 内部会高效地管理这些并行任务。
5 错误处理
每个 DAQmx VI 都有一个 error out 输出端,应该将这个输出端连接到下一个 VI 的 error in 输入端,使用 Simple Error Handler.vi 可以在发生错误时弹出对话框,告诉你错误信息,这对于调试至关重要。
第六部分:学习资源与最佳实践
1 官方资源
- LabVIEW 官方示例: 打开 LabVIEW,转到 帮助 -> 查找示例...,搜索 "DAQmx",这里有大量可以直接运行的示例代码,是学习的最佳途径。
- NI 官方文档: NI 网站上搜索 "NI-DAQmx Help",这是最权威的参考资料。
- NI Developer Zone: 包含大量的教程、白皮书和社区讨论。
2 推荐书籍
- 《LabVIEW 2025 实用教程》(或其他版本)
- 《LabVIEW 高级编程与虚拟仪器工程应用》
3 编程最佳实践
- 始终使用 NI-DAQmx: 不要使用旧的 "Traditional NI-DAQ"。
- 任务管理: 每次采集前都创建新任务,结束后清除任务,不要长时间保持任务开启。
- 错误处理: 为所有 DAQ 操作添加错误处理链。
- 状态机: 对于复杂的用户界面和 DAQ 流程,使用状态机模式来管理程序逻辑。
- 合理使用缓冲区: 对于连续采集,理解输入缓冲区和输出缓冲区的概念,避免数据溢出。
- 从示例开始: 遇到问题时,先去官方示例库中寻找类似的例子,理解其实现方式。
希望这份详细的教程能为你打开 LabVIEW 数据采集的大门,实践是最好的老师,动手去连接硬件、编写代码、调试程序,你会很快掌握它的精髓!
