3. 自动化测试软件平台选型
在 ADI 器件的测量自动化中,软件平台的选择往往决定了后续脚本的可维护性、仪器兼容性和数据处理效率。Python、LabVIEW、MATLAB 是三类最常被讨论的方案,它们并非简单的“谁更好”,而是各自适配不同的任务形态。理解它们的差异,比记住结论更重要。
三种平台的定位差异
Python 是通用编程语言,依靠 PyVISA、PySerial、NumPy、pandas、matplotlib 等库,可以同时完成仪器通信、数据处理和报告生成。它的优势在于生态开放、版本管理方便、与 Git 和 CI 工具天然契合,适合需要长期迭代、多人协作的测试脚本。代价是仪器控制层需要自己封装,异常处理和超时重试要显式编写。
LabVIEW 是图形化数据流编程环境,内置大量仪器驱动和 VISA 接口,前面板与程序框图分离的设计让交互式调试非常直观。它特别适合硬件工程师快速搭建带界面的测量台架,对实时采集、多通道同步和信号处理有成熟支持。局限在于代码以二进制 VI 形式存储,版本对比和代码评审困难,跨平台部署成本较高。
MATLAB 以矩阵运算和工具箱见长,Instrument Control Toolbox 提供 VISA 和 TCP/IP 接口,配合 Signal Processing、DSP System Toolbox 可以快速完成滤波器设计、频谱分析和算法验证。它适合算法研究阶段的快速原型,但商业授权成本高,部署到产线或长时间运行的测试服务时不如 Python 灵活。
开发环境搭建:以 Python 为例
考虑到本课程后续需要脚本化、可版本管理和自动生成报告,我们以 Python 为主线搭建环境。推荐使用 Python 3.10 或 3.11,避免过新版本导致部分仪器库尚未适配。安装时勾选“Add Python to PATH”,随后在命令行确认:
python --version
pip --version
接着创建独立虚拟环境,避免不同项目的库版本互相污染:
python -m venv adi_auto
adi_auto\Scripts\activate # Windows
source adi_auto/bin/activate # Linux / macOS
安装核心依赖。PyVISA 负责 VISA 层通信,pyvisa-py 提供纯 Python 后端,pyserial 用于串口仪器,numpy 与 pandas 用于数据处理,matplotlib 用于绘图:
pip install pyvisa pyvisa-py pyserial numpy pandas matplotlib
如果使用 NI-VISA 或 Keysight IO Libraries 作为后端,需要单独安装厂商驱动,并在系统中确认 VISA 库路径。纯 Python 后端适合 USB-TMC 和 TCP/IP 仪器,不依赖厂商驱动,部署更轻量。
第一个仪器通信程序
下面以一台支持 SCPI 的可编程电源为例,完成“连接—识别—设置—读取—关闭”的最小闭环。假设仪器通过 USB 连接,资源地址形如 USB0::0x2A8D::0x1102::MY12345678::INSTR,实际地址需用 pyvisa.ResourceManager().list_resources() 查询。
import pyvisa
rm = pyvisa.ResourceManager('@py') # 使用纯 Python 后端
addr = 'USB0::0x2A8D::0x1102::MY12345678::INSTR'
inst = rm.open_resource(addr)
inst.timeout = 5000 # 单位 ms
print(inst.query('*IDN?')) # 读取仪器标识
inst.write('VOLT 3.3') # 设置输出电压 3.3 V
inst.write('CURR 0.5') # 设置限流 0.5 A
inst.write('OUTP ON') # 开启输出
v_set = float(inst.query('VOLT?'))
i_set = float(inst.query('CURR?'))
print(f'设定值: {v_set:.3f} V, {i_set:.3f} A')
inst.write('OUTP OFF')
inst.close()
运行后应看到类似 Keysight Technologies,N6705C,... 的标识字符串,以及设定值回读。若 *IDN? 超时,优先检查资源地址是否正确、USB 线是否支持 TMC、以及后端是否与仪器匹配。若返回乱码,通常是终止符设置问题,可尝试 inst.read_termination = '\n' 和 inst.write_termination = '\n'。
平台选型的实践判断
如果团队已有 LabVIEW 台架且需要快速增加一个带界面的测量面板,继续用 LabVIEW 更省事;如果任务核心是算法验证,MATLAB 的调试效率更高;但如果目标是构建一套可长期维护、能自动出报告、能接入 CI 的测量流程,Python 的综合成本最低。实际工程中三者常共存:MATLAB 验证算法,LabVIEW 控制台架,Python 负责批量执行与报告生成。选型的关键不是追求单一平台,而是让每个平台承担它最擅长的那一段。