要通过SCPI指令实现双向直流电源的序列执行与停止,需结合序列配置、触发控制及状态查询三类指令,具体操作流程如下:
设置序列点数
plaintextSOURce:LIST:COUNt <N> // N为序列点数(如3表示3个电压/电流值)
示例:
plaintextSOUR:LIST:COUN 3 // 设置3个序列点
定义序列参数
plaintextSOURce:LIST:VOLTage <V1>, <V2>, ..., <Vn> // 设置每个点的目标电压
示例:plaintextSOUR:LIST:VOLT 0, 12, 0 // 电压序列:0V → 12V → 0V
plaintextSOURce:LIST:CURRent <I1>, <I2>, ..., <In> // 设置每个点的目标电流
plaintextSOURce:LIST:DWELl <T1>, <T2>, ..., <Tn> // T为每段持续时间(单位:秒)
示例:plaintextSOUR:LIST:DWEL 2, 2, 2 // 每段持续2秒
启用循环功能(可选)
plaintextSOURce:LIST:CYCLe ON // 启用循环输出SOURce:LIST:COUNt:REPeat <M> // 设置循环次数(部分型号支持,如M=3表示循环3次)
示例(Chroma 62000P系列):
plaintextSOUR:LIST:LOOP 3 // 循环3次
选择触发源
plaintextTRIGger:SOURce IMMediate // 通过软件命令触发
plaintextTRIGger:SOURce EXTernal // 通过外部TTL信号触发TRIGger:SLOPe POSitive // 上升沿触发(或NEGative为下降沿)
设置触发延迟(可选)
plaintextOUTPut:TRIGger:DELay <T> // 触发后延迟T秒输出(如T=0.5表示0.5秒延迟)
启动序列输出
plaintextTRIGger:INITiate // 发送触发信号,启动延迟计时
Trigger In接口,电源在检测到指定边沿后自动启动输出。立即停止输出
plaintextOUTPut:STATe OFF // 关闭输出,停止当前序列
条件停止(如循环结束)
SOUR:LIST:COUNt:REPeat 3),序列会在完成指定次数后自动停止。plaintextSOURce:LIST:INDEx? // 返回当前执行的序列点序号(如返回1表示第一个点)
初始化与复位
plaintextSYSTem:REMote // 切换至远程模式*RST // 复位设备(可选)
配置序列参数
plaintextSOUR:LIST:COUN 3 // 3个序列点SOUR:LIST:VOLT 0, 12, 0 // 电压序列
SOUR:LIST:DWEL 2, 2, 2 // 每段持续时间2秒
启动输出
plaintextOUTP:STAT ON // 启用输出(等待触发)TRIG:INIT // 内部触发启动序列
停止输出(手动或条件停止)
plaintextOUTP:STAT OFF // 立即关闭输出
plaintextwhile True: index = int(power.query("SOUR:LIST:INDEX?"))
if index == 1 and is_first_cycle_complete: // 假设通过其他逻辑判断循环结束
power.write("OUTP OFF")
break
OUTPut:TRIGger:DELay)不超过电源支持的最大值(如部分电源最大延迟为10秒)。SYSTem:COMMunicate:SYNC指令配置主从设备:plaintextMASTER: SYST:COMM:SYNC:ROLE MASTER; SYST:COMM:SYNC:OUTP ONSLAVE: SYST:COMM:SYNC:ROLE SLAVE; SYST:COMM:SYNC:INP ON
plaintextSYSTem:ERRor? // 返回错误信息(如参数越限、触发未配置)
不同厂商的电源可能对指令有细微差异,例如:
plaintextTRIGger:SOURce BUS // 通过总线触发OUTPut:DELay 0.5 // 延迟指令可能直接集成在输出控制中
plaintextLIST:CYCLe:STATe ON // 启用循环LIST:CYCLe:COUNt 5 // 循环5次