在双向直流电源中,通过SCPI指令实现电流序列输出与电压测量同步,需结合列表编程(LIST Mode)和触发同步机制(如硬件触发或事件触发)。以下是详细实现方法及示例:
一、核心实现思路
电流序列输出:使用LIST:CURR定义电流步进序列,并通过LIST:REPet设置重复次数。
电压测量同步:在电流变化的每个步进点触发电压测量,可通过以下方式实现:
硬件触发:利用电源的触发输出(如TRIGger:OUTPut)同步至电压表的外部触发输入。
事件触发:在电流步进完成后发送SCPI命令触发电压表测量(如MEAS:VOLT?)。
时间同步:通过固定延迟(*WAI或SYST:TIMer)确保电流稳定后测量。
二、关键SCPI指令
1. 电源侧(电流输出控制)
plaintextSOUR:LIST:CURR
SOUR:LIST:ACTV 1 ; 激活列表模式
OUTP:STAT ON ; 开启输出
TRIG ; 触发执行(或通过外部信号触发)
2. 电压表侧(同步测量)
方法1:硬件触发同步
配置电源触发输出信号(如TTL脉冲)作为电压表的外部触发源:
plaintextTRIG:OUTP:SOUR BUS ; 触发源设为总线命令(可选)TRIG:OUTP:STAT ON ; 启用触发输出(连接至电压表EXT TRIG)
电压表需设置为外部触发模式(如INIT:CONT OFF; TRIG:SOUR EXT)。
方法2:事件触发测量
在电流步进后发送电压测量命令(需确保电流已稳定):
plaintextMEAS:VOLT? ; 查询电压值
3. 时间同步(软件延迟)
若硬件触发不可用,可通过延迟确保电流稳定:
plaintextSOUR:LIST:DWEL
MEAS:VOLT? ; 延迟后测量
三、完整实现示例
场景:电流序列 0A → 1A → 2A,每步停留1秒,同步测量电压。
方法1:硬件触发同步(推荐)
pythonimport pyvisarm = pyvisa.ResourceManager()psu = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR") # 电源dmm = rm.open_resource("TCPIP0::192.168.1.101::inst0::INSTR") # 电压表# 配置电源psu.write("SYST:REM")psu.write("OUTP:STAT OFF")psu.write("SOUR:LIST:CURR 0. 1.0. 2.0") # 电流序列psu.write("SOUR:LIST:DWEL 1000. 1000. 1000") # 每步停留1秒psu.write("SOUR:LIST:REPet 1") # 重复1次psu.write("TRIG:OUTP:SOUR BUS") # 触发源为总线命令psu.write("TRIG:OUTP:STAT ON") # 启用触发输出# 配置电压表(外部触发模式)dmm.write("INIT:CONT OFF") # 单次触发模式dmm.write("TRIG:SOUR EXT") # 外部触发# 启动同步psu.write("OUTP:STAT ON")psu.write("TRIG") # 触发电源输出,同时输出触发信号至电压表
方法2:软件延迟同步
pythonimport pyvisaimport timerm = pyvisa.ResourceManager()psu = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR")dmm = rm.open_resource("TCPIP0::192.168.1.101::inst0::INSTR")psu.write("SYST:REM")psu.write("OUTP:STAT OFF")psu.write("SOUR:LIST:CURR 0. 1.0. 2.0")psu.write("SOUR:LIST:DWEL 1000. 1000. 1000") # 每步停留1秒psu.write("SOUR:LIST:REPet 1")# 手动触发并同步测量psu.write("OUTP:STAT ON")psu.write("TRIG") # 启动电流序列time.sleep(0.5) # 等待电流变化(根据实际响应调整)volt = dmm.query("MEAS:VOLT?") # 测量电压print(f"Voltage: {volt}V")
四、注意事项
设备兼容性
不同厂商的触发机制可能不同(如Keysight支持TRIG:OUTP,而Chroma可能使用SOUR:TRIG)。
电压表需支持外部触发(如Keysight 34465A的INIT:CONT OFF + TRIG:SOUR EXT)。
电流稳定时间
双向电源在电流切换时可能需要延迟(如DWEL时间),确保测量时输出已稳定。
数据记录
若需记录多组数据,可通过脚本循环发送MEAS:VOLT?并保存结果。
错误处理
添加查询指令验证设置(如SOUR:LIST:CURR?),避免因指令错误导致不同步。
五、扩展功能
多通道同步:若电源和电压表均支持多通道,可通过通道前缀(如SOUR1:LIST:CURR)实现多路同步。
事件日志:部分电源支持SYST:LOG记录触发事件,便于调试时序问题。
通过上述方法,可实现电流序列输出与电压测量的精确同步,适用于电池测试、DUT特性分析等场景。