要通过SCPI命令查询Keysight双向直流电源的输出限制是否因过功率(包括过压或过流)触发锁定,需结合错误状态查询、输出状态查询以及保护参数配置三方面进行系统性排查,以下是具体步骤:
一、查询错误状态
发送错误查询命令:
命令:SYSTem:ERRor?
作用:查询电源的错误队列,确认是否触发过功率保护(如过压或过流)。
示例响应:若返回 -221."Over current protection tripped" 或 -222."Over voltage protection tripped",则说明触发相应保护。
持续锁定判断:
若错误响应中包含 "Output disabled" 或类似描述,则表明输出已因保护触发而自动关闭。
若电源进入锁定状态,需手动清除保护寄存器(见下文“清除保护状态”部分)。
二、查询输出状态
发送输出状态查询命令:
命令:OUTPut:STATe?
作用:直接查询电源输出状态。返回 1 表示输出开启,0 表示输出关闭。
若过功率保护触发后返回 0.则证明输出已自动关闭。
结合错误状态验证:
若 SYSTem:ERRor? 返回过功率保护错误,且 OUTPut:STATe? 返回 0.则可确认输出因过功率保护触发而自动关闭。
三、清除保护状态(如需)
清除错误队列:
命令:SYSTem:ERRor:CLEar
作用:清除电源的错误队列,为后续操作准备。
清除过功率保护状态:
命令:CURRent:PROTection:CLEar(针对过流保护)或 VOLTage:PROTection:CLEar(针对过压保护,若电源支持)
作用:清除过功率保护状态寄存器,解除锁定。
重新启动输出:
命令:OUTPut:STATe ON
作用:重新启动电源输出(若保护为非自锁型,此命令可能无效,需先清除保护状态)。
四、自动化测试脚本示例(Python + PyVISA)
python
import pyvisa
def check_overpower_status(resource_address):
try:
rm = pyvisa.ResourceManager()
source = rm.open_resource(resource_address)
source.read_termination = 'n'
source.write_termination = 'n'
# 查询错误状态
error = source.query('SYSTem:ERRor?').strip()
print(f"当前错误状态: {error}")
# 判断是否触发过功率保护
if "Over current protection" in error or "Over voltage protection" in error:
print("检测到过功率保护触发,尝试清除...")
source.write('SYSTem:ERRor:CLEar')
if "Over current protection" in error:
source.write('CURRent:PROTection:CLEar')
# 若电源支持过压保护清除命令,可添加类似操作
source.write('OUTPut:STATe ON')
print("保护状态已清除,输出已重启。")
# 查询输出状态
output_state = source.query('OUTPut:STATe?').strip()
print(f"当前输出状态: {'开启' if output_state == '1' else '关闭'}")
source.close()
return True
except Exception as e:
print(f"通信错误: {e}")
return False
# 示例调用(替换为实际资源地址)
check_overpower_status('GPIB0::5::INSTR') # GPIB地址示例
五、注意事项
命令兼容性:
不同型号Keysight电源的SCPI命令可能存在差异。例如,CURRent:PROTection:CLEar 命令在部分旧型号中可能需简写为 CURR:PROT:CLE。
建议:查阅具体型号的《编程手册》确认命令语法。
硬件连接验证:
确保电源与控制器的通信接口(如GPIB、USB、LAN)连接稳固,波特率、数据位等参数配置正确。
示例:使用Python PyVISA库时,需配置 read_termination='n' 和 write_termination='n' 以避免通信错误。
安全操作规范:
在清除保护状态前,务必确认负载端无短路或反接,避免重复触发过功率保护。
推荐操作:先断开负载,再执行 OUTPut:STATe ON 命令,逐步排查问题。