资讯中心

联系我们

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

如何用SCPI指令实现双向直流电源的序列输出与反馈?

2025-12-09 09:52:21  点击:

要通过SCPI指令实现双向直流电源的序列输出控制实时反馈监测,需结合序列编程(List Mode)触发控制状态查询功能。以下是详细实现方法及示例:


一、核心功能与指令

1. 序列输出控制

  • 设置序列点数
    scpiSOURce:LIST:COUNt <N>  ; 设置序列步数(如3步)
  • 定义电流/电压序列
    scpiSOURce:LIST:VOLTage <step>,<voltage>  ; 设置电压序列(如SOUR:LIST:VOLT 1,5.0)SOURce:LIST:CURRent <step>,<current>  ; 设置电流序列(如SOUR:LIST:CURR 2,-1.0)
  • 设置每步持续时间
    scpiSOURce:LIST:DWELl <step>,<time>  ; 时间单位通常为秒(s)或毫秒(ms)
  • 启用循环输出
    scpiSOURce:LIST:CYCLe ON  ; 启用无限循环SOURce:LIST:COUNt:REPeat <M>  ; 循环M次(部分设备支持)

2. 触发控制

  • 启动序列输出
    scpiOUTPut:STATe ON       ; 开启输出TRIGger:INITiate      ; 内部触发启动序列
  • 外部触发配置(可选)
    scpiTRIGger:SOURce BUS    ; 通过SCPI命令触发(默认)TRIGger:SOURce EXT    ; 外部TTL信号触发

3. 实时反馈监测

  • 查询当前输出值
    scpiMEASure:VOLTage?      ; 读取实时电压(如+5.000)MEASure:CURRent?      ; 读取实时电流(如-1.000)
  • 查询序列执行状态
    scpiSOURce:LIST:INDEx?    ; 返回当前序列步数(如2)OUTPut:STATe?         ; 查询输出是否开启(1=ON, 0=OFF)
  • 事件通知与错误处理
    scpiSYSTem:ERRor?         ; 查询最近错误(如"0,No error")STATus:OPERation:CONDition?  ; 查询操作状态(如序列完成标志)

二、完整操作示例

场景需求

  • 序列输出
    • 步1:电压5V,电流1A,持续2秒
    • 步2:电压-5V,电流-1A,持续2秒
    • 步3:电压0V,电流0A,持续1秒
  • 循环3次,并实时监测输出值。

SCPI指令流程

  1. 初始化设置

    scpiSYSTem:REMote         ; 进入远程模式*RST                  ; 复位设备(可选)
  2. 配置序列参数

    scpiSOURce:LIST:COUNt 3          ; 3步序列SOURce:LIST:VOLTage 1,5.0    ; 步1电压5V
    SOURce:LIST:CURRent 1,1.0    ; 步1电流1A
    SOURce:LIST:DWELl 1,2        ; 步1持续2秒

    SOURce:LIST:VOLTage 2,-5.0   ; 步2电压-5V
    SOURce:LIST:CURRent 2,-1.0   ; 步2电流-1A
    SOURce:LIST:DWELl 2,2        ; 步2持续2秒

    SOURce:LIST:VOLTage 3,0      ; 步3电压0V
    SOURce:LIST:CURRent 3,0      ; 步3电流0A
    SOURce:LIST:DWELl 3,1        ; 步3持续1秒

    SOURce:LIST:CYCLe ON         ; 启用循环
    SOURce:LIST:COUNt:REPeat 3   ; 循环3次(若设备支持)
  3. 启动输出并监测

    scpiOUTPut:STATe ON       ; 开启输出TRIGger:INITiate      ; 启动序列

    实时反馈查询(例如在Python中循环读取):

    pythonimport pyvisarm = pyvisa.ResourceManager()power = rm.open_resource("TCPIP0::192.168.1.100::INSTR")while True:    voltage = power.query("MEASure:VOLTage?")    current = power.query("MEASure:CURRent?")    step = power.query("SOURce:LIST:INDEx?")    print(f"Step {step}: Voltage={voltage}V, Current={current}A")    if step == "3" and not power.query("OUTPut:STATe?"):        break  # 序列完成
  4. 错误处理

    scpiSYSTem:ERRor?         ; 检查错误(如超时或过载)

三、厂商差异与高级功能

1. 厂商特定指令

  • Keysight N6700系列
    scpiSOURce:LIST:FUNC REPeat  ; 启用循环STATus:OPERation:EVENt? ; 查询序列完成事件
  • Chroma 62000P系列
    scpiSOURce:LIST:LOOP 3       ; 循环3次
  • ITECH IT6000系列
    scpiLIST:CYCLe:STATe ON      ; 启用循环LIST:CYCLe:COUNt 5       ; 循环5次

2. 高级功能

  • 动态调整序列(运行时修改参数):
    scpiSOURce:LIST:VOLTage 2,3.0  ; 将第2步电压改为3V
  • 外部触发同步
    scpiTRIGger:SOURce EXT       ; 外部TTL信号触发TRIGger:DELay 0.1        ; 触发延迟100ms

四、注意事项

  1. 单位一致性:确认电压(V)、电流(A)、时间(s/ms)的单位与设备匹配。
  2. 序列点数限制:部分电源最多支持100步序列。
  3. 实时反馈延迟:高频查询可能影响性能,建议合理设置采样间隔。
  4. 错误恢复:若序列中断,通过*RST或重新触发恢复。

通过上述方法,可实现双向直流电源的精确序列控制实时反馈监测,适用于电池充放电测试、电源模块老化等场景。具体指令需参考设备手册(如Keysight N6700、Chroma 62000P、ITECH IT6000等)。