资讯中心

联系我们

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

如何通过SCPI命令查询Keysight双向直流电源的OVP/OCPOCP保护状态?

2026-02-06 09:45:56  点击:

  要查询Keysight双向直流电源的OVP(过压保护)和OCP(过流保护)状态,可通过SCPI命令直接查询保护触发状态、清除保护状态或读取保护阈值,具体操作如下:

  1. 查询OVP/OCP触发状态

  使用以下命令查询OVP或OCP是否被触发(返回1表示触发,0表示未触发):

  scpi:SOURce:VOLTage:PROTection:TRIPed?  ; 查询OVP触发状态:SOURce:CURRent:PROTection:TRIPed?  ; 查询OCP触发状态

  示例:

  python# Python代码示例(使用PyVISA)import pyvisarm = pyvisa.ResourceManager()inst = rm.open_resource('TCPIP0::192.168.1.100::INSTR')  # 替换为实际地址ovp_tripped = inst.query(':SOUR:VOLT:PROT:TRIP?')  # 查询OVP触发状态ocp_tripped = inst.query(':SOUR:CURR:PROT:TRIP?')  # 查询OCP触发状态print(f"OVP触发状态: {ovp_tripped.strip()}")  # 输出如"1"(触发)或"0"(未触发)print(f"OCP触发状态: {ocp_tripped.strip()}")

  2. 清除OVP/OCP触发状态

  若保护已触发,需通过以下命令清除触发状态(恢复电源输出):

  scpi:SOURce:VOLTage:PROTection:CLEar  ; 清除OVP触发状态:SOURce:CURRent:PROTection:CLEar  ; 清除OCP触发状态

  示例:

  pythoninst.write(':SOUR:VOLT:PROT:CLE')  # 清除OVP触发状态inst.write(':SOUR:CURR:PROT:CLE')  # 清除OCP触发状态

  3. 查询OVP/OCP保护阈值

  通过以下命令读取当前设置的OVP或OCP阈值:

  scpi:SOURce:VOLTage:PROTection:LEVel?  ; 查询OVP阈值(单位:伏特):SOURce:CURRent:PROTection:LEVel?  ; 查询OCP阈值(单位:安培)

  示例:

  pythonovp_threshold = inst.query(':SOUR:VOLT:PROT:LEV?')  # 查询OVP阈值ocp_threshold = inst.query(':SOUR:CURR:PROT:LEV?')  # 查询OCP阈值print(f"OVP阈值: {ovp_threshold.strip()} V")  # 输出如"60.0"(60伏特)print(f"OCP阈值: {ocp_threshold.strip()} A")  # 输出如"5.0"(5安培)

  4. 启用/禁用OVP/OCP功能

  通过以下命令启用或禁用保护功能:

  scpi:SOURce:VOLTage:PROTection:STATe ON|OFF  ; 启用/禁用OVP:SOURce:CURRent:PROTection:STATe ON|OFF  ; 启用/禁用OCP

  示例:

  pythoninst.write(':SOUR:VOLT:PROT:STAT ON')  # 启用OVPinst.write(':SOUR:CURR:PROT:STAT OFF')  # 禁用OCP

  关键注意事项

  命令兼容性:不同型号的Keysight电源可能支持部分命令,需参考具体设备的《编程手册》(如N6705C Programmer's Guide)确认命令语法。

  单位与范围:查询的阈值单位通常为伏特(V)或安培(A),需确保数值在电源量程内。

  保护逻辑:OVP/OCP触发后,电源输出会自动关闭,需先清除触发状态(:CLEar)再重新启用输出(:OUTPut:STATe ON)。

  错误处理:若命令执行失败,可通过:SYSTem:ERRor?查询错误代码(如-112表示过压保护触发)。

  完整操作流程示例

  python# 1. 查询OVP/OCP触发状态ovp_status = inst.query(':SOUR:VOLT:PROT:TRIP?')ocp_status = inst.query(':SOUR:CURR:PROT:TRIP?')# 2. 若触发,清除状态并重启输出if ovp_status.strip() == '1':    inst.write(':SOUR:VOLT:PROT:CLE')    print("OVP已清除,重启输出...")    inst.write(':OUTP:STAT ON')if ocp_status.strip() == '1':    inst.write(':SOUR:CURR:PROT:CLE')    print("OCP已清除,重启输出...")    inst.write(':OUTP:STAT ON')# 3. 查询当前保护阈值ovp_thresh = inst.query(':SOUR:VOLT:PROT:LEV?')ocp_thresh = inst.query(':SOUR:CURR:PROT:LEV?')print(f"当前保护阈值 - OVP: {ovp_thresh.strip()} V, OCP: {ocp_thresh.strip()} A")