4. DAQmx驱动与通道配置

NI-DAQmx 是 LabVIEW 与数据采集硬件之间的驱动层,它把“设备—物理通道—虚拟通道—任务”这几层关系封装成一套统一的 API。理解 DAQmx 的关键,不是记住某个 VI 的名字,而是弄清一条数据从传感器接线端子到 LabVIEW 波形图之间,究竟经过了哪些配置环节。本节围绕模拟输入、模拟输出、数字 I/O、计数器四类功能,梳理通道创建、量程与终端配置、采样模式、定时与触发,以及设备自检与测试面板的使用方法。

一、从物理通道到虚拟通道:DAQmx 的配置骨架

物理通道是设备上真实存在的接线点,命名形如 Dev1/ai0、Dev1/ao1、Dev1/port0/line2、Dev1/ctr0。虚拟通道则是在 MAX(Measurement & Automation Explorer)或程序中创建的、带有名称和全部配置信息的逻辑通道,例如 Dev1/ai0 被配置为“温度_AI0”,量程 0~100 ℃、热电偶类型 K、单位摄氏度。虚拟通道的价值在于:配置一次,多处复用,且配置随通道名一起传递,避免每次采集都重新设定量程和终端方式。

DAQmx 的配置骨架可以概括为“任务(Task)承载通道,通道绑定定时与触发”。一个任务至少包含一个虚拟通道,并可选地包含定时配置和触发配置。任务有“创建—配置—启动—读取/写入—停止—清除”的生命周期,若在循环中反复创建任务,会带来明显的资源开销,因此工程上通常把任务创建放在循环外,循环内只做读取或写入。

DAQmx 任务配置骨架与四类功能通道 物理通道(接线端) Dev1/ai0 … ai7 Dev1/ao0 … ao1 Dev1/port0/line0…7 Dev1/ctr0 … ctr1 接线方式:RSE / NRSE / 差分 / 伪差分 虚拟通道(配置载体) 名称:温度_AI0 物理通道:Dev1/ai0 量程:0~100 ℃ 传感器:K 型热电偶 终端配置、单位随通道保存 可被多个任务引用 任务(Task) 包含 1 个或多个虚拟通道 定时:采样时钟 / 采样模式 触发:开始 / 参考 / 暂停 读取或写入:N 采样 / 连续 生命周期:创建→配置→启动 →读/写→停止→清除 模拟输入 AI 电压 / 电流 / 热电偶 / RTD 量程 ±10 V、0~10 V 终端:RSE / NRSE / 差分 模式:有限 / 连续 / 硬件定时 触发:数字边沿 / 模拟电平 典型:1 kS/s 连续采集 模拟输出 AO 电压 / 电流输出 量程 ±10 V、0~5 V 更新模式:有限 / 连续 定时:采样时钟驱动更新 触发:开始触发同步多卡 典型:输出 10 Hz 正弦波 数字 I/O 静态 DIO / 相关 DIO 端口:port0 / port1 方向:输入 / 输出 / 双向 电平:5 V TTL / 3.3 V 握手:可编程 I/O 同步 典型:读取限位开关状态 计数器 边沿计数 / 频率 / 周期 脉冲输出 / 脉冲宽度 源:PFI 端子 / 内部时基 计数方向:加 / 减 / 外部 门控:高电平 / 低电平 典型:编码器位置测量 配置顺序建议:先定物理通道与终端 → 再建虚拟通道与量程 → 最后设采样模式、定时与触发

二、模拟输入:量程、终端与采样模式

模拟输入是数据采集系统中最常用的功能。配置时首先要确定测量类型:电压、电流、热电偶、RTD、应变等。以电压测量为例,量程选择直接影响分辨率。假设使用 16 位 ADC、量程 ±10 V,则最小可分辨电压约为 20 V / 65536 ≈ 305 μV;若信号实际只在 0~100 mV 范围内,改用 ±0.1 V 量程后,最小分辨率可提升到约 3 μV。因此量程应尽量贴近信号实际范围,但必须留出约 10%~20% 的余量,防止信号过载削顶。

终端配置决定了信号参考点。RSE(参考单端)把每个通道都接到同一个地,适合信号源有独立地且距离较近的场合;NRSE(非参考单端)把信号负端接到公共参考点而非系统地,适合信号源本身带参考地的场合;差分方式用两根线分别接正负端,共模抑制能力最强,适合小信号、长导线或强干扰环境。若把差分信号误接成 RSE,往往会引入明显的工频干扰。

采样模式分为有限采样、连续采样和硬件定时单点。有限采样适合采集固定长度的波形,例如采集 1000 个点后自动停止;连续采样适合长时间监测,需要在循环中不断读取,并注意缓冲区大小与读取速率的匹配,避免溢出。硬件定时单点则用于低速、对时间精度要求不高的场合。采样率的选择要满足奈奎斯特准则,工程上通常取信号最高频率的 5~10 倍。

三、模拟输出、数字 I/O 与计数器

模拟输出用于产生电压或电流信号,常见于激励源、控制信号和波形发生。配置时需设定输出量程、更新模式和定时方式。若输出连续波形,应使用采样时钟驱动更新,并设置合适的缓冲区;若只是输出一个直流电平,则可用单点更新。多卡同步输出时,开始触发(Start Trigger)是关键,它让多块板卡在同一时刻启动。

数字 I/O 分为静态 DIO 和相关 DIO。静态 DIO 用于读取开关、继电器状态或输出逻辑电平,配置简单,只需指定端口、线和方向。相关 DIO 则与采样时钟配合,用于高速数字图案的输入输出,例如并行数据总线。使用数字输出驱动继电器或指示灯时,要注意驱动能力,必要时加驱动电路,避免直接拉载超过板卡允许电流。

计数器功能灵活,可用于边沿计数、频率测量、周期测量、脉冲输出和编码器位置测量。以编码器为例,A 相和 B 相分别接入计数器的源端和方向端,通过计数模式设置“加/减”或“外部方向”,即可得到位置信息。计数器的门控信号可以控制计数启停,适合测量某一时间段内的脉冲数。

四、设备自检与测试面板

在正式编写程序前,应先用 MAX 完成设备自检与测试。自检(Self-Test)会检查板卡的基本通信和资源状态,若失败通常意味着驱动未安装、设备被占用或硬件故障。测试面板(Test Panel)则允许在不写代码的情况下,直接对模拟输入、模拟输出、数字线和计数器进行手动测试。例如在模拟输入测试面板中选择通道、量程和采样率,点击开始即可看到实时波形,用于验证接线是否正确、信号是否在预期范围内。

建议的配置检查顺序:① 在 MAX 中确认设备识别正常并完成自检;② 用测试面板验证物理通道接线与信号;③ 在 LabVIEW 中创建虚拟通道并保存配置;④ 建立任务,设置定时与触发;⑤ 先做有限采样验证数据正确,再切换为连续采样。
常见问题:若采集到的波形始终为 0 或满量程,优先检查终端配置是否与接线方式一致;若波形出现 50 Hz 干扰,检查是否误用 RSE 接差分信号;若连续采集报缓冲区溢出,应增大缓冲区或提高循环读取频率。

下面给出一个典型的模拟输入任务配置参数示例,可作为创建虚拟通道时的参考:

物理通道:Dev1/ai0
虚拟通道名:温度_AI0
测量类型:热电偶
热电偶类型:K
单位:摄氏度
量程:0 ~ 100 ℃
终端配置:差分
采样模式:连续采样
采样率:1 kS/s
每通道采样数:1000
触发:数字边沿触发,PFI0 上升沿