资讯中心

联系我们

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

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

2025-12-12 10:29:26  点击:

要通过SCPI指令查询双向直流电源当前输出电流序列的状态,需结合序列索引、输出状态、触发状态等关键参数,使用设备支持的查询指令获取实时信息。以下是具体方法与指令示例:

一、核心查询指令

1. 查询当前序列点索引

  • 指令SOURce:LIST:INDEx?
  • 功能:返回当前正在执行的序列点编号(从1开始计数)。
  • 示例
    plaintextSOURce:LIST:INDEx?  ; 返回当前序列点索引(如"3"表示第3点)
  • 应用场景
    • 确认序列是否按预期执行(如跳转后是否到达目标点)。
    • 结合序列点总数(SOURce:LIST:COUNt?)判断剩余点数。

2. 查询输出状态

  • 指令OUTPut:STATe?
  • 功能:返回电源输出是否开启(1为开启,0为关闭)。
  • 示例
    plaintextOUTPut:STATe?  ; 返回"1"表示输出已开启,"0"表示关闭
  • 应用场景
    • 确认序列是否已启动(输出开启后序列开始执行)。
    • 检测序列是否因保护(如OCP/OVP)或手动停止而终止。

3. 查询序列模式状态

  • 指令SOURce:LIST:FUNCtion?
  • 功能:返回序列模式是否启用(1为启用,0为禁用)。
  • 示例
    plaintextSOURce:LIST:FUNCtion?  ; 返回"1"表示序列模式已激活
  • 应用场景
    • 确认设备是否处于序列输出状态(避免误操作普通恒流模式)。

4. 查询循环状态

  • 指令SOURce:LIST:CYCLe?
  • 功能:返回序列是否循环执行(1为循环,0为单次)。
  • 示例
    plaintextSOURce:LIST:CYCLe?  ; 返回"1"表示序列循环执行
  • 应用场景
    • 判断序列是否因循环设置而重复执行(需结合索引判断当前循环轮次)。

二、高级状态查询(厂商差异)

1. 查询序列点参数(部分设备支持)

  • 指令SOURce:LIST:CURRent:DATA#?#为序列点编号)
  • 功能:返回指定序列点的电流值及持续时间(如0,2表示0A持续2秒)。
  • 示例
    plaintextSOURce:LIST:CURR:DATA3?  ; 返回第3点的电流参数(如"10,2")
  • 应用场景
    • 动态验证序列配置是否正确(如跳转后目标点参数是否符合预期)。

2. 查询触发状态(外部触发模式)

  • 指令TRIGger:STATe?
  • 功能:返回触发系统是否就绪(1为就绪,0为触发中或未配置)。
  • 示例
    plaintextTRIGger:STATe?  ; 返回"1"表示触发系统已准备好
  • 应用场景
    • 确认外部触发信号是否被正确接收(如TTL电平触发)。

3. 查询保护状态(双向电源关键)

  • 指令OUTPut:PROTect:CLEar? 或 SYSTem:STATus?
  • 功能:返回是否触发保护(如过流、过压、反极性等)。
  • 示例
    plaintextOUTPut:PROTect:CLEar?  ; 返回"0"表示无保护,非零值表示保护类型SYSTem:STATus?        ; 返回详细状态寄存器(需解析二进制位)
  • 应用场景
    • 诊断序列终止原因(如因反向电流触发保护而停止)。

三、完整查询流程示例

场景:查询当前序列状态(包括索引、输出、循环、保护)

  1. 查询序列模式与索引
    plaintextSOURce:LIST:FUNCtion?  ; 确认序列模式已启用SOURce:LIST:INDEx?    ; 获取当前序列点索引
  2. 查询输出与保护状态
    plaintextOUTPut:STATe?          ; 确认输出是否开启OUTPut:PROTect:CLEar?  ; 检查是否触发保护
  3. 查询循环与触发状态
    plaintextSOURce:LIST:CYCLe?    ; 确认序列是否循环TRIGger:STATe?        ; 检查触发系统状态(外部触发模式)
  4. 解析结果(Python示例)
    pythonimport pyvisarm = pyvisa.ResourceManager()device = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR")# 查询序列状态is_sequence_active = int(device.query("SOURce:LIST:FUNCtion?")) == 1current_index = int(device.query("SOURce:LIST:INDEx?"))is_output_on = int(device.query("OUTPut:STATe?")) == 1is_protected = int(device.query("OUTPut:PROTect:CLEar?")) == 0print(f"序列模式: {'启用' if is_sequence_active else '禁用'}")print(f"当前点索引: {current_index}")print(f"输出状态: {'开启' if is_output_on else '关闭'}")print(f"保护状态: {'触发' if is_protected else '正常'}")

四、厂商差异与注意事项

  1. 指令兼容性
    • Keysight N6700系列:支持 SOURce:LIST:GOTO? 查询跳转目标点。
    • ITECH IT6000系列:使用 LIST:STATus? 返回序列状态摘要。
    • Chroma 62000P系列:需通过 PROG:LIST:CURR:DATA#? 查询序列点参数。
  2. 关键限制
    • 部分设备在序列执行期间可能无法实时更新所有查询结果(如索引延迟1-2个点)。
    • 双向电源需额外关注反极性保护状态(如 OUTPut:PROTect:POLarity?)。
  3. 错误处理
    • 若查询返回错误(如-420“Query Unterminated”),检查指令语法或设备是否支持。
    • 使用 SYSTem:ERRor? 获取详细错误代码(如参数越限、序列未启动)。

通过上述指令组合,可全面监控双向直流电源的序列输出状态,适用于自动化测试、故障诊断及动态调整场景。