要通过SCPI指令设置双向直流电源输出电流序列的步进值,需结合序列编程(List Mode)、电流参数配置及步进逻辑控制,以下是具体实现方法:
定义电流序列点
使用 SOURce:LIST:CURRent:DATA# 或 PROG:LIST:CURR:DATA#(厂商差异)设置每个序列点的电流值和持续时间(单位可能为秒或100μs):
plaintextSOURce:LIST:COUNt 3 ; 设置序列包含3个点SOURce:LIST:CURRent:DATA1 0, 2 ; 第1点: 0A, 持续2秒
SOURce:LIST:CURRent:DATA2 2, 2 ; 第2点: 2A, 持续2秒
SOURce:LIST:CURRent:DATA3 4, 2 ; 第3点: 4A, 持续2秒
启用序列模式
plaintextSOURce:LIST:FUNCtion ON ; 启用序列功能(部分电源需此指令)SOURce:LIST:CYCLe OFF ; 禁用循环(若需单次执行)
动态调整步进值(可选)
在序列执行前动态更新序列点参数(如修改 DATA2 的电流值):
plaintextSOURce:LIST:CURRent:DATA2 3, 2 ; 将第2点电流改为3A(步进变为1A→3A→5A)
plaintextSYSTem:REMote ; 进入远程模式*RST ; 复位设备(可选)
plaintextSOUR:LIST:COUN 3 ; 3个序列点SOUR:LIST:CURR:DATA1 0, 2000 ; 0A → 2秒(部分电源时间单位为100μs,2000=200ms需确认)
SOUR:LIST:CURR:DATA2 2, 2000 ; 2A → 2秒
SOUR:LIST:CURR:DATA3 4, 2000 ; 4A → 2秒
SOUR:LIST:FUNC ON ; 启用序列
SOUR:LIST:CYCL OFF ; 禁用循环
plaintextOUTPut:STATe ON ; 开启输出(等待触发或立即执行)
plaintextSOUR:LIST:INDEx? ; 查询当前执行的序列点索引
2 表示当前为第2点(2A),验证步进是否按预期执行。Keysight N6700系列
plaintextSOUR:LIST:CURR:DATA1 0, 2 ; 设置序列点SOUR:LIST:GOTO 3 ; 跳转到第3点(部分型号支持)
ITECH IT6000系列
plaintextLIST:CURR:DATA1 0, 2000 ; 时间单位可能为100μsLIST:JUMP:INDEx 2 ; 跳转到第2点
Chroma 62000P系列
plaintextPROG:LIST:CURR:DATA1 0, 2 ; 设置序列点PROG:LIST:GOTO 3 ; 跳转到第3点(需确认指令支持)
DATA# 参数可实时调整步进值,但需避免在序列执行中修改导致冲突。SYST:COMM:SYNC:ROLE MASTER)。SYSTem:ERRor? 查询错误代码(如参数越限、触发未配置)。pythonimport pyvisaimport timerm = pyvisa.ResourceManager()power = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR")# 配置电流序列(步进值:0A→2A→4A)power.write("SYST:REM")power.write("SOUR:LIST:COUN 3")power.write("SOUR:LIST:CURR:DATA1 0, 2000") # 0A, 2秒(假设单位为100μs)power.write("SOUR:LIST:CURR:DATA2 2, 2000") # 2A, 2秒power.write("SOUR:LIST:CURR:DATA3 4, 2000") # 4A, 2秒power.write("SOUR:LIST:FUNC ON")power.write("SOUR:LIST:CYCL OFF")# 启动输出power.write("OUTP ON")# 查询当前序列点(验证步进)for _ in range(3): time.sleep(2.5) # 等待序列点切换 index = int(power.query("SOUR:LIST:INDEx?")) print(f"当前序列点: {index}") # 应依次输出1→2→3power.close()
SOUR:LIST:CURR:DATA1 -2, 2)实现双向步进。SOUR:LIST:VOLT:DATA1 12, 2),实现复杂测试场景。