在Keysight双向直流电源的校准模式下,可通过SCPI命令查询电压保护阈值(OVP)、电流保护阈值(OCP)、保护触发状态等关键保护参数,具体指令及操作流程如下:
一、核心查询指令
电压保护阈值(OVP)
查询当前OVP设置值:
plaintextSOURce:VOLTage:PROTection:LEVel?
返回单位为伏特(V),例如 60.0 表示OVP阈值为60V。
查询OVP是否启用:
plaintextSOURce:VOLTage:PROTection:STATe?
返回 ON(启用)或 OFF(禁用)。
电流保护阈值(OCP)
查询当前OCP设置值:
plaintextSOURce:CURRent:PROTection:LEVel?
返回单位为安培(A),例如 10.0 表示OCP阈值为10A。
查询OCP是否启用:
plaintextSOURce:CURRent:PROTection:STATe?
返回 ON 或 OFF。
保护触发状态
查询是否触发保护:
plaintextOUTPut:PROTect:STATe?
返回 TRIPPED(已触发)或 NORMAL(正常)。
查询具体保护类型:
plaintextSYSTem:ERRor?
若返回错误代码 -221 表示OVP触发,-222 表示OCP触发。
二、完整查询流程示例
进入远程模式并复位设备(确保通信正常):
plaintextSYSTem:REMote*RST
查询电压保护参数:
plaintext# 查询OVP阈值ovp_level = power.query("SOURce:VOLTage:PROTection:LEVel?")
print(f"电压保护阈值: {ovp_level.strip()}V")
# 查询OVP状态
ovp_state = power.query("SOURce:VOLTage:PROTection:STATe?")
print(f"OVP是否启用: {ovp_state.strip()}")
查询电流保护参数:
plaintext# 查询OCP阈值ocp_level = power.query("SOURce:CURRent:PROTection:LEVel?")
print(f"电流保护阈值: {ocp_level.strip()}A")
# 查询OCP状态
ocp_state = power.query("SOURce:CURRent:PROTection:STATe?")
print(f"OCP是否启用: {ocp_state.strip()}")
查询保护触发状态:
plaintext# 查询整体保护状态protect_state = power.query("OUTPut:PROTect:STATe?")
print(f"保护触发状态: {protect_state.strip()}")
# 查询错误代码(若保护触发)
error_code = power.query("SYSTem:ERRor?")
print(f"错误代码: {error_code.strip()}")
三、厂商差异与指令扩展
Keysight N6700系列:
支持清除保护状态:
plaintextOUTPut:PROTect:CLEar
查询保护延迟时间:
plaintextSOURce:CURRent:PROTection:DELAY?
ITECH IT6000系列:
双向电压范围设置:
plaintextSOURce:VOLTage:RANGe:LEVel 60. -60
查询保护触发次数:
plaintextSYSTem:STATistics:PROTect:COUNt?
Chroma 62000P系列:
使用 HIGH 替代 LEVel 设置阈值:
plaintextSOURce:VOLTage:PROTection:HIGH 60
查询保护日志:
plaintextSYSTem:LOG:PROTect:DATA?
四、验证与调试建议
模拟触发保护:
手动设置超过阈值的值(如 SOURce:VOLTage:LEVel 65 触发60V OVP),验证保护功能及查询结果。
错误处理:
若查询返回 -400(参数错误),检查指令语法或设备是否支持该功能。
若返回 -107(无序列激活),确认设备已进入校准模式。
日志记录:
连续查询时记录时间戳和返回值,分析保护参数变化规律。
五、Python脚本示例(PyVISA)
pythonimport pyvisa# 连接电源rm = pyvisa.ResourceManager()power = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR")# 查询保护参数try: # 电压保护 ovp_level = power.query("SOURce:VOLTage:PROTection:LEVel?") ovp_state = power.query("SOURce:VOLTage:PROTection:STATe?") # 电流保护 ocp_level = power.query("SOURce:CURRent:PROTection:LEVel?") ocp_state = power.query("SOURce:CURRent:PROTection:STATe?") # 保护触发状态 protect_state = power.query("OUTPut:PROTect:STATe?") print(f"电压保护阈值: {ovp_level.strip()}V, 状态: {ovp_state.strip()}") print(f"电流保护阈值: {ocp_level.strip()}A, 状态: {ocp_state.strip()}") print(f"保护触发状态: {protect_state.strip()}")except pyvisa.Error as e: print(f"通信错误: {e}")finally: power.close()