SCPI 实测:Keysight 双向电源 输出电压过冲时间 ↔ 负载类型 关系
核心结论
无原生 SCPI 直读过冲时间、无负载类型关联查询指令
测试逻辑:SCPI 程控切换三类典型负载 → 高速采集电压阶跃波形 → 解析提取过冲时长 / 恢复时间 → 建立对应关系
主流负载类型:纯电阻负载、容性负载、感性负载
一、负载类型对过冲的影响规律
电阻负载:响应平顺,过冲小、过冲时间最短
容性负载:电容储能充放电,电压回弹明显,过冲大、过冲时间大幅拉长
感性负载:电感电流续流抑制突变,过冲偏小,但振荡拖尾久,恢复时间变长
二、SCPI 核心程控指令
1. 仪器通用初始化
scpi
*RST
*CLS
OUTP ON
VOLT 15.0 ; 固定输出基准电压
CURR 5.0 ; 限定最大输出电流
CAL:AUTO OFF ; 关闭自动校准,保证动态响应纯净
SENS:AUTO OFF
2. SCPI 模拟 / 配置三类负载(双向电源专用)
① 纯电阻负载
恒定阻性工况,电流跟随电压线性变化
scpi
LOAD:TYPE RES ; 设定阻性负载模式
LOAD:RES 3.0 ; 设置负载电阻值
② 容性负载
模拟电容负载,设置等效电容值
scpi
LOAD:TYPE CAP
LOAD:CAP 100e-6 ; 100μF 等效容性负载
③ 感性负载
模拟电感负载,设置等效电感值
scpi
LOAD:TYPE IND
LOAD:IND 10e-3 ; 10mH 等效感性负载
无内置负载模式机型:通过外接电子负载SCPI 同步程控切换负载类型
3. 高速波形采集(抓取过冲时序)
scpi
SENS:VOLT:SAMP 5000
SENS:VOLT:SRAT 1000000 ; 1MS/s 采样,精准抓取微秒级过冲
TRIG:SOUR IMM
INIT
FETC:VOLT:ARR? ; 读取完整电压瞬态波形
4. 阶跃触发(激发电压过冲)
scpi
VOLT 12.0
*WAI
VOLT 15.0 ; 电压阶跃爬升,产生过冲
5. 辅助查询指令
scpi
LOAD:TYPE? ; 查询当前负载类型
MEAS:VOLT:MAX? ; 查询过冲峰值电压
MEAS:CURR? ; 读取负载实际电流
三、标准化测试流程
固定输出电压、环路带宽、环境温度,仅切换负载类型单一变量
依次切换:电阻→容性→感性,设置同等等效负载功率
每组负载下执行电压阶跃,SCPI 采集瞬态波形
上位机算法提取:峰值过冲、过冲持续时间、电压恢复时间
汇总数据,形成「负载类型 - 过冲时间」对应数据表
判定标准
过冲区间:稳态电压 ±1% 以外区间
过冲时间:电压超出阈值的持续时长
恢复时间:回归稳态 0.1% 误差带的总时长
四、Python+SCPI 自动化测试脚本
python
运行
import pyvisa
import numpy as np
rm = pyvisa.ResourceManager()
inst = rm.open_resource("TCPIP0::仪器IP::inst0::INSTR")
inst.timeout = 25000
# 基础配置
V_SET = 15.0
TOL_OVER = 0.01 # 1%过冲阈值
TOL_SETTLE = 0.001 # 0.1%恢复阈值
# 负载测试序列
load_cfg = [
("RES", "阻性负载"),
("CAP", "容性负载"),
("IND", "感性负载")
]
# 仪器初始化
inst.write("*RST")
inst.write("OUTP ON")
inst.write(f"VOLT {V_SET}")
inst.write("CAL:AUTO OFF")
print("负载类型t过冲幅度(V)t过冲时间(μs)t恢复时间(μs)")
print("-"*60)
for load_code, load_name in load_cfg:
# 切换负载类型
inst.write(f"LOAD:TYPE {load_code}")
inst.write("*WAI")
# 电压阶跃激发过冲
inst.write("VOLT 12.0")
inst.write("*WAI")
inst.write(f"VOLT {V_SET}")
# 配置采样并采集波形
inst.write("SENS:VOLT:SAMP 5000")
inst.write("SENS:VOLT:SRAT 1000000")
inst.write("INIT")
wave_data = inst.query("FETC:VOLT:ARR?")
volt_arr = np.array([float(v) for v in wave_data.split(",")])
time_arr = np.arange(len(volt_arr)) * 1 # 单位μs
# 数据计算
v_steady = np.mean(volt_arr[-800:])
v_peak = np.max(volt_arr)
over_amp = v_peak - v_steady
# 计算过冲时间
over_flag = volt_arr > v_steady*(1+TOL_OVER)
over_time = time_arr[over_flag][-1] - time_arr[over_flag][0] if np.any(over_flag) else 0
# 计算恢复时间
settle_flag = np.abs(volt_arr-v_steady) <= v_steady*TOL_SETTLE
settle_idx = next((i for i in range(len(settle_flag)) if all(settle_flag[i:])), len(settle_flag)-1)
settle_time = time_arr[settle_idx]
print(f"{load_name}t{over_amp:.3f}tt{over_time:.1f}tt{settle_time:.1f}")
inst.write("OUTP OFF")
inst.close()
五、实测典型数据关系
表格
六、常用 SCPI 复位终止指令
scpi
ABORT ; 终止波形采集
LOAD:TYPE RES ; 恢复默认阻性负载
*RST ; 仪器参数全复位
OUTP OFF ; 关闭输出
七、关键注意事项
双向电源源模式 / 灌模式下,同类型负载过冲特性存在差异,需分开测试
容性负载容量越大、感性负载电感量越大,过冲时间延长越明显
测试时统一负载等效功率,避免负载功率不一致影响实验结论
无内置负载切换的电源,搭配可编程电子负载,双设备 SCPI 联动程控