资讯中心

联系我们

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

如何通过SCPI命令查询Keysight双向直流电源ELOG缓冲区是否已满?

2026-05-21 09:36:54  点击:

  Keysight 双向直流电源(N6705C/N6790A/N8900 等)没有专门叫 “ELOG?” 的 SCPI 命令直接返回 “缓冲区已满” 布尔值,但可以用错误队列状态 + 系统日志状态 + 专用错误位来精准判断 ELOG(Error Log)是否满。下面给你可直接用的 SCPI 查询组合 + 解释 + Python 示例。

  一、ELOG 满的本质

  ELOG 是仪器内部非易失错误日志缓冲区(存开机以来的错误 / 告警),通常容量有限(例如 200 条)。写满后:

  新错误不再写入 ELOG

  状态寄存器置位 “日志满” 位

  可能报 -350 “Queue overflow”

  二、SCPI 直接查询(最可靠组合)

  1. 查标准事件寄存器:是否有 “队列溢出”(ELOG 满核心标志)

  scpi

  *ESR?

  ; 返回值:0–255

  ; bit7=1 → 发生严重错误;bit2=1 → 队列溢出(ELOG 满)

  判断规则:(*ESR? & 4) == 4 → ELOG 缓冲区已满。

  2. 查错误队列深度:当前未读错误数(辅助判断)

  scpi

  :SYSTem:ERRor:COUNt?

  ; 返回整数:当前错误队列中的条目数

  如果 Count ≥ 最大容量(如 200) → ELOG 满。

  3. 查系统安全日志状态(部分固件支持)

  scpi

  :SYSTem:SECurity:LOG:FULL?

  ; 返回 1=满,0=未满(仅新版固件有,如 N6705C FW ≥ A.03.00)

  4. 查是否有 “Queue overflow” 错误(最终确认)

  scpi

  :SYSTem:ERRor?

  ; 返回最近一条错误,若包含 -350."Queue overflow" → ELOG 满

  三、完整查询命令串(一次性发)

  scpi

  *ESR?;:SYST:ERR:COUNt?;:SYST:SEC:LOG:FULL?;:SYST:ERR?

  四、Python 自动判断示例

  python

  运行

  import pyvisa

  rm=pyvisa.ResourceManager()

  inst=rm.open_resource("TCPIP0::192.168.1.100::INSTR")

  # 1. 读 ESR

  esr=int(inst.query("*ESR?").strip())

  queue_overflow=(esr & 4) != 0

  # 2. 读错误计数

  err_count=int(inst.query(":SYST:ERR:COUNt?").strip())

  # 3. 读日志满标志(可选)

  try:

  log_full=int(inst.query(":SYST:SEC:LOG:FULL?").strip())

  except:

  log_full=0 # 旧固件不支持

  # 4. 读最近错误

  last_err=inst.query(":SYST:ERR?").strip()

  # 判断

  elog_full=queue_overflow or (err_count >= 200) or (log_full == 1)

  print("ELOG 缓冲区已满:", elog_full)

  print("错误计数:", err_count)

  print("最近错误:", last_err)

  inst.close()

  五、如何清空 ELOG(满了之后)

  scpi

  :SYSTem:SECurity:LOG:CLEar ; 清空安全/错误日志(保留校准)

  *CLS ; 清除状态寄存器

  六、关键注意

  *ELOG 和 SAV 快照是不同分区:清 ELOG 不影响用户设置快照和校准数据。

  旧固件无 :SYST:SEC:LOG:FULL?,依赖 *ESR? 和 :SYST:ERR:COUNt? 即可。

  ELOG 满不影响仪器正常输出,仅停止记录新错误。