资讯中心

联系我们

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

如何用SCPI指令设置双向直流电源输出电流序列的终止条件为电流过载?

2025-12-18 10:04:04  点击:

  要将双向直流电源输出电流序列的终止条件设置为电流过载,需结合序列模式(List Mode)的终止条件控制指令与电流保护(OCP)功能,通过以下步骤实现:

  一、核心实现步骤

  启用电流保护(OCP):

  设置输出电流上限(OCP阈值):SOURce:CURRent:PROTection:LEVel,其中为电流上限值(单位:A)。

  启用电流保护功能:SOURce:CURRent:PROTection:STATe ON。

  配置序列模式:

  启用序列功能:SOURce:LIST:FUNCtion ON(部分电源需此指令)。

  设置序列点数:SOURce:LIST:COUNt,其中为序列总点数。

  定义电流序列:SOURce:LIST:CURRent:DATA,,其中为序列点序号(如DATA1、DATA2),为电流值(单位:A),为持续时间(单位依设备而定,如秒或100μs)。

  设置终止条件:

  基于电流过载终止:部分电源支持通过查询保护状态或错误代码来终止序列。当电流超过设定的OCP阈值时,电源会自动触发保护并停止输出。

  通过编程实现终止逻辑:在脚本中定期查询当前输出电流(MEASure:CURRent?)和保护状态(OUTPut:PROTect:STATe?),若检测到电流过载,则发送指令停止序列(如SOURce:LIST:FUNCtion OFF或OUTPut:STATe OFF)。

  二、完整操作流程示例

  初始化与复位:

  切换至远程模式:SYSTem:REMote。

  复位设备(可选):*RST。

  设置电流保护:

  设置电流上限为10A:SOURce:CURRent:PROTection:LEVel 10.

  启用电流保护:SOURce:CURRent:PROTection:STATe ON。

  配置序列参数:

  设置序列包含3个点:SOURce:LIST:COUNt 3.

  定义电流序列:

  第1点:0A,持续2秒:SOURce:LIST:CURRent:DATA1 0. 2.

  第2点:5A,持续2秒:SOURce:LIST:CURRent:DATA2 5. 2.

  第3点:0A,持续2秒:SOURce:LIST:CURRent:DATA3 0. 2.

  启动序列并监控电流:

  启用序列功能:SOURce:LIST:FUNCtion ON。

  启动输出:OUTPut:STATe ON。

  在脚本中定期查询当前输出电流和保护状态,若检测到电流过载,则停止序列。

  三、Python脚本示例(使用PyVISA库)

  pythonimport pyvisa# 连接电源rm = pyvisa.ResourceManager()power_supply = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR")  # 替换为实际电源地址# 初始化与复位power_supply.write("SYSTem:REMote")power_supply.write("*RST")# 设置电流保护power_supply.write("SOURce:CURRent:PROTection:LEVel 10")  # 设置电流上限为10Apower_supply.write("SOURce:CURRent:PROTection:STATe ON")  # 启用电流保护# 配置序列参数power_supply.write("SOURce:LIST:COUNt 3")  # 设置序列包含3个点power_supply.write("SOURce:LIST:CURRent:DATA1 0. 2")  # 第1点:0A,持续2秒power_supply.write("SOURce:LIST:CURRent:DATA2 5. 2")  # 第2点:5A,持续2秒power_supply.write("SOURce:LIST:CURRent:DATA3 0. 2")  # 第3点:0A,持续2秒# 启动序列power_supply.write("SOURce:LIST:FUNCtion ON")  # 启用序列功能power_supply.write("OUTPut:STATe ON")  # 启动输出# 监控电流并处理过载(示例为简化逻辑,实际需根据需求调整)try:    while True:        current = float(power_supply.query("MEASure:CURRent?").strip())  # 查询当前输出电流        protect_state = power_supply.query("OUTPut:PROTect:STATe?").strip()  # 查询保护状态        if protect_state == "1" or current > 10:  # 若保护已触发或电流超过上限            print("电流过载,停止序列")            power_supply.write("SOURce:LIST:FUNCtion OFF")  # 停止序列            power_supply.write("OUTPut:STATe OFF")  # 关闭输出            breakexcept KeyboardInterrupt:    print("用户中断序列")finally:    power_supply.close()

  四、注意事项

  指令兼容性:不同厂商的电源可能采用不同的SCPI指令格式,需参考具体型号的手册进行调整。

  保护延迟:部分电源支持设置保护延迟时间(如SOURce:CURRent:PROTection:DELAY),以避免瞬态信号误触发保护。

  错误处理:在查询过程中,若遇到错误代码(如-400 Parameter Error或-350 Command Error),需根据错误提示检查指令语法或参数范围是否正确。

  实时性:部分电源的查询结果可能存在延迟,需结合实际需求调整查询频率。