资讯中心

联系我们

深圳市维立信电子科技有限公司
地址:深圳市福田区红荔路第一世界广场A座8D-E
咨询电话:0755-83766766
E-mail:info@welissom.com

如何通过SCPI查询双向直流电源序列历史记录的循环次数与风扇转速的关系?

2026-06-10 10:10:22  点击:

  一、核心前提限制(Keysight N6705B/C、N6700、8600/8612 双向直流电源)

  DLOG 序列历史日志默认不采集风扇转速 DLOG 原生采样通道只有:电压、电流、功率,没有内置风扇转速采集点,历史文件里不会自带风扇转速数据;无法直接从已存 log.csv/bin 里读出转速。

  风扇转速属于仪器硬件状态监测量,只能实时读取,分两套 SCPI 体系:实时单读转速、部分机型可扩展同步记录。

  想要建立「循环次数 ↔ 风扇转速」对应关系,只有两种可行方案:

  方案 A:运行 LIST 序列时,上位机高频轮询读取风扇转速 + 同步记录时间戳,事后按循环分组匹配;

  方案 B(高固件 8600 系列):开启扩展监测采样,把风扇转速并入 DLOG 采样流一同存入文件。

  二、实时读取风扇转速 SCPI 基础指令

  1. N6705B/C/ N6700 小功率双向机型

  scpi

  SYST:FAN:SPEED?

  返回数值:风扇转速 RPM(转 / 分钟);低负载低速、大功率高转速自动调速。

  配套温度参考(风扇调速依据)

  scpi

  SYST:TEMP? ! 内部功率模块温度 ℃

  2. 8600/8612 高功率回馈双向电源

  指令兼容,额外支持多分区风扇读取:

  scpi

  SYST:FAN1:SPEED?

  SYST:FAN2:SPEED?

  多风扇机型分别读取主功率风扇、辅助机箱风扇转速。

  3. 风扇工作状态查询

  scpi

  SYST:FAN:STAT?

  1= 风扇正常运转;0= 停转 / 待机低速休眠。

  三、方案 A:上位机同步采集(通用所有机型,无固件门槛)

  整体流程

  下发 LIST 序列启动INIT;*TRG;

  上位机循环高频轮询:时间戳、循环完成数、风扇转速、功率;

  测试结束后,用时间偏移划分每一轮循环,归集每一轮全程风扇转速(平均值、最大转速),形成循环次数 — 风扇转速映射。

  配套时序 SCPI

  scpi

  !1 读取LIST循环时序参数,用于划分轮次

  SOUR:LIST:DWEL?

  TRIG:DEL?

  STAT:TRIG:COUN? ! 已完成整轮循环数量

  INIT:STAT? ! 序列是否运行中

  !2 高频轮询读取

  SYST:FAN:SPEED? ! 实时转速RPM

  SYST:TEMP?

  MEAS:POW? ! 实时功率(负载大小决定风扇快慢)

  匹配逻辑

  记录每一次轮询的系统时间 SYST:DATE?;SYST:TIME?;

  计算相对启动时间偏移,匹配归属循环号;

  对同一循环内所有转速采样,计算单轮平均转速、峰值最高转速。

  四、方案 B:DLOG 嵌入风扇转速同步记录(仅 8600 高固件支持)

  N6705 系列 DLOG 无扩展通道,只有 8600 平台支持添加系统监测量到 DLOG 采样:

  开启 DLOG 扩展采样,挂载风扇转速通道

  scpi

  DLOG:CHAN:EXT FAN1

  DLOG:CHAN:EXT:FAN1 ENABLE

  启动记录后,日志文件新增一列风扇转速,格式变为: 时间戳,V,I,P,FanSpeed

  后续读取DLOG:FILE:DATA?"xxx.csv",直接解析每一行转速,再按循环分组统计。

  五、无法从旧历史 DLOG 文件提取风扇转速

  重点误区:

  之前跑完保存的旧 log 文件,当时没开 EXT 扩展通道,文件里永远没有转速字段,没有任何 SCPI 能逆向读出当时风扇数据;

  N6705A/B/C 全系无 DLOG 扩展监测通道,只能用方案 A 上位机同步轮询;

  ELOG 事件日志只记录过温、故障停机,不连续存储转速曲线。

  六、完整标准化 SCPI 执行序列(方案 A 实时同步采集)

  scpi

  ! 1. 初始化序列配置

  SOUR:LIST:STEP?

  SOUR:LIST:DWEL?

  TRIG:COUN?

  TRIG:DEL?

  DLOG:DEST FILE

  DLOG:FILE:TIMESTAMP 1

  ! 2. 启动LIST序列

  INIT

  *TRG

  ! 3. 运行中循环轮询(上位机循环下发)

  SYST:DATE?

  SYST:TIME?

  STAT:TRIG:COUN?

  SYST:FAN:SPEED?

  SYST:TEMP?

  MEAS:POW?

  ! 4. 停止后读取DLOG功率时序做对照

  DLOG:FILE:CAT?

  DLOG:FILE:DATA?"log.csv"

  七、数据统计维度(循环 - 风扇转速关系)

  每组循环可输出三个关键指标:

  单轮峰值风扇转速(本轮最高 RPM)

  单轮平均风扇转速

  转速波动差值(最大 - 最小)

  示例对照表

  表格

  

  八、Python 极简采集框架(同步抓循环、转速、时间)

  python

  运行

  import pyvisa

  from datetime import datetime

  rm = pyvisa.ResourceManager()

  inst = rm.open_resource("TCPIP::192.168.1.100::INSTR", timeout=20000)

  # 获取单轮LIST总时长

  dwel = list(map(float, inst.query("SOUR:LIST:DWEL?").split(",")))

  delay = float(inst.query("TRIG:DEL?"))

  t_round = sum(dwel) + delay

  # 启动序列

  inst.write("INIT;*TRG")

  record = []

  start_time = datetime.now()

  # 持续采集直到序列结束

  while int(inst.query("INIT:STAT?")) == 1:

  now = datetime.now()

  delta = (now - start_time).total_seconds()

  loop = int(delta / t_round) + 1

  fan_rpm = float(inst.query("SYST:FAN:SPEED?"))

  temp = float(inst.query("SYST:TEMP?"))

  power = float(inst.query("MEAS:POW?"))

  record.append([loop, delta, fan_rpm, temp, power])

  # 按循环分组求均值、峰值

  from collections import defaultdict

  loop_fan = defaultdict(list)

  for row in record:

  loop_fan[row[0]].append(row[2])

  res = []

  for loop, rpm_list in sorted(loop_fan.items()):

  res.append({

  "循环": loop,

  "平均转速": sum(rpm_list)/len(rpm_list),

  "峰值转速": max(rpm_list)

  })

  for item in res:

  print(item)

  九、补充故障相关

  风扇超速 / 停转事件会写入 ELOG,可查询历史故障事件:

  scpi

  ELOG:DATA? N