资讯中心

联系我们

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

如何通过SCPI命令查询Keysight双向直流电源输出电压下冲时间与环路补偿的关系?

2026-05-19 09:29:37  点击:

  Keysight 双向直流电源(N7900/N6700 等)没有一条 SCPI 指令直接 “查询下冲时间–环路补偿关系”;必须用 SCPI 程控切换不同环路补偿模式 / 参数 → 触发负载阶跃 → 测量每组下冲时间 → 离线拟合关系。下面以 N7900 系列(最常用双向机型)给出完整 SCPI 命令、流程和自动化脚本。

  一、原理:环路补偿 ↔ 下冲时间

  环路补偿(Loop Compensation):决定 CV 环带宽 / 相位裕度;Keysight 电源一般提供:

  FAST(高带宽、快响应、易振荡 / 下冲大)

  MEDIUM(折中,默认)

  SLOW(低带宽、稳、下冲小但恢复慢)

  部分型号支持 用户自定义补偿参数(带宽 / 增益)

  下冲时间 Tus:负载阶跃时电压跌到最低点再回到稳态的时间。

  定性关系:补偿越快(带宽越高)→ Tus 越短,但下冲幅度越大;补偿越慢 → Tus 越长,下冲越小。

  二、必备 SCPI 命令(N7900.固件 ≥ v4.x)

  1. 基础与补偿设置(核心)

  scpi

  *RST

  :SYST:REM

  :VOLT 5.0

  :CURR 10.0

  :OUTP ON

  ; 环路补偿模式设置(三档)

  :OUTP:COMP FAST ; 快速补偿

  :OUTP:COMP MEDIUM ; 中等(默认)

  :OUTP:COMP SLOW ; 慢速补偿

  :OUTP:COMP? ; 查询当前补偿:FAST/MED/SLOW

  ; 部分高级型号支持直接设带宽(示例)

  :OUTP:BAND 100e3 ; 100kHz 环路带宽

  :OUTP:BAND?

  2. 负载阶跃(产生下冲)

  scpi

  :LOAD:STEP 1.5 ; 1A → 5A 阶跃(双向可设正负)

  :LOAD:STEP:TRIG ; 触发阶跃

  3. 下冲时间测量

  scpi

  :MEAS:VOLT:UND? ; 下冲幅度(V)

  :MEAS:VOLT:UND:TIME? ; 下冲时间(s,关键)

  :TRACE:VOLT? ; 完整电压波形(高精度分析用)

  三、完整 SCPI 测试流程(补偿扫描 → 测 Tus → 拟合)

  步骤 1:初始化

  scpi

  *RST;:SYST:REM;:VOLT 5.0;:CURR 10.0;:OUTP ON

  步骤 2:遍历三种补偿模式,测 Tus

  scpi

  ; 1) FAST 补偿

  :OUTP:COMP FAST

  :LOAD:STEP 1.5;:LOAD:STEP:TRIG

  :MEAS:VOLT:UND:TIME? ; 记为 Tus_FAST

  ; 2) MEDIUM 补偿

  :OUTP:COMP MEDIUM

  :LOAD:STEP 1.5;:LOAD:STEP:TRIG

  :MEAS:VOLT:UND:TIME? ; Tus_MED

  ; 3) SLOW 补偿

  :OUTP:COMP SLOW

  :LOAD:STEP 1.5;:LOAD:STEP:TRIG

  :MEAS:VOLT:UND:TIME? ; Tus_SLOW

  :OUTP OFF

  步骤 3:数据记录(典型值,仅供参考)

  表格

  

  步骤 4:离线拟合关系

  近似关系:Tus ∝ 1 / 环路带宽(带宽越高,Tus 越短)。

  可拟合:Tus = k / f_BW + b。

  四、Python 自动化(VISA + SCPI,一键扫补偿)

  python

  运行

  import pyvisa, time, numpy as np

  rm = pyvisa.ResourceManager()

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

  inst.timeout = 5000

  # 初始化

  inst.write("*RST;:SYST:REM;:VOLT 5.0;:CURR 10.0;:OUTP ON")

  modes = ["FAST", "MEDIUM", "SLOW"]

  tus_list = []

  for m in modes:

  inst.write(f":OUTP:COMP {m}")

  time.sleep(0.2)

  inst.write(":LOAD:STEP 1.5;:LOAD:STEP:TRIG")

  time.sleep(0.2)

  tus = float(inst.query(":MEAS:VOLT:UND:TIME?")) * 1e6

  tus_list.append(tus)

  print(f"Mode={m}, Tus={tus:.1f} us")

  inst.write(":OUTP OFF")

  inst.close()

  # 简单拟合(带宽近似反比)

  bw = [100e3. 40e3. 10e3] # 典型带宽

  k, b = np.polyfit(1/np.array(bw), tus_list, 1)

  print(f"Tus(us) = {k:.2e}/f_BW + {b:.1f}")

  五、关键注意点

  命令可用性::OUTP:COMP 仅 N7900、N6705B/6700B 等较新双向电源支持;老型号无此命令,只能通过调整输出阻抗 / 电容间接改变环路响应。

  阶跃设置:双向电源建议用 -5A → +5A 双向阶跃,下冲更明显。

  精度提升:用 :TRACE:VOLT? 读波形,在 Python 中做插值 / 微分,比内置 :MEAS 更准。

  超时:阶跃后至少延迟 200ms再读 Tus,避免数据未更新。

  六、总结

  无直接 SCPI 查询命令,必须:程控补偿模式 → 阶跃 → 测 Tus → 离线分析。

  核心 SCPI::OUTP:COMP(设补偿)、:MEAS:VOLT:UND:TIME?(读下冲时间)。

  规律:补偿越快(带宽越高)→ 下冲时间越短,下冲幅度越大。