资讯中心

联系我们

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

如何通过SCPI指令实现双向直流电源的序列执行与停止?

2025-12-08 11:45:54  点击:

要通过SCPI指令实现双向直流电源的序列执行与停止,需结合序列配置、触发控制及状态查询三类指令,具体操作流程如下:

一、序列配置指令

  1. 设置序列点数

    plaintextSOURce:LIST:COUNt <N>  // N为序列点数(如3表示3个电压/电流值)

    示例:

    plaintextSOUR:LIST:COUN 3  // 设置3个序列点
  2. 定义序列参数

    • 电压序列
      plaintextSOURce:LIST:VOLTage <V1>, <V2>, ..., <Vn>  // 设置每个点的目标电压
      示例:
      plaintextSOUR:LIST:VOLT 0, 12, 0  // 电压序列:0V → 12V → 0V
    • 电流序列(如需):
      plaintextSOURce:LIST:CURRent <I1>, <I2>, ..., <In>  // 设置每个点的目标电流
    • 持续时间
      plaintextSOURce:LIST:DWELl <T1>, <T2>, ..., <Tn>  // T为每段持续时间(单位:秒)
      示例:
      plaintextSOUR:LIST:DWEL 2, 2, 2  // 每段持续2秒
  3. 启用循环功能(可选)

    plaintextSOURce:LIST:CYCLe ON  // 启用循环输出SOURce:LIST:COUNt:REPeat <M>  // 设置循环次数(部分型号支持,如M=3表示循环3次)

    示例(Chroma 62000P系列):

    plaintextSOUR:LIST:LOOP 3  // 循环3次

二、触发控制指令

  1. 选择触发源

    • 内部触发(软件指令)
      plaintextTRIGger:SOURce IMMediate  // 通过软件命令触发
    • 外部触发(TTL信号)
      plaintextTRIGger:SOURce EXTernal  // 通过外部TTL信号触发TRIGger:SLOPe POSitive  // 上升沿触发(或NEGative为下降沿)
  2. 设置触发延迟(可选)

    plaintextOUTPut:TRIGger:DELay <T>  // 触发后延迟T秒输出(如T=0.5表示0.5秒延迟)
  3. 启动序列输出

    • 内部触发
      plaintextTRIGger:INITiate  // 发送触发信号,启动延迟计时
    • 外部触发
      将TTL高电平信号接入电源的
      Trigger In接口,电源在检测到指定边沿后自动启动输出。

三、停止序列输出

  1. 立即停止输出

    plaintextOUTPut:STATe OFF  // 关闭输出,停止当前序列
  2. 条件停止(如循环结束)

    • 若启用循环功能且设置循环次数(如SOUR:LIST:COUNt:REPeat 3),序列会在完成指定次数后自动停止。
    • 查询当前序列点序号,判断是否到达终点:
      plaintextSOURce:LIST:INDEx?  // 返回当前执行的序列点序号(如返回1表示第一个点)

四、完整操作示例

场景:配置3个电压序列点(0V→12V→0V),每段持续2秒,通过内部触发启动,运行1次后停止。

  1. 初始化与复位

    plaintextSYSTem:REMote  // 切换至远程模式*RST  // 复位设备(可选)
  2. 配置序列参数

    plaintextSOUR:LIST:COUN 3  // 3个序列点SOUR:LIST:VOLT 0, 12, 0  // 电压序列
    SOUR:LIST:DWEL 2, 2, 2  // 每段持续时间2秒
  3. 启动输出

    plaintextOUTP:STAT ON  // 启用输出(等待触发)TRIG:INIT  // 内部触发启动序列
  4. 停止输出(手动或条件停止)

    • 手动停止
      plaintextOUTP:STAT OFF  // 立即关闭输出
    • 条件停止(如循环结束):
      通过查询序列点序号判断是否完成:
      plaintextwhile True:    index = int(power.query("SOUR:LIST:INDEX?"))
         if index == 1 and is_first_cycle_complete:  // 假设通过其他逻辑判断循环结束
             power.write("OUTP OFF")
             break

五、关键注意事项

  1. 参数范围验证
    • 确保电压/电流值不超过电源规格(如最大电压40V、最大电流100A)。
    • 延迟时间(OUTPut:TRIGger:DELay)不超过电源支持的最大值(如部分电源最大延迟为10秒)。
  2. 触发时序同步
    • 若使用外部触发,需确保触发信号与序列启动同步,避免因信号抖动导致延迟时间不准确。
  3. 多设备同步
    • 多台电源同步时,可通过SYSTem:COMMunicate:SYNC指令配置主从设备:
      plaintextMASTER: SYST:COMM:SYNC:ROLE MASTER; SYST:COMM:SYNC:OUTP ONSLAVE: SYST:COMM:SYNC:ROLE SLAVE; SYST:COMM:SYNC:INP ON
  4. 错误处理
    • 若指令执行失败,通过以下指令查询错误代码:
      plaintextSYSTem:ERRor?  // 返回错误信息(如参数越限、触发未配置)

六、厂商差异与指令扩展

不同厂商的电源可能对指令有细微差异,例如:

  • Keysight N6700系列
    plaintextTRIGger:SOURce BUS  // 通过总线触发OUTPut:DELay 0.5  // 延迟指令可能直接集成在输出控制中
  • ITECH IT6000系列
    plaintextLIST:CYCLe:STATe ON  // 启用循环LIST:CYCLe:COUNt 5  // 循环5次