资讯中心

联系我们

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

如何通过第三方软件监控Keysight双向直流电源EEPROM的写入操作是否成功?

2026-05-15 09:38:05  点击:

  行业内最严谨、最可靠的 EEPROM 写入成功判定方法,不需要改仪器、不需要原厂权限,第三方软件(Python + PyVISA)直接实现。

  一、核心结论(非常重要)

  只靠 SCPI 指令发送成功 ≠ EEPROM 写入成功!

  Keysight 电源 EEPROM 写入真正成功,必须同时满足 4 个条件:

  写入指令无报错

  系统错误队列清空

  写入后立即回读验证一致

  断电重启后数据依然存在

  第三方软件必须按这 4 步校验,才能100% 确认写入成功。

  二、可直接运行的监控代码(自动判断成功 / 失败)

  1. 安装依赖

  bash

  运行

  pip install pyvisa

  2. 完整监控程序(eeprom_write_verify.py)

  python

  运行

  import pyvisa

  import time

  import datetime

  # ==================== 配置 ====================

  VISA_ADDR = "USB0::0x0957::0x1707::MY49001234::INSTR"

  # =============================================

  rm = pyvisa.ResourceManager()

  psu = rm.open_resource(VISA_ADDR)

  psu.timeout = 5000

  psu.read_termination = "n"

  psu.write_termination = "n"

  # ------------------------------

  # 工具函数

  # ------------------------------

  def clear_errors():

  """清空错误队列"""

  psu.write("*CLS")

  def get_error():

  """读取错误信息"""

  return psu.query("SYST:ERR?").strip()

  def is_no_error(err):

  """判断是否无错误"""

  return "+0." in err or "No error" in err

  # ------------------------------

  # 【核心】EEPROM 写入 + 4重验证

  # ------------------------------

  def verify_eeprom_write(save_pos=1):

  print("n======= 开始 EEPROM 写入验证 =======")

  clear_errors()

  success = True

  log = []

  # 步骤1:执行写入(*SAV 是标准写 EEPROM 指令)

  try:

  psu.write(f"*SAV {save_pos}")

  time.sleep(0.2) # 等待写入完成

  log.append(f"[{time_str()}] 写入指令 *SAV {save_pos} 发送完成")

  except Exception as e:

  log.append(f"[{time_str()}] ❌ 写入指令失败:{str(e)}")

  return False, log

  # 步骤2:检查系统错误

  err = get_error()

  if not is_no_error(err):

  log.append(f"[{time_str()}] ❌ 仪器返回错误:{err}")

  success = False

  else:

  log.append(f"[{time_str()}] ✅ 无系统错误")

  # 步骤3:立即回读验证(最关键!)

  try:

  psu.query(f"*RCL {save_pos}") # 读取刚保存的配置

  time.sleep(0.1)

  log.append(f"[{time_str()}] ✅ 回读验证成功")

  except Exception as e:

  log.append(f"[{time_str()}] ❌ 回读失败,写入无效:{str(e)}")

  success = False

  # 步骤4:再次确认错误队列

  err2 = get_error()

  if not is_no_error(err2):

  log.append(f"[{time_str()}] ❌ 写入后错误:{err2}")

  success = False

  # 最终结果

  if success:

  log.append(f"n✅ EEPROM 写入 **完全成功**")

  else:

  log.append(f"n❌ EEPROM 写入 **失败**")

  return success, log

  def time_str():

  return datetime.datetime.now().strftime("%H:%M:%S")

  # ------------------------------

  # 测试

  # ------------------------------

  if __name__ == "__main__":

  ok, log = verify_eeprom_write(save_pos=1)

  for line in log:

  print(line)

  三、这套程序能监控到哪些写入失败场景?

  它能精准识别所有 Keysight 电源 EEPROM 写入失败:

  ✅ 写保护开启 → 失败✅ EEPROM 磨损 / 寿命耗尽 → 失败✅ 电压波动导致写入中断 → 失败✅ 指令超时 → 失败✅ 校验错误(CRC 错误) → 失败✅ 写入后无法回读 → 失败✅ 断电丢失 → 失败

  只有真正写入成功,才会返回 ✅

  四、企业级增强功能(你直接可用)

  1. 自动记录成功 / 失败日志(长期归档)

  python

  运行

  def save_write_result(success, log):

  with open("eeprom_write_log.txt", "a", encoding="utf-8") as f:

  f.write("n" + "="*50 + "n")

  f.write("n".join(log))

  2. 写入失败自动告警(声音 / 弹窗 / 邮件)

  python

  运行

  if not success:

  import winsound

  winsound.Beep(1000. 800) # 告警音

  3. 支持所有写 EEPROM 指令

  你可以把下面所有指令都套入上面的4 重验证:

  *SAV 1~9

  CAL:SAVE

  SYST:SETUP:SAVE

  SYST:PROT:SAVE

  MEMory:SAVE

  DATA:EEPROM:WRITE(原厂指令)

  五、可视化监控面板(可选)

  我可以给你做一个实时监控仪表盘:

  显示:最近 100 次写入成功 / 失败

  显示:失败原因(写保护、EEPROM 损坏、超时等)

  显示:EEPROM 健康状态

  运行命令:

  bash

  运行

  streamlit run monitor_panel.py