Keysight N79xx/N89xx/N6705C SCPI 查询OVP/OCP 保护事件持续时长(故障保持时间)
保护时长 = 保护解除时刻 − 保护触发时刻,从:ELOG:DATA:PROTection?单条日志字段提取时间戳做差值;无单独一条指令直接返回 Duration,必须解析日志字段。
多通道机型前缀加:CHx:,例:CH1:ELOG:DATA:PROT?
一、第一步:查询保护日志总条数
scpi
:ELOG:COUNt:PROTection?
返回 N:一共有 N 条保护记录,索引0~N-1.
二、第二步:读取单条保护事件全量数据(核心指令)
scpi
:ELOG:DATA:PROTection? <起始索引>,<读取条数>
示例读取第 0 号 1 条记录:
scpi
:ELOG:DATA:PROT? 0.1
ASCII 格式返回字段(逗号分隔,固定字段顺序)
plaintext
<事件类型>,<触发U>,<触发I>,<触发时间戳(s)>,<恢复时间戳(s)>,<通道号>
事件类型:OVP / OCP / OT(过温)
触发电压、触发电流:保护动作瞬间电压电流
第 4 位:T_start 保护触发时间(仪器上电运行秒数)
第 5 位:T_stop 保护撤销 / 输出恢复时间(仪器上电运行秒数)
通道号
保护持续时间计算公式
TDuration=Tstop−Tstart(单位:秒)
若T_stop=0:故障仍在持续、保护未解除。
三、配套:查询 PROT 日志配置(采样 / 时基,用于校验时间精度)
scpi
:ELOG:SAMP:PER:PROT? //PROT日志采样周期(s)
:ELOG:TRIG:DEL:PROT? //保护触发记录延迟
:ELOG:ENAB:PROT? //保护日志总开关 1启用/0关闭
四、示例实操
返回字符串:OCP,24.01.12.52.1256.32.1259.78.1
Tstart=1256.32 s,Tstop=1259.78 s
持续时长 = 1259.78 − 1256.32 = 3.46 s
五、Python 自动化批量计算保护时长
python
运行
import pyvisa
rm = pyvisa.ResourceManager()
inst = rm.open_resource("TCPIP::IP::5025::SOCKET")
cnt = int(inst.query(":ELOG:COUN:PROT?"))
for idx in range(cnt):
res = inst.query(f":ELOG:DATA:PROT? {idx},1").strip()
typ,V,I,t1.t2.ch = res.split(',')
t1.t2 = float(t1),float(t2)
if t2 == 0:
dur = "故障未恢复"
else:
dur = round(t2-t1.3)
print(f"【{idx}】{typ} CH{ch} 持续={dur}s 触发{t1}→结束{t2}")
inst.close()
六、清空保护日志(配套)
scpi
:ELOG:CLE:PROT