Keysight N79xx/N89xx/N6705B/C 输出限制(VLIM/ILIM/OVP/OCP)历史次数 SCPI 查询
本机无单条 SCPI 直接筛选 LIM 事件计数寄存器,分两步:①读取 ELOG 总条数;②全量导出日志,上位机筛选 VLIM/ILIM/OVP/OCP 统计次数,通道指令前缀:CH1:/:CH2:。
一、基础 SCPI 指令
1. 查询 ELOG 全部日志总条数
scpi
:ELOG:COUN? //整机全部事件总记录数
:CH1:ELOG:COUN? //通道1单独日志总数
返回:十进制数字,代表 ELOG 缓存存储总条目。
2. 导出全量 ELOG 日志(筛选限值记录必备)
scpi
:ELOG:DATA? 1.LAST
:CH1:ELOG:DATA? 1.LAST
日志字段格式:索引,时间戳,通道,事件码,备注,Vout,Iout 限制类事件码:VLIM (电压限值)、ILIM (电流限值)、OVP (过压保护)、OCP (过流保护),匹配以上字段即为输出限制记录。
3. 分段读取(日志量大时分批导出)
scpi
:ELOG:DATA? start,stop
例::ELOG:DATA? 1.500 //读取1~500条日志
二、快速筛选 4 类限值总次数(Python 脚本,直接运行)
python
运行
import pyvisa
rm = pyvisa.ResourceManager()
inst = rm.open_resource("TCPIP::电源IP::5025::SOCKET")
cnt_all = int(inst.query(":ELOG:COUN?"))
lim_code = {"VLIM","ILIM","OVP","OCP"}
lim_count = 0
if cnt_all > 0:
raw = inst.query(":ELOG:DATA? 1.LAST").strip().split(",")
#每7个字段为1条日志
for i in range(0. len(raw),7):
evt_name = raw[i+3]
if evt_name in lim_code:
lim_count +=1
print(f"输出限制历史总触发次数 = {lim_count}")
#分项单独统计
vlim_cnt = raw.count("VLIM")
ilim_cnt = raw.count("ILIM")
ovp_cnt = raw.count("OVP")
ocp_cnt = raw.count("OCP")
print(f"VLIM:{vlim_cnt} ILIM:{ilim_cnt} OVP:{ovp_cnt} OCP:{ocp_cnt}")
三、补充:单次运行统计(非掉电保存,上电清零)
仅本次开机运行过程中限值次数,不存入 ELOG 历史:
scpi
:STAT:LIM:VOLT? //本次开机VLIM触发次数
:STAT:LIM:CURR? //本次开机ILIM触发次数
:STAT:PROT:OVP? //本次开机OVP保护次数
:STAT:PROT:OCP? //本次开机OCP保护次数
重点::STAT寄存器断电清零,不能查历史全生命周期次数;历史永久记录只在 ELOG。
四、辅助配置指令
开启限值事件记录到 ELOG
scpi
:ELOG:TRIG:LIM ON
:ELOG:TRIG:PROT ON
清空 ELOG 全部历史(谨慎使用)
scpi
:ELOG:CLE
总结
全生命周期历史限值次数 → ELOG 导出 + 软件统计(唯一可靠方案)
单次上电限值次数 → :STAT:xxx? 直接 SCPI 读数
区分:LIM = 软硬件输出限流限压;PROT = 硬件 OVP/OCP 保护闭锁。