要使用SCPI指令实现双向直流电源输出电压与电流的同步控制,需结合序列模式(List Mode)、斜率控制(Slew Rate)及触发同步机制,确保电压和电流按预设参数同步变化。以下是具体实现方法与指令示例:
使用SOURce:LIST:VOLTage:DATA#和SOURce:LIST:CURRent:DATA#指令分别设置每个序列点的电压和电流值。部分电源支持同时设置电压和电流的复合指令(如SOURce:LIST:DATA#),需参考具体型号手册。
plaintextSOURce:LIST:COUNt 3 ; 设置序列包含3个点SOURce:LIST:VOLTage:DATA1 0, 2 ; 第1点:0V,持续2秒
SOURce:LIST:VOLTage:DATA2 12, 2 ; 第2点:12V,持续2秒
SOURce:LIST:VOLTage:DATA3 0, 2 ; 第3点:0V,持续2秒
SOURce:LIST:CURRent:DATA1 0, 2 ; 第1点:0A,持续2秒
SOURce:LIST:CURRent:DATA2 2, 2 ; 第2点:2A,持续2秒
SOURce:LIST:CURRent:DATA3 0, 2 ; 第3点:0A,持续2秒
注意:部分电源(如Chroma 62000P系列)可能使用PROG:LIST:VOLT:DATA#和PROG:LIST:CURR:DATA#指令,需参考具体型号手册。
通过指令启用序列功能,并禁用循环(若需单次执行):
plaintextSOURce:LIST:FUNCtion ON ; 启用序列模式SOURce:LIST:CYCLe OFF ; 禁用循环
使用SOURce:VOLTage:SLEW和SOURce:CURRent:SLEW指令分别设置电压和电流的变化率(单位:V/s或A/s),确保两者同步变化:
plaintextSOURce:VOLTage:SLEW 1000 ; 设置电压变化率为1000 V/sSOURce:CURRent:SLEW 1 ; 设置电流变化率为1 A/s
启用斜率限制(部分电源需显式启用):
plaintextSOURce:VOLTage:SLEW:STATe ON ; 启用电压斜率限制SOURce:CURRent:SLEW:STATe ON ; 启用电流斜率限制
选择触发源(内部或外部)并启动序列:
plaintextTRIGger:SOURce IMMediate ; 选择内部触发(软件触发)TRIGger:INITiate ; 发送触发信号,启动序列
外部触发示例(如TTL信号):
plaintextTRIGger:SOURce EXTernal ; 选择外部触发源TRIGger:SLOPe POSitive ; 上升沿触发
OUTPut:TRIGger:DELay 0.1 ; 触发后延迟0.1秒输出(可选)
plaintextOUTPut:STATe ON ; 启用输出,等待触发
以下示例通过Python脚本实现电压和电流的同步序列控制:
pythonimport pyvisaimport timerm = pyvisa.ResourceManager()power = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR")# 初始化与复位power.write("SYSTem:REMote") # 切换至远程模式power.write("*RST") # 复位设备(可选)# 配置电压和电流序列power.write("SOUR:LIST:COUN 3")power.write("SOUR:LIST:VOLT:DATA1 0, 2")power.write("SOUR:LIST:VOLT:DATA2 12, 2")power.write("SOUR:LIST:VOLT:DATA3 0, 2")power.write("SOUR:LIST:CURR:DATA1 0, 2")power.write("SOUR:LIST:CURR:DATA2 2, 2")power.write("SOUR:LIST:CURR:DATA3 0, 2")# 设置斜率(同步变化)power.write("SOUR:VOLT:SLEW 1000")power.write("SOUR:CURR:SLEW 1")power.write("SOUR:VOLT:SLEW:STAT ON")power.write("SOUR:CURR:SLEW:STAT ON")# 启用序列模式power.write("SOUR:LIST:FUNC ON")power.write("SOUR:LIST:CYCL OFF")# 启动输出(内部触发)power.write("OUTP ON")power.write("TRIG:INIT")# 查询当前状态(可选)current_index = int(power.query("SOUR:LIST:INDEx?"))print(f"当前序列点: {current_index}")power.close()
PROG:LIST,Keysight使用SOUR:LIST),需参考具体型号手册。