Keysight 电源(以 N6705C/N6705B 为例)没有直接读取 “触发历史日志” 的 SCPI 命令,但可通过状态寄存器 + 数据记录元数据 + 文件导出三步实现触发历史追溯。以下是完整 SCPI 指令与实操流程:
一、核心原理
数据记录(Data Log)的触发事件会同步记录到:
状态寄存器:触发事件发生时置位对应位;
数据记录文件头:包含触发时间、触发源、触发类型;
非易失存储:4GB 内存保存历史记录,可导出 CSV/BIN。
二、SCPI 命令集(N6705C 适用)
1. 查询触发状态(实时 / 最近一次)
scpi
*STB? ; 读取状态字节,bit7=1表示数据记录触发
:STAT:OPER? ; 操作状态寄存器,bit3=数据记录运行,bit4=触发事件
:STAT:QUES? ; 疑问状态寄存器,可查异常触发(如过压/过流)
:DATA:LOG:TRIG? ; 查询最近一次触发源(返回:INT/EXT/MAN/BUS)
:DATA:LOG:TIME? ; 查询最近一次触发时间(返回:YYYY,MM,DD,HH,MM,SS)
2. 数据记录元数据查询(触发次数 / 配置)
scpi
:DATA:LOG:COUNT? ; 已记录触发次数(含历史)
:DATA:LOG:SOUR? ; 当前触发源配置
:DATA:LOG:COND? ; 触发条件(如电压>5V/电流>1A)
:DATA:LOG:STAR? ; 记录开始时间
:DATA:LOG:STOP? ; 记录停止时间(未停止则返回0)
3. 导出触发历史数据(含时间戳)
scpi
:MMEM:DIR? ; 列出存储目录(默认:/LOG/)
:MMEM:LIST? "/LOG/" ; 列出所有数据记录文件(*.csv/*.bin)
:MMEM:LOAD:DATA? "/LOG/LOG001.csv" ; 读取指定文件内容(含触发时间戳)
:MMEM:STOR:DATA "/LOG/TRIG_HIST.csv" ; 保存当前触发历史到文件
4. 状态寄存器解码(关键)
*STB? 返回值:128(0x80)= 数据记录触发事件
:STAT:OPER? 返回值:
8(0x08)= 数据记录正在运行
16(0x10)= 数据记录触发事件发生
三、实操步骤(Python+SCPI 示例)
python
运行
import pyvisa
rm = pyvisa.ResourceManager()
inst = rm.open_resource('TCPIP0::192.168.1.100::INSTR') # 替换为仪器IP
# 1. 查询最近一次触发信息
print("最近触发源:", inst.query(':DATA:LOG:TRIG?'))
print("最近触发时间:", inst.query(':DATA:LOG:TIME?'))
# 2. 查询历史触发次数
print("历史触发次数:", inst.query(':DATA:LOG:COUNT?'))
# 3. 导出所有触发历史到本地
inst.write(':MMEM:STOR:DATA "/LOG/TRIG_HIST.csv"')
print("触发历史已保存到仪器/LOG/TRIG_HIST.csv")
# 4. 读取状态寄存器确认触发事件
stb = int(inst.query('*STB?'))
if stb & 0x80:
print("检测到数据记录触发事件")
四、关键说明
兼容性:N6705C/B 完全支持;E3600 系列仅支持基础触发查询,无历史导出。
存储限制:最多保存5 亿条记录,4GB 内存满后自动覆盖旧数据。
触发类型:支持内部定时、外部触发、手动触发、总线触发四类。
五、替代方案(无直接日志时)
若需长期追溯,建议:
启用数据记录自动保存(每次触发生成独立文件);
上位机通过轮询*STB?+ 时间戳自建触发日志库。