要通过SCPI命令设置Keysight双向直流电源的数据记录触发条件,需结合序列编程、触发同步及事件记录功能,以下是具体实现步骤和指令示例:
一、核心实现步骤
启用数据记录功能
部分Keysight电源(如N6700系列)支持通过SCPI指令启用时间戳记录和事件日志功能,用于量化触发精度。
scpi
SYST:TIME:SYNC:EXT ON ; 启用外部时间同步(如GPS或IEEE 1588)
SYST:EVENT:LEV 1 ; 启用事件记录
配置触发条件
根据需求选择触发源(外部信号或内部软件触发),并设置触发条件(如上升沿、电平阈值等)。
外部触发(TTL脉冲)
scpi
TRIG:SOUR EXT ; 选择外部触发源
TRIG:SLOP POS ; 上升沿触发
OUTP:STAT ON ; 准备输出,等待触发
内部软件触发
scpi
TRIG:SOUR IMM ; 选择内部触发
TRIG:INIT ; 立即启动序列
设置序列参数(可选)
若需在触发后执行特定电压序列,可预设序列点参数:
scpi
SOUR:LIST:COUN 3 ; 设置3个序列点
SOUR:LIST:VOLT 0. 12. 0 ; 电压序列:0V → 12V → 0V
SOUR:LIST:DWEL 2. 2. 2 ; 每段持续时间2秒
SOUR:LIST:FUNC ON ; 激活序列功能
查询触发事件日志
触发后,通过SCPI指令查询事件日志,获取触发时间戳及序列运行状态:
scpi
SYST:EVENT:STAT? ; 查询事件日志(含序列启动时间戳)
SOUR:LIST:ADVance:COUNter? ; 查询当前序列点位置
二、完整操作流程示例(Python脚本)
python
import pyvisa
import time
# 连接电源
rm = pyvisa.ResourceManager()
power = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR") # 替换为实际地址
# 1. 启用时间同步和事件记录
power.write("SYST:TIME:SYNC:EXT ON")
power.write("SYST:EVENT:LEV 1")
# 2. 配置外部触发(TTL信号)
power.write("TRIG:SOUR EXT")
power.write("TRIG:SLOP POS")
power.write("OUTP:STAT ON") # 准备输出
# 3. 预设电压序列(可选)
power.write("SOUR:LIST:COUN 3")
power.write("SOUR:LIST:VOLT 0. 12. 0")
power.write("SOUR:LIST:DWEL 2. 2. 2")
power.write("SOUR:LIST:FUNC ON")
# 4. 手动触发(或通过外部信号触发)
input("按Enter键手动触发序列...") # 模拟外部触发信号
power.write("TRIG:INIT") # 内部触发(若使用外部触发,此步省略)
# 5. 查询触发状态和序列进度
time.sleep(0.1) # 等待触发完成
event_log = power.query("SYST:EVENT:STAT?")
current_point = power.query("SOUR:LIST:ADVance:COUNter?")
print(f"事件日志: {event_log.strip()}")
print(f"当前序列点: {current_point.strip()}/3")
# 关闭连接
power.close()
三、关键注意事项
设备兼容性
不同型号的Keysight电源支持的SCPI指令可能存在差异,需参考具体型号的《编程手册》。例如,N6700系列支持SYST:EVENT:LEV指令,而其他型号可能需使用替代方案。
部分电源需先通过SYST:REM指令切换至远程控制模式。
触发延迟
外部触发到电源实际输出的延迟通常小于1ms,但需通过校准补偿硬件延迟。可通过示波器捕捉触发信号与输出变化的时差进行校准。
保护功能
在设置序列前,确认电压值未触发过压保护(OVP)。可通过以下指令设置OVP阈值:
scpi
OUTP:PROT:OVP 6.0 ; 设置OVP阈值为6V
多设备同步
若需多台电源同步触发,可通过主从模式实现:
主设备:
scpi
SYST:COMM:SYNC:ROLE MASTER ; 设为主设备
SYST:COMM:SYNC:OUTP ON ; 输出同步信号
从设备:
scpi
SYST:COMM:SYNC:ROLE SLAVE ; 设为从设备
SYST:COMM:SYNC:INP ON ; 接收同步信号