在双向直流电源中,只读参数通常指通过查询命令(以?结尾)获取的、反映设备当前状态或测量值的参数,用户无法通过SCPI命令直接修改这些参数。以下是查询只读参数的通用方法及示例:
1. 查询只读参数的通用方法
命令结构:只读参数的SCPI命令通常以查询标识符?结尾,例如:
plaintextMEAS:VOLT? // 查询实际输出电压MEAS:CURR? // 查询实际输出电流
OUTP:STAT? // 查询输出开关状态
SYST:ERR? // 查询系统错误信息
返回值:设备会返回当前测量值或状态(如12.345、1或0),用户无法通过命令修改这些值。
2. 常见只读参数及示例
(1) 输出状态参数
输出开关状态:
plaintextOUTP:STAT? // 返回"1"表示输出开启,"0"表示关闭
保护状态:
plaintextSOUR:VOLT:PROT:TRIG? // 查询过压保护是否触发(返回"1"或"0")SOUR:CURR:PROT:TRIG? // 查询过流保护是否触发(返回"1"或"0")
(2) 实际测量值
输出电压:
plaintextMEAS:VOLT? // 返回当前实际输出电压(单位:V)
输出电流:
plaintextMEAS:CURR? // 返回当前实际输出电流(单位:A)
输出功率(部分设备支持):
plaintextMEAS:POW? // 返回当前实际输出功率(单位:W)
(3) 系统状态参数
系统错误信息:
plaintextSYST:ERR? // 返回最近错误代码和描述(如`0."No error"`)
操作完成状态:
plaintext*OPC? // 返回"1"表示上一条命令已执行完成
(4) 配置参数查询
部分配置参数虽可查询,但修改需通过其他命令(如SOUR:VOLT设置电压,MEAS:VOLT?查询电压),此类参数在查询时为只读:
当前输出模式:
plaintextSOUR:FUNC? // 返回当前工作模式("VOLT"表示恒压,"CURR"表示恒流)
量程设置:
plaintextSENS:VOLT:RANG? // 查询当前电压量程(如`100`表示100V量程)
3. 判断参数是否为只读的依据
命令手册标注:查阅设备手册的SCPI命令集,若某参数的命令描述中仅包含查询命令(如MEAS:VOLT?),而无对应设置命令(如SOUR:VOLT),则该参数为只读。
错误响应:若尝试对查询命令(如MEAS:VOLT?)使用设置语法(如MEAS:VOLT 12.0),设备会返回错误(如-400“Parameter Error”),表明该参数不可写。
4. 完整Python示例(查询只读参数)
pythonimport pyvisa# 初始化资源管理器rm = pyvisa.ResourceManager()device = rm.open_resource('TCPIP0::192.168.1.100::inst0::INSTR') # 替换为实际设备地址try: # 1. 查询输出开关状态(只读) output_state = device.query('OUTP:STAT?').strip() print(f"输出开关状态: {'开启' if output_state == '1' else '关闭'}") # 2. 查询实际输出电压(只读) voltage = device.query('MEAS:VOLT?').strip() print(f"实际输出电压: {voltage} V") # 3. 查询过压保护触发状态(只读) ovp_triggered = device.query('SOUR:VOLT:PROT:TRIG?').strip() print(f"过压保护触发状态: {'是' if ovp_triggered == '1' else '否'}")except Exception as e: print(f"查询失败: {e}") error_code = device.query('SYST:ERR?').strip() # 查询系统错误(只读) print(f"设备错误代码: {error_code}")finally: device.close()
5. 关键注意事项
设备差异:不同厂商(如Keysight、Chroma、ITECH)的SCPI命令可能不同,需严格参考设备手册。
权限与模式:设备需处于远程控制模式(如SYST:REM ON)才能响应SCPI命令。
错误处理:若命令返回错误(如-420),表示设备不支持该命令,需检查手册或尝试其他描述。