ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

DAQ970A数据采集仪上手:从34970A迁移到模块化测试与SCPI自动化

DAQ970A数据采集仪上手:从34970A迁移到模块化测试与SCPI自动化

前阵子把实验室那台用了快十年的34970A换掉了,接手的是是德科技DAQ970A数据采集仪。如果你也是搞环境试验、产品老化、多路温度监控或者产线板卡巡检的,应该能理解我为什么一直拖到“实在不行”才换机——老机器虽然屏幕发绿、按键咯吱响,但测量稳定,SCPI命令都跑了无数遍。可当我把新机插上网线,在浏览器里打开它的内置Web页面,第一次远程看到实时扫描数据的时候,心里只剩一句话:换晚了。

这篇不是官网参数复读,我按实际使用的顺序聊:主机能干什么、模块怎么挑、数据到底怎么流、自动化怎么接、老用户换机的注意点。无论你是准备采购新设备,还是手里有34970A/34972A想升级,希望这篇能帮你少走点弯路。

1. 老机器34970A的用户,最关心DAQ970A补了哪几块短板

1.1 从荧光屏到图形化界面,操作手感完全变了

34970A的荧光显示屏用了这么多年,说好听是经典,说难听是真不直观。想配置一条扫描列表,得一层层按菜单,字符密度低,看一眼当前哪些通道开着都得凑近。DAQ970A换成了新一代显示方案,读数、通道状态、扫描配置这些关键信息能同时铺在屏幕上,菜单逻辑也更接近现代台式仪表。前面板还直接给了USB口,U盘插上就能导出数据,这对产线上不方便抱台电脑的人来说非常实用。

除了屏幕,按键布局和交互逻辑也变了。老的34970A用户刚上手会有一阵子不适应,比如以前习惯用某个组合键快速切换函数,现在不一定在同一位置。我的建议是第一次拿到机器后别急着搬上工作台,先花半小时把面板菜单完整过一遍,把扫描列表配置、触发模式、存储操作这几个高频功能的位置记熟。仪器这玩意儿,菜单结构熟悉了,效率能差出一大截。

1.2 网络能力成为标配,内置Web页面是真正的加分项

34970A那个年代,网络通信往往要额外配转换头或者仪器选件,想远程看数据还得专门搭一套程序。DAQ970A直接把LAN口和USB口做成标配,并且内置了Web服务器。插上网线、分配好IP,浏览器打开就是控制页面,远程配置扫描列表、查看实时读数、触发一次测量、把结果下载到本地,全部不用装客户端。值班人员坐在办公室,就能看到隔壁实验室正在跑的100个通道数据,这种体验对于多台设备并行运行的场景帮助很大。

这里要提醒一点:机器到货后先把网络参数固定下来,不要留给DHCP随机分配。原因很现实——自动化系统和Web页面都得按固定IP去连它,万一IP漂了,整套脚本都要改。用固定IP还有个附带好处,内网扫描仪器、批量升级固件的时候,运维的人会少很多抱怨。如果你要买带GPIB的版本,选DAQ973A,它比DAQ970A多一个GPIB接口,适合老测试系统平滑接入;其他功能基本一致。

1.3 模块兼容性,是老用户敢换机的定心丸

模块兼容是我最看重的一点。我之前在34970A上用的插卡,比如34901A、34902A、34908A、34907A,拔下来直接插到DAQ970A上就能识别、就能跑。这意味着已有的测试治具、箱体接线、通道编号逻辑基本不用改。对于批量替换老设备的生产线来说,这是最保险的事。

我见过不少项目在换仪器时,因为模块不通用,被迫把整个前端信号调理和接线重新做一遍,成本比设备本身还高。DAQ970A保留了三插槽结构,并兼容原有模块家族,等于把老用户的迁移成本压到了最低。当然,老模块的机械插拔寿命、金手指状态这些东西,迁移前还是得检查一遍,后面我会单独讲。

2. 主机硬件和测量引擎:别把DAQ970A当成单纯的采集箱

2.1 内置的6.5位万用表引擎到底能干多少活

很多第一次接触数据采集仪的人会混淆“采集箱”和“万用表”这两个概念,DAQ970A是典型的“采集+测量”二合一。它内部有一个6.5位数字万用表引擎,官方标称基础精度做到0.0015%这个级别,这不是普通的巡检仪能做到的。用它测直流电压能从100 mV量程一直覆盖到1000 V量程,测交流电压是真有效值模式,带宽足够覆盖常规低压测试。电阻测量支持2线和4线,从100 Ω一直到100 MΩ;电流测量配合电流通道做内部采样,也能直接读。频率、周期、二极管测量功能都有,基本就是一台完整的台式万用表能力。

温度测量更是重头戏。它支持J、K、T、E、R、S、N等常见热电偶,也支持2线/4线RTD和热敏电阻。对做环境试验的人来说,K型热电偶是最常用的,接上对应线就能直接读出温度值,不需要外部冷端补偿盒。我实测过它的冷端补偿稳定性,长期漂移控制得不错,多通道之间的一致性也让人放心。

2.2 两个输入端子和模块通道编号之间的关系

刚拿到DAQ970A的人常问:它到底是万用表还是采集仪?答案是兼具。后面板保留了两个表笔输入端子,你可以像普通万用表一样直接拿它测电压电阻;但更重要的是通过模块通道,把多路信号依次切换到内部DMM上去测量。插槽1、2、3对应的通道编号分别是1xx、2xx、3xx。比如你在SCPI命令里写@101,意思是选择插槽1上的通道01。

这个编号规则看似简单,实际使用中很多人栽跟头。三个槽位的模块类型不同,通道数量也不同,比如34901A在插槽1对应的是101到120号通道,34908A在插槽1对应的就是101到140号通道。写扫描列表前,一定要先确认模块的通道范围,否则很容易出现“明明接线没问题,但程序读不到数据”的情况。我的习惯是每插一块模块,就先在面板上手动扫一遍,确认所有通道都能读到有效值,再写自动化脚本。

2.3 内部存储、U盘导出和长时间无人值守

长时间温循试验是最考验数据采集仪的场景,试验箱在那边跑48小时,电脑不能一直远程挂着。DAQ970A内部有非易失性存储,可以保存配置和读数,断电不丢数据。官方标称十万读数这个量级,对我做温度巡检完全够用。实际使用中,即使电脑和仪器之间的网络断了,数据也会先存在仪器内部,网络恢复后再取回来,这个冗余设计非常实用。

前面板USB口支持U盘直接导出数据,生成的是CSV文件,Excel直接能打开。现场调试或者临时要一份数据给工艺工程师,不用开电脑,几秒钟就搞定。我经常遇到的情况是,试验跑到半夜,人在家,手机远程看一眼Web页面确认通道有没有异常,第二天早上到实验室再从U盘拿完整数据做分析,整个流程非常顺。

3. 模块选型:一张表讲清该往三个插槽里插什么

3.1 多路复用器是绝对主力,温度巡检首选34901A

绝大多数数据采集项目,核心需求都是“多路信号轮流测一遍”,所以多路复用器模块用得最多。34901A是二十通道二线复用,另加两路电流通道,内部带热电偶冷端补偿,我实验室里的温度巡检基本都是它。单个插槽20路,三个插槽全插34901A就是60路二线通道,应对常规试验足够。如果嫌60路还不够,可以上34908A单端40路模块,三个插槽插满就是120路,但要注意34908A是对地参考的单端输入,不适合浮地信号,也不像34901A那样为热电偶做了全套补偿,温度测量时建议优先34901A。

3.2 开关、矩阵和多功能模块各自解决什么问题

除了复用器,还有三类模块值得了解。34903A是20路通用开关(SPST),适合电源通断、被测件供电切换、信号切换这些简单动作。34904A和34905A是矩阵模块,一个4×8,一个双4×8,特点是可以灵活地把任意行列线互连,适合需要动态改变测试拓扑的系统。我在某个半自动测试治具上用过矩阵模块,通过SCPI切换不同连接路径,省掉了外面一大排继电器板。

34907A是很有特色的多功能模块,集成了2路模拟输出、4路数字输入、4路数字输出和1个事件计数器。你可以一边采温度,一边通过数字口控制风扇启停,或者用模拟输出给被测件一个激励信号。这种“测量和控制放在同一个仪器里”的设计,在小系统里非常实用,能少用一台独立板卡,软件上也省了同步问题。至于34906A微波开关模块,适合射频通道切换场景,普通用户基本用不上,预算有限的话可以不考虑。

3.3 常见模块对比表

模块类型通道数典型用途注意事项
34901A多路复用器20路2线+2路电流温度、电压巡检内置CJC,温度首选
34902A高速多路复用器16路2线高速扫描带宽较高,适合动态信号
34908A单端多路复用器40路对地参考单端信号浮地信号慎用
34903A通用开关20路SPST电源通断、信号切换无测量功能
34904A矩阵开关4×8交叉点灵活互连适合拓扑切换
34905A双矩阵开关双4×8更复杂互连通道数翻倍
34907A多功能模块2×DAC+4×DI+4×DO+计数器采集与控制混合模拟输出精度尚可
34906A微波开关视配置射频通道切换普通用户少用

表格看着规整,真正选型时还有两个常见误区。第一,不是通道越多越好,34908A的40路单端模块虽然通道密度高,但牺牲了浮地适应能力,很多传感器输出是相对参考地的信号,用34901A更稳妥。第二,扫描速度是整轮扫描的短板效应决定的,你可以在扫描列表里混合很多函数,但速度会被最慢的测量方式拖住。设计系统时应该先估一遍最慢通道的时间,再决定扫描周期设多少。

4. 数据流逻辑:扫描、触发、存储之间的关系

4.1 一次扫描的完整路径:配置、列表、启动、读取

我习惯用SCPI命令给新工程师演示DAQ970A的标准流程,因为它非常直观:先配置测量函数,再定义扫描列表,然后启动测量,最后读取结果。比如这样一段:

# 伪代码演示,实际用SCPI发送 inst.write('CONF:TEMP TC,K,(@101:108)') # 配置101-108通道为K型热电偶 inst.write('ROUT:SCAN (@101:108)') # 定义扫描列表 inst.write('INIT') # 启动测量 data = inst.query('FETC?') # 读取结果

配置测量函数这一步,系统会记住每通道的量程、积分时间和滤波设置。定义扫描列表则是告诉主机遇哪些通道时要按顺序测一遍。启动测量后,仪器按内部的调度逻辑,把每个通道逐一切换到内置万用表引擎上进行测量,结果存入读数缓冲。最后用FETC?把缓冲里的数据一次性读出来,这就是完整数据流。

这里最容易犯的错误是只配置了测量函数,忘记定义扫描列表,FETC?最后返回空数据。因为没有列表,仪器根本不知道要去哪里量。我调试别的同学的脚本时,至少有一半问题出在这个顺序上。写代码之前先在面板上手动走一遍流程,比什么文档都管用。

4.2 触发系统:让采集跟上你的节奏

DAQ970A的触发源可以选内部定时、外部硬触发,或者软件命令触发。做循环记录的时候,把触发源设为内部定时并设置间隔时间,仪器就会按固定节奏一遍又一遍地扫描整个列表。比如做10秒间隔的温度巡检,设好间隔后,它就能自己跑上一晚上。

外部触发是产线常用的手段。测试台在动作完成时送一个TTL电平到触发端口,仪器收到信号才采一个点。这样做的好处是测量节奏和机械动作完全同步,出来的数据天然带“动作时序”。坑在于很多人开了外部触发却没有设置超时时间,仪器一直等外部信号把整个程序卡住。我的习惯是设置一个合理的触发超时,比如10秒没有等到信号就报错,同时写日志,这样现场排查时能很快定位是机械没到位还是线路松了。

4.3 读数存储和批量导出:数据先落地,再谈分析

扫描产生的数据不会直接送到电脑,而是先落在仪器的内部缓冲里。这个机制很有用,因为电脑端一旦出现网络延迟或者程序卡顿,数据不会丢。前面板U盘导出适合现场快速要数据,远程则可以从Web页面下载,但如果要做批量自动化,还是用SCPI一条条读更靠谱。

数据量大的时候,特别注意读取策略。我遇到过FETC?返回字符串太长导致网络超时的情况,解决办法是把数据格式设为ASCII并分段读取,或者直接以二进制格式传输,Python端再解析。只要读回来的数据能落地成文件,后面想怎么分析都行。我的原则是“先存盘再看图”,试验过程中的数据永远第一时间落一份原始文件,避免程序崩溃后白跑一夜。

5. 自动化集成:BenchVue与SCPI编程的实战记录

5.1 软件驱动和连接配置

如果是临时做一份数据曲线,用是德科技的BenchVue软件可以免编程完成任务,界面拖拽式操作,适合快速验证。但真正把DAQ970A嵌进自动化测试系统,走VISA+SCPI是最靠谱的路子。先装好IO Libraries Suite,然后在Keysight Connection Expert或者NI MAX里看到设备,记住它的VISA地址,比如TCPIP0::192.168.1.88::inst0::INSTR。Python环境里用pyvisa库连接,基本上几行代码就能控制。

LAN连接比老旧的GPIB方便太多,唯一的注意事项是交换机的网络隔离。设备最好放在和测试工控机同一个独立网段里,避免公司办公网的大流量广播影响到实时采集。我不止一次见过因为跨网段通信丢包导致扫描数据一串乱码的情况,后来把仪器的网段单独隔离,问题再没出现过。

5.2 一段实际能跑的多路温度巡检代码

下面这个脚本是我实际在用的简化版,功能是每2秒扫描8通道K型热电偶温度,打印10轮数据:

import pyvisa import time rm = pyvisa.ResourceManager() inst = rm.open_resource('TCPIP0::192.168.1.88::inst0::INSTR') inst.timeout = 10000 inst.write('*RST') time.sleep(0.5) inst.write('CONF:TEMP TC,K,(@101:108)') inst.write('ROUT:SCAN (@101:108)') inst.write('TRIG:SOUR TIM') inst.write('TRIG:TIM 2') inst.write('INIT') time.sleep(5) for i in range(10): data = inst.query('FETC?') print(f"round {i+1}: {data}") time.sleep(2) inst.close()

运行前要确认仪器IP、通道接线和扫描列表。FETC?这条命令有讲究,它只返回当前缓冲里可用的读数,如果扫描还没跑完第一轮就去读,返回结果不完整。我在脚本里加了5秒初始化延时,就是为了让第一轮扫描先把数据填进缓冲。实际项目里,建议用状态寄存器的扫描完成位来轮询,而不是写死延时,可靠性会高很多。

5.3 我踩过的三个自动化坑

第一个坑是忘记查询扫描完成状态。直接FETC?偶尔能读到空数据,更稳的是先查询操作状态寄存器,判断扫描完成标志位置位后再读取。文档里叫STAT:OPER:COND?,用之前查一下对应位定义就行。

第二个坑是热电偶的冷端补偿。模块内部有CJC,但前提是接线得接对。热电偶线不能拿普通铜导线去延长,否则冷端补偿失效,误差能到好几度。我在实验室见过有的同学图省事用跳线接热电偶,读出的温度曲线整体偏了3℃还找不到原因。排查到最后才发现是延长线材料不对。

第三个坑是SCPI通道格式写错。比如(@101:108)这个写法,括号、冒号、通道编号之间的格式必须严格,少写一个冒号,或者把括号写成中文全角,直接报错。看似低级,但脚本大批量修改时最容易出现,我建议关键位置加注释和校验。

6. 从34970A迁移到DAQ970A:实际体会和换机建议

6.1 迁移前要检查的三件事

如果你和我一样是从34970A升级过来,别急着把旧机器拆走,先做三件事。第一,把旧机器里跑的配置完整导出一份,特别是各通道测量类型、量程、扫描列表。DAQ970A和老的34970A在SCPI命令上高度兼容,大部分命令照搬就能用,但个别老的仪表专属命令可能写法有差异,需要逐条替换后先跑一轮离线模拟。

第二,检查模块和箱体连接。模块金手指要清洁,卡扣有没有松动,后部接线端子有没有氧化。因为DAQ970A虽然兼容老模块,但毕竟模块也用了好几年,插拔的时候小心一点,最好在断电状态下操作。我换机时遇到过一块老模块插上去偶尔读数跳变,后来发现是金手指接触不良,清洁后恢复稳定。

第三,网络拓扑重新设计。DAQ970A的LAN通信是标配,建议把老旧GPIB控制卡慢慢淘汰掉。设置固定IP、独立网段,并把Web管理页面登录方式确认好。如果现场网络环境比较复杂,优先和IT同事确认端口和防火墙策略,免得设备装好了控制不了。

6.2 到底值不值得换:我的建议

这个问题没有标准答案,完全取决于使用场景。如果只是几十个通道手动测量,偶尔看一下曲线,旧34970A完全够用,没必要折腾。但如果你的需求里有远程监控、U盘导出、更快扫描速度、LAN自动化集成这些关键词,DAQ970A是值得的。它让老模块有了新底座,省下来的是大量的巡检工时和沟通成本。

按我个人经验来说,换机之后处理问题的速度明显变快。以前试验中想看实时数据得跑到仪器跟前,现在在办公室打开Web页面就能看到整个环境试验箱的通道趋势;以前试验结束要导数据还得现场操作U盘,现在脚本自动采集、自动归档。设备本身没有改变测量的物理规律,但它把“数据获取和流转”这件事变得顺畅多了。如果你们公司有好几台老化的34970A,我会建议分批替换到DAQ970A,逐步把控制接口统一成LAN,长期运维负担会轻很多。

最后再分享一个小技巧:每次试验前,用SCPI脚本快速做一次“全通道自检”,把每个通道短接后读一遍数值,确认全部在预期范围内再开始正式采集。这个习惯帮我提前发现了两次接线松动,也让我对每次数据的可靠性更有底气。DAQ970A是一台很扎实的仪器,但再好的仪器也需要好的使用习惯来配合。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进