LabVIEW开发34980A 中FETCh? 与 READ?应用

2026-04-02
来源:

围绕 Keysight 34980A 的 FETCh? 和 READ? 两个核心 SCPI 命令,结合仪器官方手册规范,梳理其在 LabVIEW 中对应的 VI 功能设计、参数配置及实际应用逻辑,明确二者在数据读取中的核心差异,解决连续扫描时数据读取异常问题,为基于 LabVIEW 的 34980A 多通道数据采集提供标准化应用方案。

一、FETCh? VI 功能说明

1. 核心功能

VI 封装 34980A FETCh? SCPI 命令,核心作用为读取仪器易失性内存中已存储的测量数据,不触发新的测量过程,也不会启动 / 停止仪器的扫描流程,仅完成内存数据到仪器输出缓冲区的传输,供 LabVIEW 读取至计算机。

2. 关键参数与属性

  • 无输入参数,直接发送 FETCh? 命令至仪器;

  • 输出参数为仪器内存中的批量测量数据,数据格式由FORM:READing系列命令配置(可选择是否附带单位、时间戳、通道号、报警状态,未指定通道列表时独立 DMM 采集数据通道号记为 0);

  • 执行特性:VI 会等待仪器当前所有测量过程完成后才终止执行,保证读取数据的完整性。

3. 数据存储与清除规则

仪器内存至少可存储 500,000 条带时间戳的读数,内存溢出时状态寄存器置位,新读数覆盖最早存储数据;执行该 VI 读取数据后,内存数据不会被清除,可多次调用 VI 读取相同数据。

以下情况仪器会自动清除内存所有读数,VI 将读取不到历史数据:

  1. 启动新的扫描流程;

  2. 修改测量参数(CONFSENS 系列命令)或触发配置(TRIG 系列命令);

  3. 执行 * RST(出厂复位)、SYST:PRESet(仪器预设)命令,或仪器重新上电;

  4. 执行 ABORt 命令中止测量时,仅终止当前读数过程,内存数据保留,可通过该 VI 正常读取。

4. LabVIEW 实现逻辑

VI 通过 VISA 串口 / TCPIP 34980A 发送FETCh?指令,通过 VISA 读取函数获取仪器输出缓冲区数据,配合数据解析子 VI 将仪器返回的字符串数据转换为数值型数据,支持单通道 / 多通道数据的批量解析,可根据FORM:READing配置自动识别数据附加信息并分离。

二、READ? VI 功能说明

1. 核心功能

VI 封装 34980A READ? SCPI 命令,核心作用为触发仪器完成一次全新的测量过程,并实时返回本次测量结果,兼具触发测量读取数据双重功能,是实现单组数据实时采集的核心 VI

2. 关键参数与属性

  • 可选输入参数:(@<ch_list>)通道列表,指定需测量的通道,支持单通道 / 多通道配置;

  • 输出参数:本次测量的单组数据,数据格式同样受FORM:READing系列命令配置;

  • 触发特性:执行 VI 后,仪器触发系统从空闲状态切换至等待触发状态,满足触发条件后立即启动测量,测量完成后数据同时送入仪器内存和输出缓冲区,VI 直接读取输出缓冲区的本次测量数据。

3. 通道扫描规则

根据是否指定通道列表及仪器是否已定义扫描列表,执行不同的扫描逻辑:

  1. 省略<ch_list>且未定义扫描列表:命令作用于仪器内部 DMM,仅采集 DMM 默认通道数据;

  2. 省略<ch_list>且已定义扫描列表(ROUT:SCAN):对扫描列表中的所有通道执行一次完整扫描;

  3. 指定<ch_list>:无论是否定义扫描列表,均对指定通道执行临时扫描,扫描过程独立于仪器现有扫描列表。

4. 适用模块

VI 适配 34980A 的多款扩展模块,无适配模块限制时无法执行有效测量,具体适配类型:

  1. 34921A~34925A 多路复用器模块;

  2. 34950A 数字 I/O 模块(仅数字输入、计数器通道);

  3. 34952A 多功能模块(仅数字输入、累加器通道)。

5. LabVIEW 实现逻辑

VI 包含通道列表输入控件、VISA 指令发送模块、触发状态检测模块和数据解析模块;可手动输入待测量通道,自动拼接READ?(@<ch_list>)命令并发送,等待仪器触发测量完成后,读取并解析输出缓冲区的单组数据,支持与仪器触发配置(TRIG:SOURTRIG:COUNT 等)VI 联动,实现触发条件的灵活配置。

6. 与仪器配置的联动

VI 的执行效果依赖仪器前期触发和扫描配置,需配合TRIG:SOUR IMM(立即触发)、SWE:COUN 1(单次扫描)、SAMP:COUN 1(单样本采集)等命令使用,才能实现一次触发、一次测量、一组数据返回的核心需求。

三、VI 使用场合与核心特点

1. FETCh? VI 使用场合

  • 批量采集场景:仪器已完成连续扫描 / 多次测量,需一次性读取内存中存储的所有历史测量数据,如离线数据分析、多组数据趋势统计;

  • 中止测量后数据读取:执行 ABORt 命令中止仪器连续测量后,读取内存中未被清除的测量数据,避免数据丢失;

  • 多次重复读取相同数据:需对同一组测量数据进行多维度分析,无需重复触发测量,直接读取内存数据提升效率。

2. FETCh? VI 核心特点

  • 非触发式:仅读取数据,不干预仪器的测量 / 扫描状态;

  • 批量输出:一次调用返回内存中所有已存储数据,数据量由仪器内存存储量决定;

  • 数据保留:读取后内存数据不清除,可多次调用;

  • 执行阻塞:等待当前测量完成后才返回结果,保证数据完整性。

3. READ? VI 使用场合

  • 实时连续采集场景:需对指定通道进行不间断的单组数据采集,如 34980A 5001/5002 双通道电阻实时监测,要求每次仅返回一组最新数据;

  • 临时测量场景:无需定义仪器扫描列表,仅需对特定通道进行单次 / 多次临时测量;

  • 精准触发测量:需严格控制每次测量的触发时机,配合 LabVIEW 循环实现自定义频率的连续测量。

4. READ? VI 核心特点

  • 触发式:兼具触发测量和读取数据功能,一次调用完成一次完整测量流程;

  • 单组输出:一次调用仅返回本次测量的单组数据,无批量数据冗余;

  • 扫描灵活:支持临时通道扫描,独立于仪器现有扫描列表;

  • 实时性强:测量完成后立即返回数据,无内存数据缓存延迟,适配实时监测需求。

四、使用注意事项

1. FETCh? VI 使用注意事项

  1. 需提前完成仪器扫描 / 测量配置,保证仪器内存中有有效数据,否则 VI 读取不到任何数据;

  2. 连续扫描时若未及时读取数据,仪器内存会持续存储数据,溢出后新数据覆盖旧数据,需根据采集频率及时清理内存;

  3. 读取数据前需通过FORM:READing命令配置数据格式,避免附加信息干扰数值解析;

  4. 执行 * RSTSYST:PRESet 命令后,需重新启动仪器测量,否则 VI 无法读取到数据;

  5. 不可在 LabVIEW 循环中高频调用,否则会重复读取内存中相同的批量数据,造成数据冗余和处理效率降低。

2. READ? VI 使用注意事项

  1. 首次调用前需完成仪器基础配置(如测量类型 CONF:FRES、触发源 TRIG:SOUR IMM、扫描次数 SWE:COUN 1 等),否则无法触发有效测量;

  2. 通道列表输入需符合 34980A SCPI 命令格式,如(@5001,5002),避免格式错误导致仪器报错;

  3. LabVIEW While 循环中调用时,需保证循环频率与仪器测量速度匹配,避免频繁触发导致仪器响应超时;

  4. 适配指定扩展模块,非适配模块通道调用时,仪器会返回错误码,需在 VI 中增加错误检测与处理模块;

  5. 无需额外执行 FETCh? 命令,该 VI 已完成测量数据的实时读取,重复执行 FETCh? 会读取到内存中缓存的本次测量数据。

3. 通用注意事项

  1. 两款 VI 均需基于 LabVIEW VISA 工具包实现与 34980A 的通信,需提前配置 VISA 资源(串口 / TCPIP),保证仪器与计算机通信正常;

  2. 仪器扫描列表配置(ROUT:SCAN)会直接影响两款 VI 的输出结果,需根据需求提前定义,避免通道数据采集错误;

  3. 多通道采集时,需保证仪器通道配置与 VI 通道参数一致,避免数据与通道不匹配;

  4. 两款 VI 均可增加错误输出端口,实时捕获仪器的 SCPI 命令错误,便于调试和问题排查。

五、与同类功能 VI 的对比

1. MEAS? VI 的对比

MEAS? VI 同样为触发式测量 VI,与 READ? VI 核心差异为:MEAS? VI 仅完成单次测量并返回数据,不将数据存入仪器内存;而 READ? VI 测量后会将数据同时存入仪器内存和输出缓冲区,可通过 FETCh? VI 再次读取。

  • 仅需单次实时测量,无需保留数据:优先使用 MEAS? VI,减少仪器内存占用;

  • 需实时测量且保留数据供后续分析:优先使用 READ? VI,兼顾实时性和数据可追溯性。

2. DATA? VI 的对比

DATA? VI 为仪器内存数据读取 VI,与 FETCh? VI 核心差异为:DATA? VI 读取数据后会清除仪器内存中的对应数据,仅能读取一次;而 FETCh? VI 读取后内存数据保留,可多次读取。

  • 需读取数据并清理内存,避免数据溢出:优先使用 DATA? VI

  • 需多次读取相同数据进行多维度分析:优先使用 FETCh? VI

六、实际应用案例

案例 134980A 5001/5002 双通道电阻实时连续监测(READ? VI 应用)

1. 应用需求

34980A 50015002 通道进行四线制电阻实时监测,要求配置一次仪器参数,LabVIEW 循环采集,每次仅返回一组双通道数据,无批量数据冗余,实现 24 小时不间断实时监测。

2. 仪器配置 SCPI 命令(LabVIEW 初始化 VI 发送)

scpi

*RST;CONF:FRES (@5001,5002);ROUT:SCAN (@5001,5002);SWE:COUN 1;TRIG:SOUR IMM;TRIG:COUNT 1;SAMP:COUN 1;FORM:READ:ALAR 0;CHAN 0;UNIT 0;TIME 0;

3. LabVIEW 程序设计

  1. 初始化 VI:发送上述 SCPI 命令,完成仪器测量类型、扫描列表、触发方式、数据格式配置;

  2. While 循环:循环调用 READ? VI,无额外通道参数输入(仪器已定义扫描列表),VI 自动触发仪器对 5001/5002 通道执行一次扫描,返回一组双通道电阻数值;

  3. 数据处理模块:对返回的数值进行实时显示、超限报警、单组数据存储;

  4. 停止模块:循环停止时,调用 ABORt VI 发送中止命令,停止仪器触发状态。

4. 应用效果

每次循环仅返回 50015002 通道的一组电阻数据,无批量数据冗余,数据实时性高,无缓存延迟,适配工业现场实时监测需求,仪器无持续内存占用,避免数据溢出问题。

案例 234980A 多通道批量采集与离线分析(FETCh? VI 应用)

1. 应用需求

34980A 10 路通道进行温度批量采集,仪器连续扫描 30 分钟,采集完成后一次性读取所有测量数据,在 LabVIEW 中进行离线趋势分析和数据报表生成。

2. 仪器配置与数据采集

  1. 初始化仪器:配置测量类型为温度采集、扫描列表为 10 路通道、触发源为立即触发、扫描次数为无限循环、数据格式为带时间戳;

  2. 启动扫描:仪器后台连续扫描 30 分钟,测量数据自动存入仪器内存,带时间戳记录每次采集时间;

  3. 中止扫描:30 分钟后执行 ABORt 命令,中止仪器扫描,保留内存中所有测量数据。

3. LabVIEW 程序设计

  1. 通信初始化:配置 VISA 资源,建立与 34980A 的通信;

  2. 调用 FETCh? VI:一次性读取仪器内存中 30 分钟的所有批量测量数据,包含 10 路通道的所有采集值和对应时间戳;

  3. 数据解析模块:分离时间戳和各通道数据,转换为 LabVIEW 可识别的数值矩阵和时间序列;

  4. 数据分析模块:绘制各通道温度趋势曲线,进行超限数据统计、平均值计算等离线分析;

  5. 报表生成模块:将分析结果和原始数据生成 Excel 报表,供后续归档。

4. 应用效果

通过 FETCh? VI 一次性读取批量数据,无需在采集过程中高频调用 VI,减少计算机与仪器的通信次数,提升采集效率,同时利用仪器 500,000 条数据的存储能力,满足长时间批量采集需求,离线分析时可对完整数据进行多维度处理,保证分析结果的全面性。

案例 3FETCh? VI READ? VI 联动应用

1. 应用需求

34980A 5001 通道进行电流实时监测,同时保留每小时的批量数据供后续追溯,要求实时监测无延迟,批量数据可快速读取。

2. 实现方案

  1. 初始化仪器:配置测量类型为电流采集、触发源为立即触发、扫描次数为单次、数据格式为带通道号和时间戳;

  2. LabVIEW 小时级循环:外层循环为 1 小时一次,内层循环为实时采集循环;

  3. 内层循环:调用 READ? VI,循环采集 5001 通道电流数据,实时显示并进行超限报警,测量数据自动存入仪器内存;

  4. 外层循环:每小时执行一次 FETCh? VI,读取仪器内存中过去 1 小时的所有批量数据,存储至计算机硬盘,随后执行 DATA? VI 清除仪器内存,避免数据溢出;

  5. 停止采集:完成所有采集后,调用 ABORt 命令中止仪器触发状态。

3. 应用效果

通过 READ? VI 实现实时无延迟采集,满足现场监测需求;通过 FETCh? VI 实现小时级批量数据读取,保证数据可追溯性,同时配合 DATA? VI 清理内存,避免长时间采集导致的数据溢出,实现实时监测与批量数据存储的双重需求。


分享