3. 模拟输入连续采集与波形显示

模拟输入连续采集与波形显示 学习卡片

连续采集与单点采集的本质区别

单点采集每次调用只返回一个瞬时值,采样间隔由软件循环决定,抖动大、易丢点。连续采集则由 DAQmx 在硬件定时基准下自动把样本写入板载/驱动缓冲区,LabVIEW 只需按块读取,因此能获得稳定的采样率和连续波形。本例使用 NI-DAQmx 的 DAQmx Timing 配置为 Continuous Samples,并显式设置采样率与缓冲区大小。

任务配置的关键参数

参数示例值作用与注意点
物理通道Dev1/ai0:1两通道连续采集,通道间为多路复用扫描
采样模式Continuous Samples由采样时钟驱动,任务持续运行直到停止
采样率1000 Hz每通道每秒采样点数,受板卡最高速率限制
每通道采样数100每次读取的块大小,决定波形刷新粒度
缓冲区大小1000 样本/通道过小会溢出,过大则延迟增加
输入范围-10 V ~ +10 V需与实际信号幅度匹配以充分利用分辨率

数据流与缓冲区关系

连续采集的核心是“生产者—消费者”结构:DAQmx 采样引擎是生产者,按采样时钟把数据写入缓冲区;LabVIEW 的读取循环是消费者,按块从缓冲区取走数据。若读取速度长期低于采样速度,缓冲区写满即发生溢出,DAQmx 会报错并丢失数据。因此采样率、块大小与循环处理速度必须匹配。

连续采集数据流与缓冲区关系 模拟信号源 ai0 / ai1 采样时钟 1000 Hz ADC 采样 多路复用扫描 DAQmx 缓冲区 1000 样本/通道 FIFO 循环写入 读取循环 每通道读 100 点 波形图刷新 缓冲区溢出 读取慢于采样 波形图显示

LabVIEW 程序框图实现

下面给出连续采集 VI 的核心框图逻辑。使用 DAQmx 函数选板中的 DAQmx Create Virtual Channel、DAQmx Timing、DAQmx Start Task、DAQmx Read 和 DAQmx Stop Task。读取采用 Analog 1D Wfm NChan NSamp 模式,直接输出波形数据给波形图。

【程序框图节点顺序】

1. DAQmx Create Virtual Channel.vi
   - 物理通道: "Dev1/ai0:1"
   - 通道类型: Analog Input Voltage
   - 最小值: -10.0   最大值: 10.0
   - 接线端配置: RSE(参考单端)

2. DAQmx Timing.vi
   - 采样模式: Continuous Samples
   - 采样率: 1000.0
   - 每通道采样数: 100
   - 采样时钟源: 默认板载时钟

3. DAQmx Start Task.vi

4. While 循环(停止按钮控制)
   ├─ DAQmx Read.vi
   │    - 读取类型: Analog 1D Wfm NChan NSamp
   │    - 每通道采样数: 100
   │    - 超时: 10.0 秒
   │    - 输出: 波形数组 → 波形图
   └─ 循环延时: 不额外加延时,由 Read 阻塞控制节奏

5. DAQmx Stop Task.vi
6. DAQmx Clear Task.vi
缓冲区设置建议:DAQmx 默认缓冲区大小通常为采样率的 10 倍左右。若需手动指定,可在 DAQmx Timing 之后调用 DAQmx Configure Input Buffer.vi,设置 buffer size = 1000(每通道样本数)。缓冲区过小会导致高速采样时溢出,过大则增加内存占用和停止响应延迟。

采样率与块大小的匹配验证

连续采集能否稳定运行,取决于读取循环能否在缓冲区写满之前取走数据。设采样率为 fs,每通道块大小为 N,则每块数据产生的时间为 T_block = N / fs。读取循环的单次处理时间必须小于 T_block,否则缓冲区逐渐累积直至溢出。

以本例参数计算:T_block = 100 / 1000 = 0.1 s。也就是说,While 循环每轮必须在 100 ms 内完成读取与显示。若前面板波形图刷新过慢或循环内加入了额外延时,就会触发溢出错误 -200279(尝试读取的样本已不可用)。

常见错误与排查:
  • -200279:缓冲区溢出。降低采样率、增大块大小、减少循环内处理,或增大缓冲区。
  • -200284:读取超时。检查任务是否已启动、采样时钟是否正常、通道接线是否正确。
  • 波形图只显示一小段后停止:确认 While 循环停止条件未被误触发,且 DAQmx Read 在循环内持续执行。
  • 多通道波形错位:确认读取类型为 NChan NSamp,波形数组按通道展开后分别绑定到波形图曲线。

前面板与显示配置

前面板放置一个 Waveform Graph(波形图),用于显示连续波形;放置一个 Stop 按钮控制 While 循环。波形图的 X 轴会自动根据 DAQmx 返回的 t0 和 dt 显示时间,无需手动设置。若需要观察两通道,将波形数组直接连接到波形图即可自动生成两条曲线。

运行验证步骤

  1. 确认 DAQ 设备在 MAX(Measurement & Automation Explorer)中可识别,通道 Dev1/ai0:1 存在。
  2. 给 ai0 接入一个已知直流电压(如 2.5 V),ai1 接地,运行 VI。
  3. 观察波形图:ai0 应显示约 2.5 V 的平稳直线,ai1 应显示约 0 V 的直线。
  4. 将采样率改为 10000 Hz、块大小改为 1000,观察波形刷新是否仍然流畅,确认无溢出错误。
  5. 点击 Stop 按钮,确认任务停止且无报错,资源被正确释放。