要通过SCPI命令查询Agilent双向直流电源的配置参数,需结合分层命令结构和设备特定寄存器,以下是具体方法:
一、核心查询命令
基础信息查询
*IDN?:查询设备标识(制造商、型号、序列号、固件版本)。
plaintext*IDN? // 返回示例:"Agilent,N5747A,12345678.1.0"
输出参数查询
SOUR:VOLT?:查询当前输出电压。
SOUR:CURR?:查询当前输出电流。
SOUR:POW?:查询当前输出功率(部分型号支持)。
plaintextSOUR:VOLT? // 返回示例:"12.5.V"SOUR:CURR? // 返回示例:"1.0.A"
保护限值查询
VOLT:PROT?:查询过压保护(OVP)阈值。
CURR:PROT?:查询过流保护(OCP)阈值。
plaintextVOLT:PROT? // 返回示例:"65.0.V"(OVP阈值)CURR:PROT? // 返回示例:"13.0.A"(OCP阈值)
二、状态寄存器查询(触发事件)
通过状态寄存器可确认保护功能是否被触发(如过压、过流):
问题事件寄存器(Questionable Events)
STAT:QUES?:查询问题事件寄存器(二进制位掩码)。
STAT:QUES:COND?:查询当前问题状态(是否触发保护)。
STAT:QUES:ENAB?:查询哪些问题被监控(如位0=过流,位1=过压)。
plaintextSTAT:QUES:COND? // 返回示例:"3"(二进制0b00000011.表示过流+过压触发)
解析二进制位
根据设备手册确认位定义,例如:
Keysight N6700系列:
位0:过流(OC)
位1:过压(OV)
位2:欠压(UV)
Rigol DP800系列:
位1:过流保护
位2:过压保护
三、完整查询示例(Python + PyVISA)
pythonimport pyvisa# 初始化资源管理器rm = pyvisa.ResourceManager()device = rm.open_resource('TCPIP0::192.168.1.100::inst0::INSTR') # 替换为实际地址# 1. 查询设备标识idn = device.query('*IDN?').strip()print(f"设备标识: {idn}")# 2. 查询输出参数voltage = device.query('SOUR:VOLT?').strip()current = device.query('SOUR:CURR?').strip()print(f"当前输出: 电压={voltage}, 电流={current}")# 3. 查询保护限值ovp = device.query('VOLT:PROT?').strip()ocp = device.query('CURR:PROT?').strip()print(f"保护限值: OVP={ovp}, OCP={ocp}")# 4. 查询问题事件状态ques_status = int(device.query('STAT:QUES:COND?').strip())print(f"问题事件状态(十进制): {ques_status}")# 解析二进制位(示例:Keysight N6700)oc_triggered = (ques_status & 0b00000001) != 0 # 位0:过流ov_triggered = (ques_status & 0b00000010) != 0 # 位1:过压print(f"过流触发: {'是' if oc_triggered else '否'}")print(f"过压触发: {'是' if ov_triggered else '否'}")# 关闭连接device.close()
四、关键注意事项
设备差异:不同型号的Agilent电源(如N5747A、N6700、DP800)命令可能略有差异,需参考具体手册。
权限与接口:确保通信接口(GPIB/LAN/USB)已正确配置,且用户有查询权限。
实时性:状态寄存器是瞬时值,触发后可能快速恢复,建议结合日志功能记录历史事件。
错误处理:每次操作后查询 SYST:ERR? 确认命令执行成功。
通过上述方法,可全面查询Agilent双向直流电源的配置参数及保护触发状态,适用于自动化测试、故障诊断等场景。