2. 测试环境搭建:硬件选型与软件配置

环境搭建这事儿,说白了就是给台架测试找个靠谱的「身体」和「灵魂」。硬件是骨架,软件是神经。我见过不少项目,方案设计得天花乱坠,结果一到现场,工控机带不动采集卡,驱动死活装不上,传感器信号乱跳……嗯,咱们今天就把这些坑提前填上。

核心原则:硬件选型留 30% 余量,软件环境版本锁定,驱动验证先于业务代码。

2.1 硬件选型:工控机、采集卡、传感器

硬件选型我习惯从「被测对象」倒推。你想想看,测一个电机和测一个电池包,对采集通道的要求能一样吗?

2.1.1 工控机(IPC)

工控机是台架的大脑。我个人建议优先考虑无风扇设计,尤其是现场粉尘多、振动大的环境。风扇一堵,机器过热降频,数据采集就开始丢包。

参数项 推荐规格 说明
CPU Intel Core i5 / i7(第12代以上) 实时系统建议带 TCC 支持
内存 16 GB 起步,32 GB 更稳 采集卡 DMA 缓冲区会吃内存
存储 256 GB SSD(系统)+ 1 TB(数据) 系统盘和数据盘物理分离
接口 至少 2 个 PCIe x16 插槽 一张采集卡 + 一张运动控制卡
供电 DC 24V 输入,带浪涌保护 现场电源波动大,别省这个钱
我的经验:曾经有个项目,工控机选了低功耗赛扬,结果跑实时内核 + 4 路高速采集,CPU 直接 100% 满载,采样率掉了一半。后来换了 i7,问题全消。CPU 预算别省。

2.1.2 数据采集卡(DAQ)

采集卡是台架的耳朵。选型时重点关注三个指标:采样率、分辨率、通道数。

  • 采样率:根据信号最高频率的 5~10 倍来选。测 1 kHz 的振动信号,采样率至少 5 kS/s。
  • 分辨率:16 bit 是底线,24 bit 用于高精度测量(如应变、热电偶)。
  • 通道数:预留 20% 的备用通道。我吃过亏,项目中期加测一个温度点,发现通道全满了……

常见的采集卡品牌有 NI、研华、凌华。我个人更倾向 NI 的 PXIe 系列,驱动成熟,LabVIEW 生态好。但如果你用 Linux + Python,研华的 PCIE-1802 性价比更高。

避坑指南:我曾经买过一张杂牌采集卡,标称 16 位分辨率,实际有效位只有 12 位。后来用标准信号源一测,噪声大得离谱。所以,采购前一定要看「有效位(ENOB)」参数,别只看位数。

2.1.3 传感器

传感器是台架的眼睛。选型口诀:量程够、精度高、响应快、抗干扰。

传感器类型 典型应用 选型要点
力传感器 扭矩、推力测量 过载保护 150%,线性度 < 0.1%
位移传感器 位置、间隙测量 分辨率 < 1 μm,非接触式优先
温度传感器 热管理测试 热电偶响应快,PT100 精度高
振动传感器 模态分析、故障诊断 IEPE 接口,频率范围 0.5 Hz ~ 10 kHz
小技巧:传感器信号线尽量用屏蔽双绞线,走线远离变频器和大功率电缆。我见过一个现场,传感器读数一直跳,查了三天,最后发现信号线和动力电缆绑在一起走了 20 米。

2.2 软件环境:操作系统、驱动、测试框架

硬件到位了,软件就是让它们协同工作的指挥系统。我建议先装系统,再装驱动,最后配框架——顺序别乱。

2.2.1 操作系统选型

台架测试的操作系统,主流就两个方向:Windows 和实时 Linux。

  • Windows 10/11 IoT Enterprise:适合用 LabVIEW、NI 硬件的场景。驱动全,生态好,但实时性一般(10 ms 级)。
  • Ubuntu 22.04 + PREEMPT_RT 内核:适合 Python、C++ 开发,实时性可达 100 μs 级。开源,可控。

我个人习惯用双系统方案。工控机上装 Windows 做快速原型验证,同时用虚拟机跑 Linux 做算法开发。等算法稳定了,再部署到实时 Linux 上。

关键操作:装完系统第一件事——关闭自动更新。台架测试跑着跑着系统重启了,数据全丢,你找谁哭去?

2.2.2 驱动安装与验证

驱动是硬件和软件的桥梁。安装顺序:芯片组驱动 → 网卡驱动 → 采集卡驱动 → 传感器调理模块驱动。

以 NI 采集卡为例,安装步骤:

# 1. 安装 NI-DAQmx 驱动(Windows)
# 下载地址:ni.com/download
# 运行安装包,选择「完整安装」

# 2. 验证驱动
# 打开 NI MAX(Measurement & Automation Explorer)
# 在「设备和接口」下看到你的采集卡,状态显示「运行中」

# 3. 快速测试
# 右键采集卡 → 测试面板 → 选择 AI 通道
# 用手触摸传感器,看波形是否有变化
避坑指南:我曾经装完驱动,NI MAX 死活认不到卡。折腾半天,发现是 PCIe 插槽没插紧。所以,硬件安装后先检查物理连接,再查驱动。别一上来就重装系统。

2.2.3 测试框架搭建

测试框架我推荐 Python + PyDAQmx(NI 卡)或 python-comedi(通用卡)。配合 pytest 做测试用例管理,配合 InfluxDB 做数据存储。

一个最小可用的测试框架结构:

test_bench/
├── config/
│   └── hardware_config.yaml      # 硬件参数配置
├── drivers/
│   ├── daq_driver.py             # 采集卡驱动封装
│   └── sensor_driver.py          # 传感器驱动封装
├── tests/
│   ├── test_sensor_calibration.py # 传感器标定测试
│   └── test_data_acquisition.py   # 数据采集测试
├── data/
│   └── raw/                      # 原始数据存储
├── reports/
│   └── test_report.html          # 测试报告
└── requirements.txt              # 依赖清单

安装依赖:

pip install pydaqmx numpy pandas influxdb-client pytest
我的习惯:每个硬件模块写一个独立的驱动类,用 YAML 配置文件管理参数。这样换硬件时,只改配置文件,不动业务代码。我上一个项目,从 NI 卡换成研华卡,只花了半天。

2.3 环境验证:跑通第一个采集循环

环境搭完,必须跑一个完整的采集循环来验证。我一般写一个 10 行左右的脚本:

import PyDAQmx as daq
import numpy as np

# 创建任务
task = daq.Task()
task.CreateAIVoltageChan("Dev1/ai0", "", daq.DAQmx_Val_Cfg_Default, 
                         -10.0, 10.0, daq.DAQmx_Val_Volts, None)

# 配置采样率
task.CfgSampClkTiming("", 1000.0, daq.DAQmx_Val_Rising, 
                      daq.DAQmx_Val_FiniteSamps, 1000)

# 读取数据
data = np.zeros(1000)
task.ReadAnalogF64(1000, 10.0, daq.DAQmx_Val_GroupByChannel, 
                   data, 1000, None)

# 打印前 10 个值
print(data[:10])

task.ClearTask()

如果脚本能稳定输出数值,且数值在合理范围内,恭喜你——环境搭建成功。

验证标准:连续运行 1 小时,无丢包、无驱动崩溃、无系统卡顿。达不到这个标准,别急着写业务代码。

2.4 知识体系总览

下面这张图,把本章的核心逻辑串起来了。你可以把它贴在工位旁边,搭环境时对照着看。

测试环境搭建知识体系 测试环境搭建知识体系 目标:稳定、可靠、可复现的测试环境 硬件选型 软件配置 工控机 采集卡 传感器 操作系统 驱动安装 测试框架 环境验证:跑通采集循环 硬件留余量 → 软件锁版本 → 驱动先验证 → 框架再集成

环境搭建这件事,看起来琐碎,但每一步都影响后续测试的质量。硬件选型多花点心思,软件配置多验证几遍,后面写测试用例时你会感谢自己的。