资讯中心

联系我们

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

如何用SCPI指令查询双向直流电源当前输出电流序列的状态?

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

要使用SCPI指令查询双向直流电源当前输出电流序列的状态,需结合序列模式(List Mode)的状态查询指令,获取序列的运行进度、当前点位置、循环次数等信息。以下是详细步骤和示例:

一、核心查询指令与参数

  1. 查询序列是否启用
    plaintextSOURce:LIST:FUNCtion?
    • 返回ONOFF,表示序列功能是否激活。
  2. 查询当前序列点位置
    plaintextSOURce:LIST:ADVance:COUNter?
    • 返回已执行的序列点序号(从1开始计数)。
    • 示例:若返回2,表示当前处于第2个序列点。
  3. 查询序列总点数
    plaintextSOURce:LIST:COUNt?
    • 返回序列中定义的总点数(如3表示3个点)。
  4. 查询循环状态与剩余次数
    • 循环是否启用
      plaintextSOURce:LIST:CYCLe:STATe?
      • 返回ONOFF,表示是否启用循环模式。
    • 剩余循环次数(部分型号支持):
      plaintextSOURce:LIST:CYCLe:COUNt:REMaining?
      • 返回剩余循环次数(若设置为无限循环,可能返回INF或特定值)。
  5. 查询当前输出电流值
    plaintextMEASure:CURRent?
    • 返回实际输出的电流值(单位:A),用于验证当前序列点是否生效。
  6. 查询序列运行状态
    plaintextOUTPut:STATe?
    • 返回ONOFF,确认输出是否开启(序列运行时输出应为ON)。

二、完整查询流程示例

  1. 检查序列是否启用

    plaintextSOURce:LIST:FUNCtion?  ; 返回"ON"表示序列已激活
  2. 获取序列总点数

    plaintextSOURce:LIST:COUNt?  ; 假设返回"3",表示3个序列点
  3. 查询当前序列点位置

    plaintextSOURce:LIST:ADVance:COUNter?  ; 假设返回"2",表示当前在第2点
  4. 检查循环状态

    plaintextSOURce:LIST:CYCLe:STATe?  ; 返回"ON"表示启用循环SOURce:LIST:CYCLe:COUNt:REMaining?  ; 返回剩余循环次数(如"1"表示还剩1次)
  5. 获取实际输出电流

    plaintextMEASure:CURRent?  ; 返回当前输出电流值(如"5.000"A)

三、厂商差异与指令扩展

  1. Keysight N6700系列
    • 查询序列状态可能需结合SOURce:LIST:STATe?
      plaintextSOURce:LIST:STATe?  ; 返回"RUNNING"或"IDLE"
    • 查询当前点参数(如电流值):
      plaintextSOURce:LIST:CURRent:DATA? (@<n>)  ; 查询第<n>点电流值(如@2)
  2. ITECH IT6000系列
    • 使用LIST:ADVance:COUNter?查询当前点位置,LIST:LOOP:COUNter?查询循环次数:
      plaintextLIST:ADVance:COUNter?  ; 当前点序号LIST:LOOP:COUNter?     ; 已完成循环次数
  3. Chroma 62000P系列
    • 可能支持SOURce:LIST:STEP:ACTual?查询当前步数:
      plaintextSOURce:LIST:STEP:ACTual?  ; 返回当前步数(1-based)

四、错误处理与调试

  1. 常见错误代码
    • -400 Parameter Error:参数超出范围(如查询未启用的序列状态)。
    • -350 Command Error:指令语法错误(如拼写错误)。
    • -107 No Sequence Active:序列未启用时查询状态。
  2. 调试建议
    • 分步查询:先确认序列是否启用,再查询具体状态。
    • 结合测量值验证:通过MEASure:CURRent?确认输出是否符合预期。
    • 日志记录:连续查询时记录时间戳和返回值,分析序列运行规律。

五、完整Python脚本示例(PyVISA)

pythonimport pyvisa# 连接电源rm = pyvisa.ResourceManager()power_supply = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR")  # 替换为实际地址# 查询序列状态is_list_active = power_supply.query("SOURce:LIST:FUNCtion?").strip() == "ON"print(f"序列是否启用: {is_list_active}")if is_list_active:    # 查询总点数    total_points = int(power_supply.query("SOURce:LIST:COUNt?").strip())    print(f"序列总点数: {total_points}")    # 查询当前点位置    current_point = int(power_supply.query("SOURce:LIST:ADVance:COUNter?").strip())    print(f"当前序列点: {current_point}/{total_points}")    # 查询循环状态(Keysight示例)    try:        is_loop_enabled = power_supply.query("SOURce:LIST:CYCLe:STATe?").strip() == "ON"        remaining_loops = power_supply.query("SOURce:LIST:CYCLe:COUNt:REMaining?").strip()        print(f"循环启用: {is_loop_enabled}, 剩余循环次数: {remaining_loops}")    except:        print("循环查询指令不支持或未启用")    # 查询实际输出电流    output_current = float(power_supply.query("MEASure:CURRent?").strip())    print(f"当前输出电流: {output_current:.3f}A")else:    print("序列未启用,请先配置并启动序列")# 关闭连接power_supply.close()

六、关键注意事项

  1. 指令兼容性:不同型号电源的SCPI指令可能略有差异,需参考具体手册。
  2. 实时性:部分电源的查询结果可能存在延迟,需结合实际需求调整查询频率。
  3. 权限控制:确保设备处于远程模式(SYSTem:REMote)且未被其他程序锁定。