Keysight RP7900 双向再生电源(双通道)数据记录仪(Data Logger)多通道配置 SCPI 全套命令,按 “打开记录仪→选通道→设采样→启停→读取” 顺序,可直接复制运行。
一、先确认:RP7900 的 Data Logger 能力
型号:RP7931/32/33/35/36、RP7941/42/43/45/46、RP7951/52/53、RP7961/62/63、RP7972/7973
通道:CH1、CH2 可同时记录
记录内容:电压、电流、功率、温度、状态位
存储:仪器内部缓冲区 + 可导出 CSV
二、SCPI 多通道数据记录仪配置(完整流程)
1. 基础命令(开启 / 查询记录仪)
scpi
*IDN? ; 仪器识别(可选)
SYSTem:LOGger:ENABle ON ; 打开数据记录仪(必须)
SYSTem:LOGger:ENABle? ; 查询是否开启(返回 1=ON,0=OFF)
SYSTem:LOGger:DEPTH? ; 查询缓冲区深度(最大记录点数,如 10000)
SYSTem:LOGger:COUNt? ; 当前已记录点数
2. 配置多通道(核心:同时记录 CH1+CH2)
scpi
; ========== 通道选择(同时启用 CH1、CH2) ==========
SYSTem:LOGger:CHANnel1:ENABle ON ; 启用 CH1 记录
SYSTem:LOGger:CHANnel2:ENABle ON ; 启用 CH2 记录
SYSTem:LOGger:CHANnel1:ENABle? ; 查询 CH1 是否启用
SYSTem:LOGger:CHANnel2:ENABle? ; 查询 CH2 是否启用
; ========== 通道记录项(电压/电流/功率,可按需组合) ==========
SYSTem:LOGger:CHANnel1:ITEM VOLTage,CURRent,POWer ; CH1 记录 V/I/P
SYSTem:LOGger:CHANnel2:ITEM VOLTage,CURRent,POWer ; CH2 记录 V/I/P
3. 采样参数(多通道共用)
scpi
SYSTem:LOGger:SRATe 10 ; 采样率:10 Hz(范围 0.1~1000 Hz)
SYSTem:LOGger:SRATe? ; 查询采样率
SYSTem:LOGger:TRIGger:MODE IMMediate ; 立即触发(也可设为外部/边沿)
4. 启动 / 停止记录
scpi
SYSTem:LOGger:STARt ; 开始记录(双通道同时采)
SYSTem:LOGger:STOP ; 停止记录
5. 读取多通道记录数据(关键:按索引读,含通道标识)
scpi
; 读取单条(index 从 0 开始)
SYSTem:LOGger:DATA? 0 ; 返回:时间戳,CH1_V,CH1_I,CH1_P,CH2_V,CH2_I,CH2_P
; 批量读取(示例:读前 100 条)
FOR i=0 TO 99
SYSTem:LOGger:DATA? i
NEXT
6. 清空缓冲区(准备下一轮)
scpi
SYSTem:LOGger:CLEar ; 清空所有记录
三、返回数据格式(双通道示例)
plaintext
1717452345.123.5.02.1.23.6.17.12.05.0.89.10.72
含义:
时间戳:1717452345.123(秒)
CH1:5.02V,1.23A,6.17W
CH2:12.05V,0.89A,10.72W
四、常见问题
只能记录单通道? 必须同时发送 CHANnel1:ENABle ON 和 CHANnel2:ENABle ON,缺一不可。
采样率对双通道有影响吗? 无影响,双通道同步采样,采样率上限由仪器决定(通常 1kHz)。
缓冲区满了会怎样? 默认循环覆盖(Ring Buffer),可通过 SYSTem:LOGger:OVERflow STOP 设为满则停止。
五、Python 极简示例(直接运行)
python
运行
import pyvisa
rm = pyvisa.ResourceManager()
inst = rm.open_resource('TCPIP::192.168.1.100::INSTR') ; 改为你的仪器 IP
# 配置多通道
inst.write('SYSTem:LOGger:ENABle ON')
inst.write('SYSTem:LOGger:CHANnel1:ENABle ON')
inst.write('SYSTem:LOGger:CHANnel2:ENABle ON')
inst.write('SYSTem:LOGger:CHANnel1:ITEM VOLTage,CURRent,POWer')
inst.write('SYSTem:LOGger:CHANnel2:ITEM VOLTage,CURRent,POWer')
inst.write('SYSTem:LOGger:SRATe 10')
# 启动并读取
inst.write('SYSTem:LOGger:STARt')
# ... 等待一段时间 ...
inst.write('SYSTem:LOGger:STOP')
count = int(inst.query('SYSTem:LOGger:COUNt?'))
for i in range(count):
data = inst.query(f'SYSTem:LOGger:DATA? {i}')
print(data)
inst.close()