资讯中心

联系我们

深圳市维立信电子科技有限公司
地址:深圳市福田区红荔路第一世界广场A座8D-E
咨询电话:0755-83766766
E-mail:info@welissom.com

如何通过SCPI查询Keysight双向直流电源历史记录的起始时间?

2026-06-04 09:26:13  点击:

  Keysight N79xx/N89xx/N6705C ELOG 历史最早起始时间SCPI 查询方案

  ELOG 无单独:ELOG:STARTTIME?原生 SCPI 指令,只能读取缓冲区第 1 条日志的时间戳作为整段历史起始时间,分缓存未满、缓存打满环形覆盖两种场景。

  一、单通道机型(N79xx / N89xx)标准指令

  步骤 1:查询 ELOG 当前有效总记录条数

  scpi

  :ELOG:COUNt?

  返回TotalCnt:当前缓冲区有效日志总数

  TotalCnt=0:无任何 ELOG 历史记录,无起始时间

  TotalCnt≥1:首条索引固定为1

  步骤 2:读取缓冲区第一条记录(历史最早起始时间)

  scpi

  :ELOG:DATA? 1

  返回字段格式: Index,Unix时间戳,通道,事件码,事件说明,Voltage,Current 第 2 个字段 = 整条 ELOG 历史记录起始 Unix 时间戳

  示例返回:1.1778912345.1.OVP,OverVoltage,28.52.0.003 起始时间戳:1778912345(Unix 秒级时间,上位机转北京时间)

  二、多通道模块化机型(N6705B/C,分通道独立 ELOG 缓存)

  通道前缀CHx:,各通道日志独立:

  scpi

  :CH1:ELOG:COUN?

  :CH1:ELOG:DATA? 1 //CH1历史起始时间

  :CH2:ELOG:COUN?

  :CH2:ELOG:DATA? 1 //CH2历史起始时间

  三、环形缓存满容量场景(关键)

  ELOG 是循环环形缓冲区,满后从头覆盖旧日志:

  查询最大缓存深度::ELOG:SIZE? MAX → MaxDepth

  若TotalCnt == MaxDepth:当前索引 1 是最新写入数据,最早历史不在 index=1

  最早历史条目下标 = 当前写入指针位置 + 1.计算公式:

  plaintext

  FirstIndex = (COUN + 1) % MaxDepth

  if FirstIndex ==0: FirstIndex=MaxDepth

  再用:ELOG:DATA? FirstIndex读取真实全缓存最早起始时间

  举例

  Max=200.COUN=200(缓存写满) FirstIndex=(200+1)%200=1 → FirstIndex=200 :ELOG:DATA? 200 → 整段 ELOG 最旧起始时间

  四、Python 自动获取 ELOG 起始时间代码(自动区分满 / 未满)

  python

  运行

  import pyvisa,time

  rm=pyvisa.ResourceManager()

  inst=rm.open_resource("TCPIP::电源IP::5025::SOCKET")

  cnt=int(inst.query(":ELOG:COUN?"))

  if cnt==0:

  print("ELOG无历史记录")

  else:

  max_dep=int(inst.query(":ELOG:SIZE? MAX"))

  if cnt

  first_data=inst.query(":ELOG:DATA? 1")

  else:

  first_idx=(cnt+1)%max_dep

  first_idx=max_dep if first_idx==0 else first_idx

  first_data=inst.query(f":ELOG:DATA? {first_idx}")

  ts=int(first_data.split(",")[1])

  start_time=time.localtime(ts)

  print("ELOG最早起始Unix时间戳:",ts)

  print("本地起始日期:",time.strftime("%Y-%m-%d %H:%M:%S",start_time))

  五、补充 DLOG 波形记录起始时间(区分 DLOG≠ELOG)

  如需查询DLOG 采样数据的首采样时间戳:

  scpi

  :DLOG:DATA? 1

  同样取第二个字段为 DLOG 起始时间。

  六、常用配套辅助命令

  清空 ELOG(重置起始时间,COUN 清零)::ELOG:CLEar

  读取末尾最新记录(结束时间)::ELOG:DATA?