Keysight 双向直流电源(N6781A、B2902A、N6705B 等)没有直接读 “电压温度系数(ppm/℃)” 的 SCPI 指令。只能用 SCPI 读机内温度 + 读输出电压 → 变温测试 → 后处理算出温度系数;或者直接读仪器内部 出厂 / 校准的温度系数指标(部分型号可通过 SCPI 读规格页)。下面分两种场景给你完整 SCPI 命令与做法。
一、先澄清:什么是电压温度系数
温度系数 TC:℃
Vnom:额定输出电压(如 5V)
ΔV:温度变化 ΔT 时的电压漂移
典型值:1–5 ppm/℃(Keysight 高精度电源)
二、SCPI 能直接读什么(无需外部测温)
1. 读机内温度(板载传感器)
scpi
; 读仪器内部温度(℃)
MEAS:TEMP?
N6781A / N6705B:返回 电源模块内部温度
B2902A:返回 SMU 结温 / 基板温度
2. 读当前输出电压
scpi
MEAS:VOLT? ; 实际输出电压
VOLT? ; 设定电压
3. 读仪器内置规格(部分型号可读出厂标 TC)
scpi
; 读仪器识别与校准信息
*IDN?
*CAL?
; 读电压精度/温度系数规格(部分 Keysight 支持)
SYST:SPEC:VOLT:TC?
注意:SYST:SPEC:VOLT:TC? 不是所有型号都有;有则直接返回类似 2.0E-6(2 ppm/℃)。
三、标准方法:SCPI 自动化变温测 TC(最靠谱)
思路
设定固定输出电压(如 5V)
在不同温度 T1,T2 下:
用 MEAS:TEMP? 读仪器温度
用 MEAS:VOLT? 读输出电压
代入公式算 TC
SCPI 命令流(N6781A/B2902A)
scpi
*RST
*CLS
OUTP ON
VOLT 5.0
CURR 1.0
; 温度点 1(热机稳定后)
MEAS:TEMP? ; T1
MEAS:VOLT? ; V1
; 升温/降温后稳定
; ...
; 温度点 2
MEAS:TEMP? ; T2
MEAS:VOLT? ; V2
计算(PC 后处理)
℃
四、Python+SCPI 可直接运行示例
python
运行
import pyvisa
rm = pyvisa.ResourceManager()
inst = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR")
inst.timeout = 10000
inst.write("*RST")
inst.write("OUTP ON")
inst.write("VOLT 5.0")
# 温度点1
T1 = float(inst.query("MEAS:TEMP?"))
V1 = float(inst.query("MEAS:VOLT?"))
# 等待温度变化... input("改变温度后按回车继续...")
# 温度点2
T2 = float(inst.query("MEAS:TEMP?"))
V2 = float(inst.query("MEAS:VOLT?"))
TC = (V2 - V1) / (5.0 * (T2 - T1)) * 1e6
print(f"温度系数 TC = {TC:.2f} ppm/℃")
inst.close()
五、如果你只想读 “出厂标称 TC”
查手册:N6781A 典型 2 ppm/℃,B2902A 1 ppm/℃。
部分型号可用:
scpi
SYST:SPEC:VOLT:TC?
有返回就直接是标称值;报错就说明该型号不支持直接读 TC,只能用变温测量法。
总结
❌ 无单条 SCPI 直接 “读温度系数”
✅ 必用组合:MEAS:TEMP? + MEAS:VOLT? + 变温 + 后处理
✅ 部分型号:SYST:SPEC:VOLT:TC? 可读出厂标 TC