资讯中心

联系我们

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

如何用SCPI指令配置双向直流电源输出电流序列的重复次数?

2025-12-12 09:59:56  点击:

要用SCPI指令配置双向直流电源输出电流序列的重复次数,需结合序列模式(List Mode)与循环控制指令,以下是具体步骤和示例:

一、核心指令与参数

  1. 设置序列点数量

    • 指令:SOURce:LIST:COUNt <N>
    • 参数:<N>为序列点总数(如3表示3个点)。
  2. 定义每个序列点的电流值与持续时间

    • 指令:SOURce:LIST:CURRent:DATA<n> <I_n>, <T_n>
    • 参数:
      • <n>:序列点序号(从1开始,如DATA1表示第1点)。
      • <I_n>:当前点的电流值(单位:A,如-10表示-10A)。
      • <T_n>:当前点的持续时间(单位:秒或电源支持的单位,如2表示2秒)。
  3. 启用循环功能并设置循环次数

    • 部分电源支持直接设置循环次数:
      • 指令:SOURce:LIST:COUNt:REPeat <M>
      • 参数:<M>为循环次数(如3表示循环3次)。
    • 若电源不支持直接设置循环次数,可通过启用循环功能后,在外部脚本中循环发送触发命令实现重复执行。
  4. 启用序列模式

    • 指令:SOURce:LIST:FUNCtion ON
    • 说明:确保序列功能已激活。

二、完整操作流程示例

  1. 初始化与复位

    • 指令:
      • SYSTem:REMote:进入远程模式。
      • *RST:复位设备(可选)。
  2. 配置序列参数

    • 指令:
      • SOURce:LIST:COUNt 3:设置3个序列点。
      • SOURce:LIST:CURRent:DATA1 -5, 2:第1点:-5A,持续2秒。
      • SOURce:LIST:CURRent:DATA2 0, 1:第2点:0A,持续1秒。
      • SOURce:LIST:CURRent:DATA3 10, 3:第3点:10A,持续3秒。
  3. 启用循环功能并设置循环次数

    • 指令(若电源支持):
      • SOURce:LIST:CYCLe ON:启用循环。
      • SOURce:LIST:COUNt:REPeat 3:循环3次。
  4. 启动输出

    • 指令:
      • OUTPut:STATe ON:开启输出,电源将按序列输出电流。

三、厂商差异与指令扩展

不同品牌电源的循环控制指令可能存在差异,以下为常见型号的示例:

  1. Keysight N6700系列

    • 启用循环:SOURce:LIST:FUNC REPeat
    • 设置序列点数:SOURce:LIST:COUNt 3
  2. Chroma 62000P系列

    • 循环次数:SOURce:LIST:LOOP 3
  3. ITECH IT6000系列

    • 启用循环:LIST:CYCLe:STATe ON
    • 设置循环次数:LIST:CYCLe:COUNt 5

四、验证与调试

  1. 查询当前序列状态

    • 指令:
      • SOURce:LIST:INDEx?:返回当前执行的序列点序号。
      • OUTPut:STATe?:返回输出状态(ON/OFF)。
  2. 错误处理

    • 指令:SYSTem:ERRor?:查询错误代码(如参数越限、触发未配置)。

五、自动化脚本示例(Python)

若需通过脚本实现循环控制,可结合SCPI指令与编程逻辑:

pythonimport pyvisaimport timerm = pyvisa.ResourceManager()power = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR")# 配置序列与循环power.write("SYST:REM")power.write("SOUR:LIST:COUN 3")power.write("SOUR:LIST:CURR:DATA1 -5, 2")power.write("SOUR:LIST:CURR:DATA2 0, 1")power.write("SOUR:LIST:CURR:DATA3 10, 3")power.write("SOUR:LIST:CYCL ON")  # 启用循环power.write("SOUR:LIST:COUN:REP 3")  # 循环3次(若电源支持)# 启动输出(内部触发)power.write("TRIG:INIT")# 监控状态(示例:循环3次后停止)for _ in range(3):    while True:        index = int(power.query("SOUR:LIST:INDEX?"))        if index == 1:  # 检测序列重新开始(循环点)            break        time.sleep(6)  # 等待一个完整循环power.write("OUTP OFF")power.close()