要通过SCPI指令查询双向直流电源序列输出的详细信息(包括是否暂停),需结合序列模式状态查询、输出状态查询及实际输出值验证。以下是具体指令及步骤:
一、核心查询指令
查询序列是否启用
指令:SOURce:LIST:FUNCtion?
返回值:ON(序列已激活)或 OFF(序列未启用)。
说明:若返回 OFF,则序列未运行(可能处于暂停或未启动状态)。
查询序列运行状态
指令:SOURce:LIST:STATe?(部分型号支持,如Keysight N6700系列)
返回值:RUNNING(运行中)或 IDLE(暂停或未启动)。
说明:直接返回序列的当前状态,明确是否暂停。
查询输出是否开启
指令:OUTPut:STATe?
返回值:ON(输出开启)或 OFF(输出关闭)。
说明:若输出关闭且序列已启用,可能因暂停或保护触发导致。
查询当前序列点位置
指令:SOURce:LIST:ADVance:COUNter?
返回值:已执行的序列点序号(从1开始计数)。
说明:若返回值长时间未变化,可能序列暂停或卡住。
查询实际输出值
指令:MEASure:CURRent?(查询电流)或 MEASure:VOLTage?(查询电压)
返回值:实际输出的电流或电压值(单位:A/V)。
说明:验证当前序列点是否生效,若输出值与预期不符,可能序列暂停或配置错误。
二、完整查询流程示例
检查序列是否启用
plaintextSOURce:LIST:FUNCtion? ; 返回"ON"表示序列已激活
查询序列运行状态(若支持)
plaintextSOURce:LIST:STATe? ; 返回"RUNNING"或"IDLE"
查询输出状态
plaintextOUTPut:STATe? ; 返回"ON"或"OFF"
查询当前序列点位置
plaintextSOURce:LIST:ADVance:COUNter? ; 返回当前点序号(如"2"表示第2点)
查询实际输出值
plaintextMEASure:CURRent? ; 返回当前输出电流值(如"5.000"A)
三、厂商差异与指令扩展
Keysight N6700系列:
支持 SOURce:LIST:STATe? 直接查询序列状态(RUNNING/IDLE)。
示例:
plaintextSOURce:LIST:STATe? ; 返回"RUNNING"(运行中)或"IDLE"(暂停)
ITECH IT6000系列:
通过 LIST:ADVance:COUNter? 查询当前点位置,结合 OUTPut:STATe? 判断输出状态。
示例:
plaintextLIST:ADVance:COUNter? ; 当前点序号OUTPut:STATe? ; 输出状态
Chroma 62000P系列:
支持 SOURce:LIST:STEP:ACTual? 查询当前步数。
示例:
plaintextSOURce:LIST:STEP:ACTual? ; 返回当前步数(1-based)
四、错误处理与调试
常见错误:
-400 Parameter Error:参数超出范围(如查询未启用的序列状态)。
-350 Command Error:指令语法错误(如拼写错误)。
-107 No Sequence Active:序列未启用时查询状态。
调试建议:
先确认序列是否启用(SOURce:LIST:FUNCtion?)。
逐步查询运行状态、输出状态和当前点位置。
记录查询结果的时间戳,分析序列运行规律。
五、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: # 查询序列运行状态(Keysight示例) try: state = power_supply.query("SOURce:LIST:STATe?").strip() print(f"序列状态: {state}") # 返回"RUNNING"或"IDLE" except: print("序列状态查询指令不支持或未启用") # 查询输出状态 output_state = power_supply.query("OUTPut:STATe?").strip() print(f"输出状态: {'开启' if output_state == 'ON' else '关闭'}") # 查询当前序列点位置 current_point = power_supply.query("SOURce:LIST:ADVance:COUNter?").strip() print(f"当前序列点: {current_point}") # 查询实际输出电流 output_current = power_supply.query("MEASure:CURRent?").strip() print(f"当前输出电流: {output_current}A")else: print("序列未启用,请先配置并启动序列")# 关闭连接power_supply.close()