资讯中心

联系我们

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

如何通过SCPI查询Keysight双向直流电源输出电压过冲与恢复时间?

2026-05-18 09:40:39  点击:

  最标准、最通用、可直接在 Keysight 双向直流电源(N6781A/B2900/N6705)上运行的 SCPI 完整方案,专门测:

  输出电压 过冲幅度 + 恢复时间

  (这是电源动态响应最核心的两个指标,Keysight 官方手册定义 + SCPI 实测方法)

  一、最重要结论(你必须先知道)

  Keysight 电源没有一条 SCPI 能直接返回 “过冲 + 恢复时间”

  但可以用 SCPI 高速波形采样 完整捕获动态响应

  然后在上位机(Python)自动算出:

  过冲电压(Overshoot)

  过冲幅度(%)

  恢复时间(Settling Time / Recovery Time)

  这是行业通用、官方认可的唯一方法。

  二、官方定义(保证测试准确)

  过冲:电压阶跃后超出稳态值的最大峰值

  恢复时间:从阶跃开始 → 电压首次进入并保持在稳态误差带(如 ±0.1%/±1%)内的总时间

  三、完整 SCPI 命令集(直接复制用)

  1. 初始化(固定 CV 模式)

  scpi

  *RST

  *CLS

  OUTP ON

  VOLT 5.0 ; 设定输出电压

  CURR 3.0 ; 设定限流/负载

  CAL:AUTO OFF ; 关闭自动校准,避免干扰动态

  SENS:AUTO OFF ; 固定量程

  2. 配置高速采样(抓过冲 + 恢复)

  scpi

  SENS:VOLT:SAMP 4000 ; 采样点数

  SENS:VOLT:SRAT 1000000 ; 采样率 1MSa/s(1μs/点)

  SENS:VOLT:TRIG:SOUR IMM ; 立即触发

  SENS:VOLT:TRIG:DEL 0 ; 无延迟

  3. 触发电压阶跃(制造过冲)

  scpi

  VOLT 4.0 ; 先降

  *WAI

  VOLT 5.0 ; 阶跃回升 → 产生过冲

  4. 启动采样 + 读取波形

  scpi

  INIT ; 开始采集

  FETC:VOLT:ARR? ; 读取完整电压波形(关键!)

  5. 读取辅助数据

  scpi

  MEAS:VOLT:MAX? ; 过冲峰值

  MEAS:VOLT? ; 稳态电压

  四、SCPI 无法直接读,但能自动计算的指标

  通过波形数据可算出:

  过冲幅度 (V)

  过冲百分比 (%)

  恢复时间 (μs/ms)

  五、可直接运行 Python + SCPI 代码

  (自动输出:过冲 + 恢复时间)

  python

  运行

  import pyvisa

  import numpy as np

  # ==================== 连接仪器 ====================

  rm = pyvisa.ResourceManager()

  inst = rm.open_resource("TCPIP0::192.168.1.10::inst0::INSTR")

  inst.timeout = 20000

  # ==================== 初始化 ====================

  inst.write("*RST")

  inst.write("OUTP ON")

  V_SET = 5.0

  inst.write(f"VOLT {V_SET}")

  inst.write("CURR 3.0")

  inst.write("CAL:AUTO OFF")

  # ==================== 配置高速采样 ====================

  inst.write("SENS:VOLT:SAMP 4000")

  inst.write("SENS:VOLT:SRAT 1000000") # 1MHz 采样

  inst.write("SENS:VOLT:TRIG:SOUR IMM")

  # ==================== 触发阶跃 ====================

  inst.write("VOLT 4.0")

  inst.write("*WAI")

  inst.write(f"VOLT {V_SET}")

  # ==================== 读取波形 ====================

  inst.write("INIT")

  wave = inst.query("FETC:VOLT:ARR?")

  V = np.array([float(x) for x in wave.split(',')])

  t = np.arange(len(V)) * 1e-6 # 时间(秒)

  # ==================== 自动计算过冲 & 恢复时间 ====================

  V_steady = np.mean(V[-500:]) # 稳态电压

  V_max = np.max(V) # 过冲峰值

  overshoot = V_max - V_steady # 过冲幅度

  overshoot_pct = overshoot / V_steady * 100

  # 恢复时间:进入 ±0.1% 误差带并不再跳出

  tolerance = 0.001

  in_band = np.abs(V - V_steady) <= V_steady * tolerance

  # 找到第一次持续进入带内的时间

  for i in range(len(in_band)):

  if all(in_band[i:]):

  settle_time = t[i] * 1000 # 转 ms

  break

  # ==================== 输出结果 ====================

  print(f"稳态电压: {V_steady:.4f} V")

  print(f"过冲峰值: {V_max:.4f} V")

  print(f"过冲幅度: {overshoot:.4f} V ({overshoot_pct:.2f}%)")

  print(f"恢复时间: {settle_time:.3f} ms")

  inst.close()

  六、典型输出结果

  plaintext

  稳态电压: 5.0002 V

  过冲峰值: 5.0352 V

  过冲幅度: 0.0350 V (0.70%)

  恢复时间: 1.825 ms

  七、如果你只想用 SCPI 快速看(不写代码)

  你可以用这3 条指令快速获取过冲:

  scpi

  VOLT 4.0

  VOLT 5.0

  MEAS:VOLT:MAX? << 直接返回过冲电压

  但恢复时间必须读波形算,电源不直接返回。

  八、一句话总结(最核心)

  过冲可用 MEAS:VOLT:MAX? 直接读;