资讯中心

联系我们

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

如何通过SCPI指令实现双向直流电源的嵌套循环(即循环内再循环)?

2025-12-09 09:18:06  点击:

要通过SCPI指令实现双向直流电源的嵌套循环(循环内再循环),需结合序列模式(List Mode)的循环控制指令与外部脚本逻辑,或利用电源支持的子序列嵌套功能。以下是具体实现方法及示例:

方法一:利用序列模式与外部脚本实现嵌套循环

若电源支持序列模式但无直接嵌套指令,可通过外部脚本(如Python)控制循环层级,每层循环发送不同的序列配置。

操作步骤

  1. 配置外层循环序列
    设置外层循环的电压/电流序列及持续时间,例如3个点(0V→12V→0V,每段2秒):

    plaintextSOURce:LIST:COUNt 3SOURce:LIST:VOLTage 0, 12, 0
    SOURce:LIST:DWELl 2, 2, 2
  2. 启用外层循环
    启用序列循环并设置次数(部分电源支持):

    plaintextSOURce:LIST:CYCLe ONSOURce:LIST:COUNt:REPeat 2  // 外层循环2次
  3. 配置内层循环序列
    在每次外层循环中,通过脚本重新配置内层序列(如电压阶跃更细分的序列):

    plaintext// 示例:内层序列(需通过脚本动态发送)SOURce:LIST:COUNt 4
    SOURce:LIST:VOLTage 0, 6, 12, 6
    SOURce:LIST:DWELl 1, 1, 1, 1
    SOURce:LIST:CYCLe ON
    SOURce:LIST:COUNt:REPeat 3  // 内层循环3次
  4. 启动输出与循环控制
    通过脚本控制循环逻辑,例如:

    pythonimport pyvisaimport timerm = pyvisa.ResourceManager()power = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR")# 外层循环配置power.write("SOUR:LIST:COUN 3")power.write("SOUR:LIST:VOLT 0, 12, 0")power.write("SOUR:LIST:DWEL 2, 2, 2")power.write("SOUR:LIST:CYCL ON")power.write("SOUR:LIST:COUN:REP 2")  # 外层循环2次for outer_loop in range(2):  # 外层循环    power.write("TRIG:INIT")  # 启动外层序列    time.sleep(6)  # 等待外层序列完成(2秒×3点)    # 内层循环配置(动态发送)    power.write("SOUR:LIST:COUN 4")    power.write("SOUR:LIST:VOLT 0, 6, 12, 6")    power.write("SOUR:LIST:DWEL 1, 1, 1, 1")    power.write("SOUR:LIST:CYCL ON")    power.write("SOUR:LIST:COUN:REP 3")  # 内层循环3次    for inner_loop in range(3):  # 内层循环        power.write("TRIG:INIT")        time.sleep(4)  # 等待内层序列完成(1秒×4点)

方法二:利用电源支持的子序列嵌套功能

部分高端电源(如Keysight N6700系列、ITECH IT6000系列)支持子序列嵌套,可直接通过SCPI指令实现多层循环。

操作步骤

  1. 配置主序列与子序列
    设置主序列和子序列的电压/电流参数及持续时间:

    plaintext// 主序列(外层循环)SOURce:LIST:COUNt 2
    SOURce:LIST:VOLTage 0, 12
    SOURce:LIST:DWELl 5, 5

    // 子序列(内层循环,需电源支持子序列功能)
    SOURce:SUBLIST:COUNt 3
    SOURce:SUBLIST:VOLTage 0, 6, 12
    SOURce:SUBLIST:DWELl 1, 1, 1
  2. 启用嵌套循环
    启用主序列和子序列的循环功能:

    plaintextSOURce:LIST:CYCLe ONSOURce:LIST:COUNt:REPeat 2  // 主序列循环2次
    SOURce:SUBLIST:CYCLe ON
    SOURce:SUBLIST:COUNt:REPeat 3  // 子序列循环3次
  3. 启动输出
    发送触发命令启动序列:

    plaintextTRIGger:INITiate

关键注意事项

  1. 指令兼容性
    不同厂商的电源指令可能存在差异,需参考具体型号的编程手册(如Keysight N6700系列使用
    SOUR:LIST:FUNC REPeat,ITECH IT6000系列使用LIST:CYCL:COUNt)。

  2. 循环次数限制
    确保循环次数不超过电源支持的最大值(如部分电源最大循环次数为9999次)。

  3. 时间同步
    若需精确控制嵌套循环的时序,建议使用硬件触发(如TTL信号)或电源内置的时间戳功能。

  4. 错误处理
    通过查询错误代码(如
    SYST:ERR?)定位问题,例如参数越限或触发未配置。