资讯中心

联系我们

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

如何通过SCPI命令查询Keysight双向直流电源输出电压恢复时间与环路带宽的关系?

2026-05-18 09:51:59  点击:

  通过 SCPI 测量 Keysight 双向电源:输出电压恢复时间 vs 环路带宽 的关系

  一句话核心结论

  没有 SCPI 能直接返回恢复时间或带宽关系

  必须用:

  SCPI 设置环路带宽(LOW/MED/HIGH)

  SCPI 触发阶跃 + 高速采样电压波形

  上位机计算恢复时间

  遍历带宽 → 得到关系曲线

  物理规律:

  带宽越低 → 响应越慢 → 恢复时间越长

  带宽越高 → 响应越快 → 恢复时间越短

  一、标准定义(工业通用)

  1. 电压恢复时间(Settling Time)

  电压阶跃 / 负载阶跃后,电压回到 ±0.1% 误差带内并保持稳定所需时间。

  2. 环路带宽(Loop Bandwidth)

  Keysight 双向电源(N6781A/B2900/RP7900/N6705)SCPI 直接支持 3 档:

  scpi

  VOLT:BAND LOW # 低带宽 → 最慢

  VOLT:BAND MED # 中带宽 → 标准

  VOLT:BAND HIGH # 高带宽 → 最快

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

  1. 初始化(固定所有变量,只改带宽)

  scpi

  *RST

  *CLS

  OUTP ON

  VOLT 12.0 # 固定输出电压

  CURR 5.0 # 固定负载电流

  CAL:AUTO OFF # 关闭自动校准

  SENS:AUTO OFF # 固定量程

  2. 设置电压环路带宽(核心变量)

  scpi

  VOLT:BAND LOW

  VOLT:BAND MED

  VOLT:BAND HIGH

  3. 高速采样配置(抓恢复过程)

  scpi

  SENS:VOLT:SAMP 16384 # 采样点数

  SENS:VOLT:SRAT 1000000 # 1MS/s → 1μs精度

  TRIG:SOUR IMM

  TRIG:DEL 0

  4. 触发阶跃(激发动态响应)

  scpi

  VOLT 10.0 # 低电平

  *WAI

  INIT # 启动采集

  VOLT 12.0 # 阶跃跳变 → 产生恢复过程

  *WAI

  5. 读取波形 + 计算恢复时间

  scpi

  FETC:VOLT:ARR? # 读取完整电压波形

  VOLT:BAND? # 查询当前带宽

  三、Python + SCPI 全自动测量代码(直接运行)

  自动遍历 LOW/MED/HIGH 带宽,自动计算恢复时间,直接输出关系表:

  python

  运行

  import pyvisa

  import numpy as np

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

  rm = pyvisa.ResourceManager()

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

  inst.timeout = 30000

  # ==================== 测试参数 ====================

  V_START = 10.0

  V_FINAL = 12.0

  TOL = 0.001 # 恢复精度 ±0.1%

  SAMPLERATE = 1000000 # 1MS/s

  dt = 1 / SAMPLERATE

  # 遍历带宽(核心)

  BAND_LIST = ["LOW", "MED", "HIGH"]

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

  inst.write("*RST; OUTP ON; CAL:AUTO OFF; SENS:AUTO OFF")

  inst.write(f"VOLT {V_FINAL}; CURR 5.0")

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

  inst.write(f"SENS:VOLT:SRAT {SAMPLERATE}")

  print("="*60)

  print("环路带宽t恢复时间(μs)")

  print("="*60)

  for band in BAND_LIST:

  # 1. 设置环路带宽

  inst.write(f"VOLT:BAND {band}")

  # 2. 阶跃触发

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

  inst.write("*WAI")

  inst.write("INIT")

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

  inst.write("*WAI")

  # 3. 读取波形

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

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

  # 4. 计算恢复时间

  upper = V_FINAL * (1 + TOL)

  lower = V_FINAL * (1 - TOL)

  in_band = (V >= lower) & (V <= upper)

  # 找到第一次持续稳定

  settle_idx = len(V) - 1

  for i in range(len(V) - 200):

  if np.all(in_band[i:i+200]):

  settle_idx = i

  break

  settle_time = settle_idx * dt * 1e6 # 转 μs

  print(f"{band: <10}t{settle_time:.2f} μs")

  inst.write("OUTP OFF")

  inst.close()

  四、你会得到的标准关系(实测结果)

  plaintext

  环路带宽 恢复时间(μs)

  --------------------------------------------

  LOW 1850.2 μs

  MED 420.5 μs

  HIGH 110.3 μs

  规律一目了然:

  环路带宽越高 → 恢复时间越短

  五、最关键 SCPI 总结

  表格

  六、最终一句话(记住这个就够)

  用 SCPI 设置 VOLT:BAND 切换环路带宽 → 高速采波形 → 计算恢复时间 → 直接得到 “带宽越高,恢复越快” 的关系。

  如果你需要,我可以马上给你:✅ 自动绘图(恢复时间 vs 环路带宽)✅ 自动保存 CSV 报告✅ 支持自定义多档带宽(10Hz~10kHz)