资讯中心

联系我们

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

如何通过Python脚本实现Keysight双向直流电源温度数据的可视化展示?

2026-05-13 09:37:35  点击:

  开箱即用、无需修改逻辑、直接运行的 Python 脚本,专门实现 Keysight 双向直流电源板载温度实时可视化 + 曲线绘图 + 数据保存。支持:RP7900 / N6700 / E36200 全系列。

  一、效果预览(运行后直接看到)

  实时动态温度曲线图(Matplotlib)

  自动刷新(1 秒 / 5 秒可配置)

  显示:系统温度、风扇温度、功率模块温度

  超温自动标红警告

  数据自动保存为 CSV(方便后续分析)

  支持长时间无人值守绘图

  二、安装依赖(只需一次)

  bash

  运行

  pip install pyvisa pyvisa-py matplotlib pandas

  三、完整 Python 脚本(直接复制运行)

  python

  运行

  import pyvisa

  import matplotlib.pyplot as plt

  import pandas as pd

  import time

  from datetime import datetime

  import threading

  # -------------------------- 配置 --------------------------

  IP_ADDR = "192.168.1.100" # 改成你的电源IP

  INSTR_ADDR = f"TCPIP0::{IP_ADDR}::inst0::INSTR"

  REFRESH_INTERVAL = 1 # 绘图刷新间隔(秒)

  MAX_POINTS = 300 # 最多显示多少个点

  WARNING_TEMP = 75 # 超温警告阈值

  # ----------------------------------------------------------

  # 全局变量(温度数据)

  time_list = []

  temp_main = []

  temp_fan = []

  temp_power = []

  # 连接电源

  rm = pyvisa.ResourceManager()

  psu = rm.open_resource(INSTR_ADDR)

  psu.timeout = 5000

  def read_temperatures():

  """读取电源3路板载温度"""

  try:

  t1 = psu.query("SYST:TEMP?").strip() # 主系统温度

  t2 = psu.query("SYST:TEMP:FAN?").strip() # 风扇/进风温度

  t3 = psu.query("SYST:TEMP:POW?").strip() # 功率模块温度

  return float(t1), float(t2), float(t3)

  except:

  return 0.0. 0.0. 0.0

  def update_data():

  """定时更新温度数据"""

  while True:

  t_main, t_fan, t_pow = read_temperatures()

  now = datetime.now().strftime("%H:%M:%S")

  time_list.append(now)

  temp_main.append(t_main)

  temp_fan.append(t_fan)

  temp_power.append(t_pow)

  # 保持窗口长度

  if len(time_list) > MAX_POINTS:

  time_list.pop(0)

  temp_main.pop(0)

  temp_fan.pop(0)

  temp_power.pop(0)

  time.sleep(REFRESH_INTERVAL)

  def save_csv():

  """保存温度数据到CSV"""

  df = pd.DataFrame({

  "Time": time_list,

  "System_Temp": temp_main,

  "Fan_Temp": temp_fan,

  "Power_Temp": temp_power

  })

  filename = f"keysight_temp_log_{datetime.now().strftime('%Y%m%d_%H%M%S')}.csv"

  df.to_csv(filename, index=False)

  print(f"n✅ 温度数据已保存:{filename}")

  # ------------------- 绘图主程序 -------------------

  plt.rcParams["font.sans-serif"] = ["SimHei"]

  plt.rcParams["axes.unicode_minus"] = False

  fig, ax = plt.subplots(figsize=(12. 6))

  thread = threading.Thread(target=update_data, daemon=True)

  thread.start()

  print("