判断双向直流电源能否把序列历史(DLOG/ELOG)自动保存至 USB 的三层 SCPI 验证方案
适用机型:Keysight N79xxA / N89xxA(完整 USB 存储)、E36100 BT、N6705B
一、第一层:指令集存在性检测(判定硬件固件是否原生支持 USB 存储日志)
直接尝试写入 USB 介质参数,通过系统错误码区分「机型不支持 USB」和「USB 未插设备」。
标准探测指令(不带 U 盘也能测机型能力)
scpi
*CLS ! 清空旧错误缓存
MEMory:DLOG:MEDium USB ! 尝试将DLOG存储切为USB
SYSTem:ERR? ! 读取操作反馈错误
错误码判定规则
返回 -259. "Media error" 机型硬件 / 固件支持 USB 存储,只是当前没插 U 盘、U 盘未识别 / 格式化异常。
返回 -113. "Undefined header" /-202. "Parameter out of range" 机型完全不支持 USB 作为 DLOG/ELOG 存储介质,只有 INT 内部闪存可用。
返回 +0. "No error" 固件识别 USB 关键字,机型支持 USB 日志存储;插好 U 盘即可切换保存。
ELOG 用同一逻辑探测:
scpi
*CLS
MEMory:ELOG:MEDium USB
SYST:ERR?
快速简化判断(全局日志指令兜底)
scpi
*CLS
MEMory:LOG:MED USB
SYST:ERR?
二、第二层:插入 U 盘后,验证 USB 介质挂载就绪(支持机型下确认 U 盘可用)
确认机型支持 USB 后,插入FAT32 格式 U 盘,执行挂载检测:
读取介质状态
scpi
MEMory:DLOG:MEDium?
返回USB:U 盘正常挂载;
返回INT:U 盘识别失败、未就绪。
枚举 USB 根目录,验证文件系统可读写
scpi
MEMory:CATalog? USB:
SYST:ERR?
正常返回目录列表 = USB 读写正常;
-259=U 盘损坏 / 格式不对 / 接触不良。
测试在 USB 创建日志目录(模拟自动保存路径)
scpi
*CLS
MEMory:DLOG:DIR "USB_TEST_LOG"
SYST:ERR?
无报错代表可以正常在 USB 建立自动保存文件夹。
三、第三层:完整自动保存链路验证(最终实机确认)
全部配置打通,跑一次序列测试自动落盘 USB:
scpi
*CLS
! 1 切换存储介质到USB
MEM:DLOG:MED USB
MEM:ELOG:MED USB
! 2 设置子目录
MEM:DLOG:DIR "SEQ_AUTO_USB"
MEM:ELOG:DIR "SEQ_AUTO_USB"
! 3 设定保存格式
MEM:DLOG:FORM BIN
MEM:ELOG:FORM BIN
! 4 开启自动保存开关(核心)
MEM:DLOG:AUTO 1
MEM:ELOG:AUTO 1
! 5 回读全部配置校验
MEM:DLOG:MED?
MEM:DLOG:DIR?
MEM:DLOG:AUTO?
运行一段 ARB 输出序列,完成后枚举 USB 日志目录看是否自动生成.dlog/.elog文件:
scpi
MEM:CAT? "USB:LOGSEQ_AUTO_USB"
能看到新生成日志文件 = 完整支持 USB 自动保存序列历史。
四、各型号原生 USB 支持速览
N79xxA / N89xxA 大功率双向源 标配支持 USB 存储 DLOG/ELOG 自动日志,完整全套MED/DIR/AUTO指令。
E36100 BT 小型双向源 新款固件支持 USB 全局日志MEM:LOG:MED USB;老固件仅 INT。
N6705B/N6700B 模块化主机 仅内部 INT 闪存,无 USB 日志存储能力,发送MED USB直接报参数越界错误。
五、关键错误码对照表
表格
六、Python 一键检测脚本
python
运行
import pyvisa
rm = pyvisa.ResourceManager()
inst = rm.open_resource("TCPIP::192.168.1.100::INSTR")
def check_usb_log_support(inst):
inst.write("*CLS")
# 探测DLOG USB介质指令是否存在
inst.write("MEM:DLOG:MED USB")
err = inst.query("SYST:ERR?").split(',')
code = int(err[0])
if code in (-113. -202):
print("❌ 本机型固件不支持USB存储序列历史日志")
return False
elif code == -259:
print("✅ 机型支持USB日志;当前未插U盘/U盘识别失败")
return True
elif code == 0:
print("✅ USB介质可正常切换,U盘已就绪")
return True
else:
print(f"未知错误 {code}:{err[1]}")
return False
support = check_usb_log_support(inst)
inst.close()
补充前置要求(支持机型也必须满足)
U 盘格式必须为 FAT32;NTFS/exFAT 仪器不识别;
单分区、无加密、无分区表隐藏;
仪器前面板 USB 口(部分机型后面板仅通信,不支持存储 U 盘)。