资讯中心

联系我们

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

如何通过SCPI指令查询双向直流电源序列输出参数的步进模式?

2026-03-06 09:27:13  点击:

  要通过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 相关参数 → 对数步进。