资讯中心

联系我们

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

如何用SCPI指令实现双向直流电源输出电压与电流的相位同步?

2025-12-22 09:59:20  点击:

要实现双向直流电源输出电压与电流的相位同步(即电压和电流按特定相位差同步变化,如模拟交流负载或功率因数控制),需结合电源的外部触发同步时序编程斜坡控制功能。由于标准直流电源通常不支持直接相位控制,需通过外部信号或软件编程间接实现。以下是具体方法和SCPI指令示例:


一、核心实现思路

  1. 外部同步触发
    • 使用外部信号(如函数发生器)生成同步触发信号,控制电压和电流的切换时序。
    • 通过电源的EXTernal触发模式实现相位同步。
  2. 时序编程
    • 在序列模式(List Mode)中分别定义电压和电流的时序点,并通过斜坡时间(Ramp Time)控制过渡速度,模拟相位差。
  3. 软件同步(无硬件触发时)
    • 通过编程语言(如Python)发送同步SCPI指令,控制电压和电流的切换时间。

二、SCPI指令实现方法

方法1:外部触发同步(推荐)

(1)硬件连接

  • 使用函数发生器生成两路同步信号(如TTL脉冲):
    • 信号1:触发电压变化(如0°相位)。
    • 信号2:触发电流变化(如90°相位差)。
  • 将信号接入电源的Trigger In接口(需确认支持多通道触发)。

(2)SCPI指令配置

plaintext* 配置电压通道(通道1):外部触发,上升沿响应TRIGger:SOURce1 EXTernal         ; 通道1触发源为外部
TRIGger:SLOPe1 POSitive          ; 上升沿触发

* 配置电流通道(通道2):外部触发,延迟90°相位
TRIGger:SOURce2 EXTernal         ; 通道2触发源为外部
TRIGger:SLOPe2 POSitive          ; 上升沿触发
TRIGger:DELay2 0.0025            ; 延迟2.5ms(假设周期为10ms,对应90°相位差)

* 启用触发模式
INITiate:IMMediate               ; 准备触发(部分电源需先初始化)

(3)序列点定义

plaintext* 电压序列(通道1)SOURce1:LIST:COUNt 2
SOURce1:LIST:VOLTage:DATA1 12, 0.5, 0.1  ; 12V,保持0.5秒,斜坡0.1秒
SOURce1:LIST:VOLTage:DATA2 0, 0.5, 0.1   ; 0V,保持0.5秒,斜坡0.1秒

* 电流序列(通道2,相位延迟)
SOURce2:LIST:COUNt 2
SOURce2:LIST:CURRent:DATA1 1, 0.5, 0.1   ; 1A,保持0.5秒,斜坡0.1秒
SOURce2:LIST:CURRent:DATA2 0, 0.5, 0.1   ; 0A,保持0.5秒,斜坡0.1秒

* 启用序列模式
SOURce1:LIST:FUNCtion ON
SOURce2:LIST:FUNCtion ON
OUTPut ON                        ; 开启输出(等待外部触发)

方法2:软件时序同步(无外部触发)

若电源不支持多通道触发,可通过编程语言(如Python)发送同步指令,控制切换时间:

Python示例

pythonimport pyvisaimport timerm = pyvisa.ResourceManager()power = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR")# 定义电压和电流的时序参数voltage_points = [(12, 0.1), (0, 0.1)]  # (目标电压, 斜坡时间)current_points = [(1, 0.1), (0, 0.1)]   # (目标电流, 斜坡时间)cycle_time = 1.0                        # 总周期时间(秒)# 启动同步控制power.write("OUTP ON")while True:    for v, v_ramp in voltage_points:        power.write(f"SOUR:VOLT {v}")        power.write(f"SOUR:VOLT:RAMP:TIME {v_ramp}")        time.sleep(cycle_time * 0.5)  # 电压持续时间(半周期)    for i, i_ramp in current_points:        power.write(f"SOUR:CURR {i}")        power.write(f"SOUR:CURR:RAMP:TIME {i_ramp}")        time.sleep(cycle_time * 0.5)  # 电流持续时间(半周期)

效果:电压和电流按编程时序切换,通过time.sleep()控制相位差(需根据实际需求调整延迟)。


三、关键注意事项

  1. 电源功能限制
    • 大多数直流电源不支持直接相位控制,需通过外部触发或软件模拟。
    • 双向电源(如Keysight N6700C)可能支持更复杂的时序编程,需查阅手册确认。
  2. 斜坡时间匹配
    • 电压和电流的斜坡时间(RAMP:TIME)需一致,否则会破坏相位关系。
  3. 触发延迟校准
    • 外部触发时,使用TRIGger:DELay微调相位差(如1ms延迟≈36°相位差,假设周期为10ms)。
  4. 高速同步需求
    • 若需纳秒级同步,建议使用支持LAN/USB触发同步的高端电源(如Keysight SL系列)。

四、厂商差异与扩展指令

  • Keysight N6700系列
    • 支持多通道同步触发(TRIGger:CHANnel)。
    • 可通过SYSTem:SYNC实现多台设备同步。
  • Chroma 62000P系列
    • 使用PROG:LIST:TRIG指令配置触发延迟。
  • ITECH IT6000系列
    • 需分别配置电压/电流序列,并通过LIST:TRIG:SOURce选择触发源。

五、总结

  • 硬件同步:优先使用外部触发信号(如函数发生器)控制相位差。
  • 软件同步:通过编程语言(Python/LabVIEW)发送时序指令,适合低速场景。
  • 验证方法:用示波器监测电压/电流输出,检查实际相位差是否符合预期。

通过上述方法,可实现双向直流电源的电压与电流相位同步控制,适用于功率因数校正(PFC)、逆变器测试等应用场景。