资讯中心

联系我们

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

SCPI指令如何实现双向直流电源输出电压序列的批量设置?

2025-12-17 10:13:02  点击:

通过SCPI指令实现双向直流电源输出电压序列的批量设置,需结合电源的编程手册,利用列表(LIST)模式脚本(SCRIPT)功能一次性配置多个电压点、时间间隔及循环参数。以下是具体方法和优化策略:


一、批量设置的核心方法

1. 使用LIST模式(推荐)

大多数双向电源(如Keysight N6700、ITECH IT6000系列)支持通过LIST指令批量设置电压序列,包括电压值、持续时间、循环次数等。

关键SCPI指令
  • 定义电压序列值(批量输入):

    scpiSOURce:VOLTage:LIST:VALue 10, 20, 30, 40, 50  ; 设置5个电压点(单位:V)
    • 部分电源支持数组形式:SOURce:VOLTage:LIST:VALue (10:10:50)(从10V到50V,步进10V)。
  • 批量设置时间间隔

    scpiSOURce:VOLTage:LIST:DWELl 0.5, 1.0, 0.5, 1.0, 0.5  ; 每个电压点对应持续时间(单位:秒)
    • 若时间间隔相同,可简化为:SOURce:VOLTage:LIST:DWELl 1.0(全部设为1秒)。
  • 设置循环次数

    scpiSOURce:VOLTage:LIST:COUNt 5  ; 序列循环5次(0表示无限循环)
  • 启用列表模式并触发

    scpiSOURce:VOLTage:LIST:STATe ON  ; 开启列表模式OUTPut ON                     ; 开启输出
    INITiate:IMMediate            ; 立即启动序列
示例(Python + PyVISA)
pythonimport pyvisarm = pyvisa.ResourceManager()power = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR")# 批量设置电压序列和时间power.write("SOURce:VOLTage:LIST:VALue 10, 20, 30, 40, 50")power.write("SOURce:VOLTage:LIST:DWELl 0.5, 1.0, 0.5, 1.0, 0.5")power.write("SOURce:VOLTage:LIST:COUNt 2")  # 循环2次# 启动序列power.write("SOURce:VOLTage:LIST:STATe ON")power.write("OUTPut ON")power.write("INITiate:IMMediate")

2. 使用SCRIPT模式(高级电源)

部分高端电源(如Keysight SL系列)支持通过SCRIPT指令上传完整序列脚本,实现更复杂的批量控制。

示例脚本
scpiSCRIPT:TEXT "FOR i = 1 TO 5 STEP 1n" +            "  SOUR:VOLT {10*i}n" +      ; 动态设置电压(10V, 20V,...,50V)
           "  WAIT 1n" +                ; 等待1秒
           "NEXT i"
SCRIPT:RUN  ; 执行脚本

二、优化批量设置的技巧

1. 减少通信次数

  • 合并指令:通过分号(;)或换行符(n)合并多条SCPI指令,减少通信延迟。
    scpiSOURce:VOLTage:LIST:VALue 10,20,30; SOURce:VOLTage:LIST:DWELl 0.5,1.0,0.5; SOURce:VOLTage:LIST:COUNt 2

2. 使用二进制数据传输

  • 大容量序列:通过FORM:DATA BIN切换为二进制格式,提升传输效率(需电源支持)。
    scpiFORM:DATA BINSOURce:VOLTage:LIST:VALue #41020304050  ; 二进制格式(示例)

3. 预存序列到内存

  • 保存序列:将常用序列保存到电源内存,后续直接调用。
    scpiDATA:SAVE "SEQ1"  ; 保存当前序列DATA:RECall "SEQ1" ; 调用序列

三、常见问题与解决

1. 序列长度限制

  • 问题:电源可能限制序列点数(如最多100点)。
  • 解决
    • 分段上传序列(如先设置前50点,触发后再设置后50点)。
    • 使用SCRIPT模式动态生成序列。

2. 指令不兼容

  • 问题:不同品牌电源的LIST指令差异(如ITECH用VOLT:LIST而非SOUR:VOLT:LIST)。
  • 解决
    • 查阅编程手册,确认指令前缀(如SOUR vs INST)。
    • 使用*IDN?查询设备型号,自动匹配指令集。

3. 实时监控与调试

  • 问题:批量设置后需验证输出是否符合预期。
  • 解决
    • 通过MEASure:VOLTage?轮询当前电压。
    • 使用SYSTem:ERRor?检查错误(如序列点数超限)。

四、完整案例(Keysight N6700系列)

需求:输出电压序列[5V, 10V, 15V, 20V],每个值持续0.1s,循环3次,立即触发。

pythonimport pyvisarm = pyvisa.ResourceManager()power = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR")# 批量配置序列commands = [    "*RST",                                 # 复位    "SOURce:VOLTage:LIST:VALue 5, 10, 15, 20",    "SOURce:VOLTage:LIST:DWELl 0.1, 0.1, 0.1, 0.1",    "SOURce:VOLTage:LIST:COUNt 3",    "SOURce:VOLTage:LIST:STATe ON",    "OUTPut ON",    "INITiate:IMMediate"]power.write(";".join(commands))  # 合并指令# 监控输出for _ in range(10):    print(f"Voltage: {power.query('MEASure:VOLTage?')}V")    time.sleep(0.1)

五、总结

  • LIST模式:适合大多数电源,通过VALueDWELlCOUNt批量设置。
  • SCRIPT模式:适合复杂序列,支持动态计算和循环。
  • 优化技巧:合并指令、二进制传输、预存序列。
  • 调试工具*IDN?SYSTem:ERRor?MEASure?

通过以上方法,可高效实现双向直流电源电压序列的批量配置,适用于自动化测试、老化试验等场景。