一、核心判断逻辑
仪器无单一 “是否支持抖动” 查询位,依靠试探下发抖动捕获根指令 + 读取系统错误码判定固件 / 机型是否具备 LIST 步进时序抖动采集统计能力;可用指令集完整度区分支持等级。
判定基准指令
时序抖动整套子系统根指令:SOURce:LIST:TIMing 第一步试探开启捕获,通过报错区分兼容性:
scpi
*CLS
SOUR:LIST:TIM:CAPT?
SYST:ERR?
错误码判定对照表
返回 +0.No error ✅ 完整支持 LIST 步进时间抖动采集,拥有全套:捕获开关、原始抖动数据、均值 / 最大 / 最小 / 标准差统计、时序分辨率配置。 适用:N79xxA / N89xxA 固件 ≥6.02
返回 -113.Undefined header ❌ 完全不支持时序抖动子系统,无任何抖动捕获、读取、统计指令; 适用:E36100 BT 低配、老旧 N6705B、低版本 N79/N89 固件(<6.02)
返回 -222.Data out of range /-214 Trigger ignored 指令头识别存在,但无有效缓存数据(只是没运行 LIST,不是不支持功能),仍属于支持机型。
二、分层校验全套抖动子指令(精细区分功能完整度)
1. 基础捕获能力(必过门槛)
scpi
*CLS
SOUR:LIST:TIM:CLE
SYST:ERR?
无报错:具备时序缓存存储结构
-113:彻底无抖动功能
2. 抖动数据读取能力
scpi
SOUR:LIST:TIM:JIT:DATA? 0.MAX
SYST:ERR?
3. 内置统计值(高版本固件独有)
scpi
SOUR:LIST:TIM:JIT:MEAN?
SOUR:LIST:TIM:JIT:MAX?
SOUR:LIST:TIM:JIT:MIN?
SOUR:LIST:TIM:JIT:STD?
全部无报错:固件新版,内置硬件统计
仅 DATA 可用、统计指令报 - 113:老固件仅能读原始抖动数组,均值 / 标准差需上位机计算
4. 时序分辨率微调(高精度机型)
scpi
SOUR:LIST:TIM:RES?
SYST:ERR?
三、一键快速检测 SCPI 块(复制直接下发)
scpi
*RST;*CLS
! 1 探测时序抖动顶层指令
SOUR:LIST:TIM:CAPT?
SYST:ERR?
! 2 探测缓存清空
SOUR:LIST:TIM:CLE
SYST:ERR?
! 3 探测抖动数据节点
SOUR:LIST:TIM:JIT:DATA? 0.1
SYST:ERR?
! 4 探测内置均值统计
SOUR:LIST:TIM:JIT:MEAN?
SYST:ERR?
结果速判
全部返回 0 错误 → 完整全功能支持
CAPT/CLE 无错、MEAN 报 - 113 → 仅原始抖动数组可读,无板载统计
第一条 CAPT 就报 - 113 → 机型 / 固件完全不支持 LIST 步进抖动采集
四、ARB 序列模式补充区分
若设备用 ARB 波形分段阶梯而非 LIST 指令,探测 ARB 时序抖动分支:
scpi
*CLS
SOUR:ARB:TIM:CAPT?
SYST:ERR?
报错规则和 LIST 完全一致,二者指令树独立,支持性不一定同步。
五、机型固件支持总览
N79xxA / N89xxA
固件≥6.02:全套 LIST TIM JITTER(捕获、原始数据、四大统计量、分辨率)
固件 < 6.02:TIM 子系统存在,但无 MEAN/MAX/MIN/STD 统计指令,仅可读原始抖动数组
E36100 BT 系列 全系无SOUR:LIST:TIM时序抖动子系统,下发直接 - 113;无法仪器内部采集步进抖动,只能外部示波器测量
N6705B / N6700B 基础 LIST 功能,但无时序抖动捕获整套指令,-113 报错
六、Python 自动化检测函数
python
运行
import pyvisa
def check_list_jitter_support(inst):
inst.write("*CLS")
# 第一层探测根指令
inst.write("SOUR:LIST:TIM:CAPT?")
err = inst.query("SYST:ERR?").split(',')
code = int(err[0])
if code == -113:
print("❌ 本机完全不支持LIST步进时序抖动采集")
return False, "No TIM subsystem"
elif code == 0 or code in (-222.-214):
# 基础功能存在,再校验统计指令
inst.write("SOUR:LIST:TIM:JIT:MEAN?")
err_stat = int(inst.query("SYST:ERR?").split(',')[0])
if err_stat == -113:
print("⚠️ 支持原始抖动数组读取,无内置均值/标准差统计")
return True, "Raw data only"
else:
print("✅ 完整支持:捕获+原始数据+内置四项统计")
return True, "Full jitter stats"
else:
print(f"未知错误码 {code}")
return False, f"Error code {code}"
rm = pyvisa.ResourceManager()
inst = rm.open_resource("TCPIP::IP::5025::INSTR")
support, level = check_list_jitter_support(inst)
inst.close()
七、补充说明
支持不代表一定有抖动数值:必须先开启SOUR:LIST:TIM:CAPT ON、运行一次完整 LIST 列表,缓存才会填充抖动差值;未运行查询只会返回无数据报错-222.不属于不支持功能。
若设备不支持仪器内置采集,替代方案:外部示波器采集输出电压 / 电流切换边沿,手动测量步进时序抖动。