一、Keysight N79xxA / N89xxA 双向直流电源(DLOG 序列采样、ELOG 序列事件历史)路径 SCPI 体系
仪器无单独 MEM:LOG:PATH? 单条路径查询指令,依靠存储介质查询 + 日志根目录枚举 + 文件归属介质三层获取完整路径;默认分内部闪存 INT、外接 USB USB两大存储根。
1. 查询当前日志默认存储介质(根路径前缀)
scpi
! 全局日志(DLOG+ELOG统一默认存储盘)
MEMory:LOG:MEDium?
! DLOG序列采样日志专属存储盘
MEMory:DLOG:MEDium?
! ELOG序列运行事件历史专属存储盘
MEMory:ELOG:MEDium?
返回值含义:
INT:内部闪存,根路径标识 INT:LOG
USB:外接 U 盘,根路径标识 USB:LOG
2. 枚举日志目录内全部历史文件(拿到完整文件名 + 目录)
scpi
! 列出LOG根目录下所有DLOG/ELOG序列历史文件
MEMory:CATalog? "LOG"
返回逗号分隔列表示例: "run001.dlog","run002.elog","seq_test.dlog" 完整物理路径拼接规则:
内部:INT:LOGrun001.dlog
U 盘:USB:LOGrun001.dlog
3. 单文件精准查询归属介质(单个历史文件完整路径前缀)
已知日志文件名时,单独查该文件所在盘:
scpi
MEMory:FILE:MEDium? "run001.dlog"
配合文件名即可拼接完整绝对路径。
4. 读取日志保存目录配置(可读写目录路径)
新版固件支持自定义日志存放子目录:
scpi
! 查询全局日志子目录
MEMory:LOG:DIRectory?
! 查询DLOG采样日志子目录
MEMory:DLOG:DIRectory?
! 查询ELOG事件历史子目录
MEMory:ELOG:DIRectory?
默认返回空字符串 = 直接存放在LOG根目录;若自定义子文件夹如SEQ_RUN,完整路径变为 INT:LOGSEQ_RUNrun001.dlog
二、ARB 输出波形序列文件(非运行历史日志)路径查询
区分:ARB 是编辑好的波形模板文件,DLOG/ELOG 是运行后生成的历史记录
scpi
! 查询ARB序列文件存储介质
MEMory:ARB:MEDium?
! 查询ARB存放子目录
MEMory:ARB:DIRectory?
! 枚举ARB目录全部序列文件
MEMory:CATalog? "ARB"
默认路径:INT:ARBxxx.arb
三、完整自动化路径获取流程(SCPI 指令顺序)
scpi
*CLS
!1 确认ELOG序列事件历史存储盘
MEM:ELOG:MED?
!2 确认ELOG子文件夹
MEM:ELOG:DIR?
!3 列出所有ELOG历史文件
MEM:CAT? "LOG"
!4 取单个文件核对介质
MEM:FILE:MED? "run001.elog"
! DLOG序列采样日志同理替换DLOG指令
MEM:DLOG:MED?
MEM:DLOG:DIR?
四、Python VISA 完整示例(自动拼接完整文件路径)
python
运行
import pyvisa
rm = pyvisa.ResourceManager()
inst = rm.open_resource("TCPIP::192.168.1.100::INSTR")
def get_full_log_path(inst, log_filename, log_type="DLOG"):
# 1 获取存储介质
if log_type.upper() == "DLOG":
media = inst.query("MEM:DLOG:MED?").strip()
subdir = inst.query("MEM:DLOG:DIR?").strip()
elif log_type.upper() == "ELOG":
media = inst.query("MEM:ELOG:MED?").strip()
subdir = inst.query("MEM:ELOG:DIR?").strip()
else:
raise ValueError("仅支持DLOG/ELOG")
# 拼接路径
base = f"{media}:LOG\"
if subdir:
base = base + subdir + "\"
full_path = base + log_filename
return full_path, media, subdir
# 示例:查询run001.dlog完整路径
fullpath, med, dirname = get_full_log_path(inst, "run001.dlog", "DLOG")
print(f"完整路径:{fullpath}")
print(f"存储介质:{med},子目录:{dirname if dirname else 'LOG根目录'}")
# 列出全部日志文件
file_list = inst.query('MEM:CAT? "LOG"').strip().split(',')
print("目录内所有序列历史文件:", file_list)
inst.close()
五、型号兼容说明
N79xxA / N89xxA:完整支持MEDium/DIRectory/CATalog全套日志路径指令
E36100 BT 小型双向源:无独立 DLOG/ELOG 分支,统一用MEM:LOG:MED?,日志统一存INT:LOG
老款 N6705B:无DIRectory子目录指令,仅根目录INT:LOG
配套路径修改写入指令(按需切换存储位置)
scpi
! 设置ELOG存U盘
MEM:ELOG:MED USB
! 设置DLOG自定义子文件夹SEQ_LOG
MEM:DLOG:DIR "SEQ_LOG"