测试双向直流电源的频率响应特性,需通过扫频激励信号输入、输出响应采集与数据分析,评估电源在动态负载或电网频率变化下的稳定性。以下是详细步骤、关键指令及优化方法:
频率响应特性反映电源对输入信号频率变化的响应能力,包括:
测试目标:验证电源在双向模式(源模式/负载模式)下,对动态负载或电网频率波动的适应能力,确保其在电动汽车充放电、储能系统等场景中的稳定性。
REF IN接口)。通过SCPI指令或面板设置电源为源模式,并配置基础参数:
plaintextSOUR:MODE SOUR // 切换至源模式SOUR:VOLT 48.0 // 设置输出电压为48V
SOUR:CURR 10.0 // 设置输出电流限值为10A
OUTP ON // 开启输出
生成低幅值正弦波作为激励信号(避免电源进入非线性区):
plaintextFREQ:SWE:STAR 1Hz // 扫频起始频率1HzFREQ:SWE:STOP 10kHz // 扫频终止频率10kHz
FREQ:SWE:SPAC LOG // 对数扫频(可选线性扫频`LIN`)
VOLT 0.5 // 信号幅值0.5V(根据电源灵敏度调整)
WAV:SOUR CHAN1指令)或SCPI脚本批量采集。math增益(dB) = 20 cdot log_{10}left(frac{V_{out}}{V_{in}}right)
plaintextSOUR:MODE DISC // 切换至负载模式(吸收能量)SOUR:VOLT 48.0 // 设置吸收电压为48V
SOUR:CURR 10.0 // 设置吸收电流限值为10A
pythonimport pyvisaimport numpy as npimport matplotlib.pyplot as pltrm = pyvisa.ResourceManager()power_supply = rm.open_resource('TCPIP0::192.168.1.100::inst0::INSTR')scope = rm.open_resource('TCPIP0::192.168.1.101::inst0::INSTR')freq_list = np.logspace(0, 4, 50) # 1Hz~10kHz对数扫频gain_list = []phase_list = []for freq in freq_list: # 设置信号发生器频率 scope.write(f"FREQ {freq}") # 采集输入/输出信号(简化示例,实际需同步触发) input_wave = scope.query_ascii_values("WAV:DATA? CHAN1") output_wave = scope.query_ascii_values("WAV:DATA? CHAN2") # 计算增益与相位(需FFT分析,此处简化) gain = np.mean(output_wave) / np.mean(input_wave) phase = np.angle(np.fft.fft(output_wave)) - np.angle(np.fft.fft(input_wave)) gain_list.append(20 * np.log10(gain)) phase_list.append(np.degrees(phase))# 绘制频率响应曲线plt.figure()plt.subplot(2,1,1)plt.semilogx(freq_list, gain_list)plt.title("幅频特性")plt.ylabel("增益(dB)")plt.subplot(2,1,2)plt.semilogx(freq_list, phase_list)plt.title("相频特性")plt.xlabel("频率(Hz)")plt.ylabel("相位(°)")plt.show()