正如之前多次提到的,Keysight 双向直流电源本身并不存储多笔校准历史记录(只能保留最近一次的日期、计数等),因此“批量查询历史记录”实际上是指:利用第三方软件(如 Python)批量轮询局域网内或多台列表中的电源,读取它们各自当前的校准状态信息,并汇总成表。
你可以通过以下逻辑在第三方软件(以 Python 为例)中实现:
1. 准备仪器清单
创建一个包含多台电源通信地址(如 IP 或 VISA 地址)以及资产编号的列表或 CSV 文件:
instruments_list = [
{"asset": "PSU-001", "address": "TCPIP0::192.168.1.101::inst0::INSTR"},
{"asset": "PSU-002", "address": "TCPIP0::192.168.1.102::inst0::INSTR"},
{"asset": "PSU-003", "address": "TCPIP0::192.168.1.103::inst0::INSTR"}
]
2. 编写批量查询与解析逻辑
使用 pyvisa遍历列表,依次连接每台电源,发送查询指令,并捕获返回值和可能的连接错误:
import pyvisa
import datetime
rm = pyvisa.ResourceManager()
results = []
for item in instruments_list:
try:
inst = rm.open_resource(item["address"])
inst.timeout = 2000 # 设置超时,防止挂死
# 查询关键信息
idn = inst.query("*IDN?").strip()
cal_date = inst.query("CALibration:DATE?").strip()
cal_count = inst.query("CALibration:COUNt?").strip()
cal_status = inst.query("CALibration:STATus?").strip()
# 尝试读取自定义校准字符串(如标准器信息,若有写入)
try:
cal_str = inst.query("CALibration:STRing?").strip()
except:
cal_str = "N/A"
inst.close()
results.append({
"Asset": item["asset"],
"IDN": idn,
"Last Cal Date": cal_date,
"Cal Count": cal_count,
"Cal Status": "OK" if cal_status == "0" else "Error",
"Note": cal_str
})
except Exception as e:
results.append({
"Asset": item["asset"],
"IDN": "OFFLINE/ERROR",
"Last Cal Date": "-",
"Cal Count": "-",
"Cal Status": "-",
"Note": str(e)
})
3. 结果汇总与导出
将 results列表导出为控制台表格、CSV 或 Excel,即可完成“批量查询”:
import pandas as pd
df = pd.DataFrame(results)
print(df)
# df.to_excel("Batch_Cal_Report.xlsx", index=False)
总结:第三方软件实现批量查询,本质是“循环连接 + 单台查询指令 + 结果汇总”。它能一次性盘点实验室或产线所有电源的“最近一次校准情况”,但依然无法从电源内部挖出已经被覆盖掉的早期校准历史。