资讯中心

联系我们

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

如何通过SCPI查询Keysight双向直流电源输出阻抗?

2026-04-03 09:40:44  点击:

  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}Ω")