Keysight 双向电源 ELOG 限值历史是否已清除 SCPI 查询方案(N79xx/N89xx/N6705C 全系通用)
判断输出限制 (LIM) 触发事件历史记录是否被清空分 2 种实现思路:读取日志条目总数(最实用)、查询 ELOG 状态寄存器标志位,多通道机型加:CHx:前缀。
一、首选:读取限值历史记录条数(最直观)
1. 查询 LIM 限值事件总记录数
scpi
:ELOG:COUNt:LIMit?
返回 =0 → 限值历史已全部清除,无残留事件
返回>0 → 缓冲区仍存历史触发事件,未清除
多通道机型(N6705B/C)
scpi
:CH1:ELOG:COUN:LIM?
:CH2:ELOG:COUN:LIM?
补充:OVP/OCP 保护事件计数
scpi
:ELOG:COUNt:PROTection?
清除历史的指令(配套)
scpi
:ELOG:CLEar:LIMit //仅清空限值历史
:ELOG:CLEar:PROT //仅清空保护历史
:ELOG:CLEar:ALL //清空全部ELOG日志
判定逻辑:清除后立即查询 Count=0;新限值触发后 Count 自动 + 1
二、寄存器标志位:查询 ELOG 缓冲区空 / 满状态
1. 查询 ELOG 事件状态寄存器
scpi
:ELOG:STATus?
返回十进制数值,关键 bit 定义:
Bit0 (1):ELOG 缓冲区非空(有记录,未清空)
Bit1 (2):缓冲区满
Bit0=0 → 缓冲区已清空,无历史事件
操作示例
scpi
:ELOG:CLE:LIM
:ELOG:STAT?
//返回0 → 限值日志清除完毕
三、逐条读取校验(精准核验残留记录)
scpi
:ELOG:DATA:LIMit? 0.1
无数据 / 返回空 = 已全部清除
有字符串数据 = 仍留存历史记录
四、自动化判断 Python 示例
python
运行
import pyvisa
rm = pyvisa.ResourceManager()
dev = rm.open_resource("TCPIP::电源IP::5025::SOCKET")
count = int(dev.query(":ELOG:COUN:LIM?"))
if count == 0:
print("限值历史记录【已全部清除】")
else:
print(f"仍有{count}条限值事件未清除")
dev.close()
五、常用完整校验流程
scpi
:ELOG:CLE:LIM //执行清空
:ELOG:COUN:LIM? //校验条目数
:ELOG:STAT? //校验寄存器空标志