一、方案 1:开启 AUTO 自动保存,列表结束自动存文件 + 关输出(推荐全自动)
1 前置配置:存储路径、格式、自动保存使能
scpi
*RST;*CLS
!===== DLOG电压电流采样日志配置 =====
MEM:DLOG:MED INT ! 存储介质 INT/USB
MEM:DLOG:DIR "LIST_RUN" ! 自定义文件夹
MEM:DLOG:FORM CSV ! BIN/CSV/ASC
MEM:DLOG:AUTO 1 ! 开启序列结束自动保存DLOG
!===== ELOG事件历史配置 =====
MEM:ELOG:MED INT
MEM:ELOG:DIR "LIST_RUN"
MEM:ELOG:FORM CSV
MEM:ELOG:AUTO 1 ! 事件记录自动保存
!===== LIST时序抖动捕获(可选) =====
SOUR:LIST:TIM:CLE
SOUR:LIST:TIM:CAPT ON
!===== 配置LIST结束动作:运行完成关闭输出 =====
SOUR:LIST:END:OUT OFF ! LIST跑完直接切断输出
! 可选:SOUR:LIST:END:OUT HOLD 保持最后一步电压电流
SOUR:LIST:END:OUT?
2 加载 LIST 列表参数(举例阶梯电压)
scpi
! 示例:3步列表,每步1秒
SOUR:LIST:VOLT:DATA 5.10.15
SOUR:LIST:CURR:DATA 2.2.2
SOUR:LIST:TIME:DATA 1.1.1
SOUR:LIST:COUN? ! 查询总步数
3 启动列表运行
scpi
OUTP ON ! 打开通道输出
SOUR:LIST:RUN ! 启动列表
*WAI ! 上位机阻塞等待列表全部执行完毕
执行逻辑全自动闭环
LIST 一步步按时序运行;
全部步数跑完 → 硬件自动关闭输出(END:OUT OFF);
仪器自动把 DLOG (.dlog/.csv)、ELOG (.elog/.csv) 写入 INT:LOGLIST_RUN;
无需人工干预保存指令。
二、方案 2:无 AUTO 自动保存机型(如老 N6705B):跑完手动保存文件再关输出
没有MEM:DLOG:AUTO时,缓存数据手动另存为仪器内文件,随后关闭输出:
scpi
*RST;*CLS
! 开启LIST内置采样缓存
SOUR:LIST:DLOG:CLE
SOUR:LIST:DLOG:DLOG ENAB
! LIST结束动作设为关输出
SOUR:LIST:END:OUT OFF
! 加载列表波形
SOUR:LIST:VOLT:DATA 3.6.9
SOUR:LIST:CURR:DATA 1.1.1
SOUR:LIST:TIME:DATA 0.5.0.5.0.5
OUTP ON
SOUR:LIST:RUN
*WAI
! 1.手动将DLOG缓存保存为仪器内文件
MEM:DLOG:SAVE "list_manual_run01"
! 2.手动保存ELOG事件缓存
MEM:ELOG:SAVE "list_event_run01"
! 确认输出已关闭(双重校验)
OUTP?
三、关键进阶控制指令
1 列表中途强制停止,立刻保存当前缓存文件
测试中途需要中断、立刻落盘日志并关输出:
scpi
SOUR:LIST:STOP ! 终止列表运行
OUTP OFF ! 强制关输出
! 保存当前不完整的采样缓存
MEM:DLOG:SAVE "list_interrupt"
MEM:ELOG:SAVE "event_interrupt"
2 分片大列表:每段 LIST 结束存一个独立文件
超长多段测试,分段运行分段归档:
scpi
! 第一段
SOUR:LIST:VOLT:DATA 1.2
SOUR:LIST:TIME:DATA 1.1
SOUR:LIST:RUN;*WAI
MEM:DLOG:SAVE "seg1"
! 清空缓存再跑第二段
SOUR:LIST:DLOG:CLE
SOUR:LIST:VOLT:DATA 3.4
SOUR:LIST:RUN;*WAI
MEM:DLOG:SAVE "seg2"
OUTP OFF
3 读取已保存到仪器的文件(GPIB/LAN/ 串口通用)
文件存好后,用MEM:DATA?把文件完整传输到 PC 本地磁盘:
scpi
FORM:DATA ASC
! 读取DLOG文件全部内容
MEM:DATA? "INT:LOGLIST_RUNlist_manual_run01.csv"
四、输出结束模式三种可选
scpi
SOUR:LIST:END:OUT OFF ! 推荐:跑完直接关输出
SOUR:LIST:END:OUT HOLD ! 保持最后一步V/I不变
SOUR:LIST:END:OUT ZERO ! 电压电流置0.输出不切断
五、完整一键可复制指令块(全自动标准模板)
scpi
*RST;*CLS
! 存储与自动保存
MEM:DLOG:MED INT
MEM:DLOG:DIR "LIST_AUTO"
MEM:DLOG:FORM CSV
MEM:DLOG:AUTO 1
MEM:ELOG:MED INT
MEM:ELOG:DIR "LIST_AUTO"
MEM:ELOG:FORM CSV
MEM:ELOG:AUTO 1
! 时序抖动捕获
SOUR:LIST:TIM:CLE
SOUR:LIST:TIM:CAPT ON
! 列表结束关闭输出
SOUR:LIST:END:OUT OFF
! 列表波形参数
SOUR:LIST:VOLT:DATA 4.8.12
SOUR:LIST:CURR:DATA 3.3.3
SOUR:LIST:TIME:DATA 2.2.2
! 启动执行
OUTP ON
SOUR:LIST:RUN
*WAI
! 校验状态
OUTP?
MEM:CAT? "INT:LOGLIST_AUTO"
六、常见报错与排查
-257:文件夹 / 文件名含特殊字符、长度超限
-259:切 USB 时报错,U 盘非 FAT32 / 未识别
-222:AUTO 1但未运行 LIST 就查询文件,无数据
-113:机型无MEM:DLOG:AUTO,改用手动SAVE方案
七、Python 程控示例(执行 + 等待 + 校验文件生成)
python
运行
import pyvisa
rm = pyvisa.ResourceManager()
inst = rm.open_resource("TCPIP::192.168.1.100::INSTR", timeout=60000)
# 下发整套配置
script = """
*RST;*CLS
MEM:DLOG:MED INT
MEM:DLOG:DIR "LIST_AUTO"
MEM:DLOG:FORM CSV
MEM:DLOG:AUTO 1
MEM:ELOG:AUTO 1
SOUR:LIST:END:OUT OFF
SOUR:LIST:VOLT:DATA 5.10
SOUR:LIST:CURR:DATA 2.2
SOUR:LIST:TIME:DATA 1.1
OUTP ON
SOUR:LIST:RUN
*WAI
"""
inst.write(script)
# 校验输出已关闭
out_state = inst.query("OUTP?").strip()
print("通道输出状态(0=关闭):", out_state)
# 列出生成的日志文件
file_list = inst.query('MEM:CAT? "INT:LOGLIST_AUTO"')
print("生成的列表日志文件:", file_list)
inst.close()