SCPI 查询 Keysight 双向直流电源:电压恢复时间 ↔ 负载电流 关系
核心结论
无直读恢复时间专用 SCPI 指令,依靠程控切换负载电流 + 高速电压采样 + 上位机判稳计算实现
标准定义:扰动后电压进入稳态误差带并持续稳定的时长
规律:负载电流越大,输出压降越大,环路调节量增加,电压恢复时间越长
一、SCPI 核心指令集
1. 仪器初始化(固定基准工况)
scpi
*RST
*CLS
OUTP ON
VOLT 24.0 ; 固定目标输出电压
CAL:AUTO OFF ; 关闭自动校准,避免动态响应偏移
SENS:AUTO OFF
VOLT:BAND MED ; 固定电压环路带宽,单一变量仅改电流
2. 程控设置梯度负载电流(核心变量)
scpi
CURR 1.0 ; 轻载电流
CURR 3.0 ; 中载电流
CURR 6.0 ; 重载电流
*WAI ; 等待输出稳态
3. 配置高速采样抓取恢复全过程
scpi
SENS:VOLT:SAMP 16384 ; 采样点数
SENS:VOLT:SRAT 1000000 ; 1MS/s 采样率,1μs时间精度
TRIG:SOUR IMM
TRIG:DEL 0
4. 施加电流阶跃扰动(激发电压波动)
scpi
CURR 0.5 ; 初始轻载稳态
*WAI
INIT ; 启动波形采集
CURR 6.0 ; 阶跃切换至目标负载电流,产生电压跌落/波动
*WAI
5. 读取波形与辅助参数
scpi
FETC:VOLT:ARR? ; 读取完整电压时域波形
MEAS:VOLT? ; 读取最终稳态电压
MEAS:TEMP? ; 同步读取模块温度,排除温漂干扰
CURR? ; 确认实际负载电流
6. 参数查询指令
scpi
VOLT:BAND? ; 查询当前环路带宽
SENS:VOLT:SRAT? ; 查询采样速率
二、恢复时间判定规则
设稳态标称电压 Vset误差带常用:±0.1%Vset
电流阶跃后电压发生偏移
判定电压首次进入误差带,且后续连续采样点不再超出
从阶跃触发时刻到稳定时刻的时长 = 电压恢复时间
三、Python+SCPI 全自动测试代码
python
运行
import pyvisa
import numpy as np
# 仪器连接
rm = pyvisa.ResourceManager()
inst = rm.open_resource("TCPIP0::仪器IP::inst0::INSTR")
inst.timeout = 30000
# 测试配置
V_STD = 24.0
TOL_RANGE = V_STD * 0.001 # ±0.1%误差带
SAMPLE_RATE = 1000000
TIME_STEP = 1 / SAMPLE_RATE
# 梯度负载电流序列
LOAD_CUR_LIST = [1. 2. 3. 4. 5. 6]
# 仪器初始化
inst.write("*RST")
inst.write("OUTP ON")
inst.write(f"VOLT {V_STD}")
inst.write("CAL:AUTO OFF")
inst.write("VOLT:BAND MED")
print("负载电流(A) 电压恢复时间(μs)")
print("-"*40)
for load_i in LOAD_CUR_LIST:
# 初始低电流稳态
inst.write("CURR 0.5")
inst.write("*WAI")
# 配置采样
inst.write("SENS:VOLT:SAMP 16384")
inst.write(f"SENS:VOLT:SRAT {SAMPLE_RATE}")
# 阶跃切换负载电流
inst.write("INIT")
inst.write(f"CURR {load_i}")
inst.write("*WAI")
# 读取电压波形
wave_data = inst.query("FETC:VOLT:ARR?")
volt_array = np.array([float(v) for v in wave_data.split(",")])
# 筛选稳定区间
stable_upper = V_STD + TOL_RANGE
stable_lower = V_STD - TOL_RANGE
stable_flag = np.logical_and(volt_array >= stable_lower, volt_array <= stable_upper)
# 查找首次持续稳定点
settle_index = None
for idx in range(len(stable_flag)):
if np.all(stable_flag[idx:idx+200]):
settle_index = idx
break
restore_time = settle_index * TIME_STEP * 1e6 if settle_index else 0
print(f"{load_i:>6} {restore_time:.2f}")
inst.write("OUTP OFF")
inst.close()
四、实测对应关系
轻载小电流:电压波动幅度小,环路调节压力小,恢复时间最短
中载电流:恢复时间平稳递增
重载大电流:电压偏移量大,闭环调节过程变长,恢复时间显著增加
同电流下:灌电流模式恢复时间略长于源电流模式
五、测试收尾复位 SCPI
scpi
ABORT ; 终止波形采集
VOLT:BAND MED ; 恢复默认环路带宽
CURR 0 ; 清零输出电流
OUTP OFF
*RST
六、关键注意事项
全程固定输出电压、环路带宽、环境温度,仅更改负载电流,保证单一变量
采样率越高,恢复时间计算精度越高
容性负载搭配大电流负载,会进一步拉长电压恢复时间
避免测试过程中开启自动量程、自动校准,干扰动态响应数据