要通过SCPI指令查询双向直流电源序列输出参数的步进模式(如电压/电流的步进变化方式),需结合序列配置查询指令和步进模式相关参数。以下是具体步骤和指令说明:
一、核心查询指令
1. 查询序列是否启用
scpiSOURce:LIST:FUNCtion?
返回值:ON(启用)或 OFF(未启用)。
作用:确认序列模式是否激活。
2. 查询序列步进模式类型
不同电源可能支持以下步进模式(需参考具体型号手册):
线性步进(Linear):参数按固定值递增/递减。
对数步进(Logarithmic):参数按对数比例变化。
列表步进(List):按预定义的列表值变化。
自定义步进(Custom):通过公式或外部触发控制。
通用查询指令(部分设备支持):
scpiSOURce:LIST:STEP:MODE? # 查询步进模式(如LINEAR/LOG/LIST)
返回值示例:"LINEAR"、"LOG"、"LIST"。
3. 查询步进参数(根据模式)
(1) 线性步进模式
scpiSOURce:LIST:STEP:VOLTage:INCRement? # 查询电压步进值(单位:V)SOURce:LIST:STEP:CURRent:INCRement? # 查询电流步进值(单位:A)
返回值示例:0.5(表示每次步进0.5V或0.5A)。
(2) 对数步进模式
scpiSOURce:LIST:STEP:VOLTage:LOG:BASE? # 查询对数底数(如10或e)SOURce:LIST:STEP:VOLTage:LOG:MULT? # 查询对数乘法因子
返回值示例:10(底数为10)、2.0(乘法因子为2)。
(3) 列表步进模式
scpiSOURce:LIST:VOLTage:DATA? # 查询电压序列点列表(逗号分隔)SOURce:LIST:CURRent:DATA? # 查询电流序列点列表(逗号分隔)
返回值示例:"1.0.2.0.3.0"(表示电压序列为1V→2V→3V)。
4. 查询步进触发方式
scpiSOURce:LIST:TRIGger:SOURce? # 查询触发源(如INTERNAL/EXTERNAL/BUS)
返回值示例:"INTERNAL"(内部定时触发)、"EXTERNAL"(外部TTL触发)。
5. 查询步进延迟时间
scpiSOURce:LIST:STEP:DELay? # 查询每步之间的延迟时间(单位:秒)
返回值示例:0.1(表示每步间隔100ms)。
二、完整查询流程示例(Python)
pythonimport pyvisa# 连接电源rm = pyvisa.ResourceManager()psu = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR") # 替换为实际地址# 1. 确认序列启用is_list_active = psu.query("SOURce:LIST:FUNCtion?").strip() == "ON"if not is_list_active: raise Exception("序列模式未启用")# 2. 查询步进模式try: step_mode = psu.query("SOURce:LIST:STEP:MODE?").strip().upper() print(f"步进模式: {step_mode}")except pyvisa.VisaIOError: # 部分设备可能不支持直接查询模式,需通过参数推断 step_mode = "UNKNOWN"# 3. 根据模式查询具体参数if step_mode == "LINEAR": v_step = psu.query("SOURce:LIST:STEP:VOLTage:INCRement?").strip() i_step = psu.query("SOURce:LIST:STEP:CURRent:INCRement?").strip() print(f"电压步进值: {v_step} V") print(f"电流步进值: {i_step} A")elif step_mode == "LIST": v_list = psu.query("SOURce:LIST:VOLTage:DATA?").strip() i_list = psu.query("SOURce:LIST:CURRent:DATA?").strip() print(f"电压序列点: {v_list}") print(f"电流序列点: {i_list}")else: print("无法识别的步进模式,请参考设备手册")# 4. 查询触发和延迟trigger_source = psu.query("SOURce:LIST:TRIGger:SOURce?").strip()step_delay = psu.query("SOURce:LIST:STEP:DELay?").strip()print(f"触发源: {trigger_source}")print(f"步进延迟: {step_delay} 秒")# 关闭连接psu.close()
三、注意事项
设备兼容性:
不同厂商(如Keysight、Chroma、ITECH)的指令可能不同。例如:
Keysight N6705C:支持 SOURce:LIST:STEP:MODE?。
ITECH IT6000:可能使用 LIST:VOLT:STEP? 查询电压步进。
需查阅具体型号的《Programming Guide》确认指令。
默认值处理:
若查询指令返回错误(如 -107.命令不支持),可能是设备不支持该功能,需通过其他参数推断步进方式。
单位确认:
电流步进值可能是安培(A)或毫安(mA),需根据设备手册确认单位。
序列点数量:
查询序列点数量后,需结合步进值计算总变化范围:
scpiSOURce:LIST:COUNt? # 查询序列总点数
四、常见设备指令对照表
如果设备不支持直接查询步进模式,可通过以下逻辑推断:
若存在 INCRement 参数 → 线性步进。
若存在 DATA 列表 → 列表步进。
若存在 LOG 相关参数 → 对数步进。