Keysight双向直流电源通常不直接支持通过SCPI指令查询输出阻抗,但可通过以下方法间接测量或验证:
一、基于电压-电流响应的间接测量法
原理
输出阻抗 Zout 可通过小信号扰动法计算:
Zout=ΔIΔV
其中 ΔV 为输出电压变化量,ΔI 为负载电流变化量。
SCPI指令实现步骤
设置初始状态:
plaintext:OUTPut:STATe ON ; 开启输出:SOURce:VOLTage:LEVel 5 ; 设置初始电压为5V(根据需求调整)
注入小信号扰动:
通过外部电子负载或电源内置序列功能(如N6700系列支持列表模式)施加电流阶跃(如从1A突变为1.1A):
plaintext:SOURce:LIST:FUNCtion CURRent ; 选择电流序列模式:SOURce:LIST:CURRent 1. 1.1 ; 定义电流序列点(单位:A)
:SOURce:LIST:COUNt 2 ; 设置序列点数
:SOURce:LIST:ADVance:COUNter 1 ; 启动序列(部分型号需手动触发)
测量电压响应:
使用示波器或电源内置测量功能捕获电压变化,或通过SCPI查询电压值:
plaintext:MEASure:VOLTage? ; 查询实时电压值(需结合序列触发同步)
计算阻抗:
根据记录的 ΔV 和 ΔI 计算 Zout。
二、利用电源内置功能(部分型号支持)
输出阻抗模拟功能
部分Keysight电源(如RP7900系列)支持可编程输出电阻,可通过SCPI设置模拟阻抗值:
plaintext:SOURce:RESistance -0.04. 1 ; 设置输出电阻范围(-0.04Ω至1Ω)
注:此功能用于模拟电池内阻等场景,非直接测量输出阻抗。
序列模式下的动态响应测试
通过序列模式模拟负载突变,结合电压/电流测量间接推导阻抗:
plaintext:SOURce:LIST:FUNCtion VOLTage ; 选择电压序列模式(需配合外部电流测量):SOURce:LIST:VOLTage 5. 4.5 ; 定义电压序列点(模拟负载突变)
:TRIGger:SOURce IMMediate ; 立即触发序列
三、验证与调试建议
误差控制
确保扰动信号幅度足够小(通常为额定电流的5%-10%),避免进入非线性区。
使用高精度测量设备(如Keysight DSOX2002A示波器)捕获动态响应。
指令兼容性
不同型号电源的SCPI指令可能存在差异,需参考具体型号的《编程手册》(如N6705C支持 :SOURce:LIST:STATe? 查询序列状态)。
示例:查询N6700系列序列状态
plaintext:SOURce:LIST:FUNCtion? ; 返回"CURRent"或"VOLTage"表示序列模式:SOURce:LIST:ADVance:COUNter? ; 返回当前序列点序号
自动化脚本示例(Python + PyVISA)
pythonimport pyvisarm = pyvisa.ResourceManager()power_supply = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR")# 设置初始电压并开启输出power_supply.write(":OUTPut:STATe ON")power_supply.write(":SOURce:VOLTage:LEVel 5")# 注入电流扰动(需外部负载或序列模式支持)power_supply.write(":SOURce:LIST:FUNCtion CURRent")power_supply.write(":SOURce:LIST:CURRent 1. 1.1")power_supply.write(":SOURce:LIST:COUNt 2")power_supply.write(":SOURce:LIST:ADVance:COUNter 1")# 测量电压变化(需同步触发)v1 = float(power_supply.query(":MEASure:VOLTage?"))# 假设通过其他方式触发序列并延迟后测量import time; time.sleep(0.1) # 示例延迟,实际需根据电源响应时间调整v2 = float(power_supply.query(":MEASure:VOLTage?"))# 计算阻抗(假设电流步进0.1A)delta_v = v1 - v2delta_i = 0.1z_out = delta_v / delta_iprint(f"输出阻抗: {z_out:.2f}Ω")