杰瑞科技汇

LabVIEW数据采集怎么入门?

LabVIEW 数据采集 全方位教程

目录

  1. 第一部分:基础理论

    LabVIEW数据采集怎么入门?-图1
    (图片来源网络,侵删)
    • 1 什么是数据采集?
    • 2 DAQ 系统的核心组成部分
    • 3 信号类型:模拟 vs. 数字
    • 4 关键概念:采样率、分辨率、触发
    • 5 NI-DAQmx:现代的驱动软件
  2. 第二部分:硬件准备

    • 1 选择合适的 NI DAQ 设备
    • 2 硬件安装与连接
    • 3 使用 NI MAX 进行设备配置与测试
  3. 第三部分:软件入门 - 第一个 DAQ 程序

    • 1 LabVIEW 项目环境简介
    • 2 使用 DAQmx Assistant(助手)快速生成代码(最简单方式)
    • 3 理解生成的 DAQmx VIs
  4. 第四部分:核心 DAQmx 编程

    • 1 DAQmx 编程思想(任务与通道)
    • 2 模拟输入
    • 3 模拟输出
    • 4 数字 I/O
    • 5 计数器/定时器
    • 6 DAQmx 的核心结构:配置 -> 启动 -> 读取/写入 -> 停止 -> 清除
  5. 第五部分:高级应用与技巧

    LabVIEW数据采集怎么入门?-图2
    (图片来源网络,侵删)
    • 1 数据记录与回放
    • 2 硬件定时与软件定时的区别
    • 3 事件触发
    • 4 并行 DAQ 任务
    • 5 错误处理
  6. 第六部分:学习资源与最佳实践

    • 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

LabVIEW数据采集怎么入门?-图3
(图片来源网络,侵删)

第二部分:硬件准备

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 硬件的必备工具。

  1. 打开 MAX。
  2. 在左侧的 "设备和接口" 下,你应该能看到已连接的 DAQ 设备。
  3. 测试设备: 右键点击你的设备 -> "测试面板"。
    • 你可以手动读取 AI 通道的电压、输出 AO 电压、切换 DO 状态等。
    • 这是一个验证硬件是否正常工作的黄金方法。在写代码前,请务必先用测试面板确认硬件!

第三部分:软件入门 - 第一个 DAQ 程序

1 LabVIEW 项目环境简介

  • 项目浏览器: 管理所有 VI、依赖项和配置。
  • VI (Virtual Instrument): LabVIEW 的程序文件,包含前面板(用户界面)和程序框图(代码)。

2 使用 DAQmx Assistant(助手)快速生成代码(最简单方式)

这是初学者最快上手的方式,无需了解底层函数。

  1. 在程序框图上,右键点击 -> 测量 I/O -> NI-DAQmx -> DAQmx Assistant...
  2. 在弹出的窗口中:
    • 输入类型: 选择 "模拟输入"。
    • 测量物理量: 选择 "电压"。
    • 配置通道: 点击 "添加通道",选择你的物理通道(如 ai0)。
    • 定时: 选择 "采样数",输入采样数量(如 1000)。
    • 触发: 可以选择 "立即"。
  3. 点击 "确定",LabVIEW 会自动生成一个配置 VI。
  4. 在生成的代码中,添加一个 "DAQmx Start Task" VI,一个 "DAQmx Read" VI(读取多个采样),一个 "DAQmx Stop Task" VI,最后是 "DAQmx Clear Task" VI。
  5. 运行程序,你将在前面板上看到采集到的波形数据。

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 操作的核心单元。
  • 通道: 代表一个物理输入/输出端子。
  • 编程流程:
    1. 创建任务创建通道
    2. 配置定时和触发
    3. 启动任务
    4. 循环读取/写入数据
    5. 停止任务
    6. 清除任务

2 模拟输入

示例:连续采集电压并实时显示波形

  1. 创建任务: DAQmx Create Task
  2. 创建通道: DAQmx Create Virtual Channel -> AI Voltage
  3. 配置定时: DAQmx Timing -> 选择 连续采样,设置采样率(如 1000 samples/sec)。
  4. 启动任务: DAQmx Start Task
  5. 循环读取:
    • 使用一个 While Loop
    • 在循环内放置 DAQmx Read VI,选择 Analog 1D DBL NChan NSamp(读取N个通道的N个双精度浮点数)。
    • 设置每次读取的采样数(如 100),这决定了波形的刷新率。
    • 将读取的数据数组连接到波形图表。
    • 使用 Wait Until Next ms Multiple 函数来控制循环速率,避免 CPU 占用过高。
  6. 停止与清除:
    • 在循环外放置 DAQmx Stop TaskDAQmx Clear Task
    • 使用一个 停止按钮 来控制 While Loop 的退出,并在其值改变时执行停止和清除操作。强烈推荐使用事件结构来处理停止按钮,以避免数据丢失

3 模拟输出

示例:生成一个正弦波

  1. 创建任务: DAQmx Create Task
  2. 创建通道: DAQmx Create Virtual Channel -> AO Voltage
  3. 配置定时: DAQmx Timing -> 选择 连续采样,设置采样率。
  4. 启动任务: DAQmx Start Task
  5. 循环写入:
    • 使用一个 While Loop
    • 在循环内生成数据(如使用 Sine Pattern 函数生成一个周期的正弦波数据数组)。
    • 将数据数组写入 DAQmx Write VI。
    • 使用 Wait Until Next ms Multiple 控制写入频率。
  6. 停止与清除: 同 AI。

4 数字 I/O

过程与模拟 I/O 类似,只是通道创建和读写函数不同。

  • 创建通道: DAQmx Create Virtual Channel -> DI PortDO 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 Close VIs 将数据写入文件,TDMS 格式非常适合高速数据记录。
  • 回放: 从 TDMS 文件中读取数据,然后使用 DAQmx Write 将数据发送到 AO 通道,以重现原始信号。

2 硬件定时与软件定时的区别

  • 硬件定时: 使用 DAQ 设备的 onboard clock 来控制采样/写入,这是最精确、最可靠的方式,可以实现高速、连续、确定性的数据流。
  • 软件定时: 使用 LabVIEW 的 Wait Until Next ms Multiple 或定时循环,这种方式简单,但精度较低,容易受到操作系统负载的影响,不适用于高速或高精度的应用。对于生产级应用,请务必使用硬件定时。

3 事件触发

只有当输入电压超过某个阈值时才开始采集。

  1. 创建 AI 通道。
  2. 使用 DAQmx Trigger VI 配置一个 Start Trigger,类型为 Analog Edge,设置触发源和触发边沿(上升/下降)。
  3. 之后正常配置定时和启动任务,设备会等待触发条件满足后才开始采集。

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 编程最佳实践

  1. 始终使用 NI-DAQmx: 不要使用旧的 "Traditional NI-DAQ"。
  2. 任务管理: 每次采集前都创建新任务,结束后清除任务,不要长时间保持任务开启。
  3. 错误处理: 为所有 DAQ 操作添加错误处理链。
  4. 状态机: 对于复杂的用户界面和 DAQ 流程,使用状态机模式来管理程序逻辑。
  5. 合理使用缓冲区: 对于连续采集,理解输入缓冲区和输出缓冲区的概念,避免数据溢出。
  6. 从示例开始: 遇到问题时,先去官方示例库中寻找类似的例子,理解其实现方式。

希望这份详细的教程能为你打开 LabVIEW 数据采集的大门,实践是最好的老师,动手去连接硬件、编写代码、调试程序,你会很快掌握它的精髓!

分享:
扫描分享到社交APP
上一篇
下一篇