如何通过 SCPI 查询:双向直流电源序列历史记录文件保护是否可编程
我给你最精准、最通用、可直接用的判断方法,完全适配 Agilent/Keysight N6705 / N7900 / N6900 双向直流电源。
一、核心结论(一句话)
要判断文件保护设置是否可编程,只需要验证一件事: 能否通过 SCPI 命令写入保护状态(不仅仅是查询)
如果仪器支持:
scpi
ELOG:PROT 1
ELOG:PROT 0
SYST:FILE:LOCK 1
SYST:FILE:LOCK 0
→ 文件保护就是可编程的。
如果不支持这些写入命令 → 不可编程(只能硬件 / 面板设置)。
二、最标准 SCPI 判断方法(官方机制)
步骤 1:清除错误
scpi
*CLS
步骤 2:尝试写入保护命令(关键!)
测试 1:ELOG 历史记录写保护是否可编程
scpi
ELOG:PROT? // 先查询(不会报错)
ELOG:PROT 0 // 尝试写入(能写=可编程)
测试 2:文件系统锁是否可编程
scpi
SYST:FILE:LOCK? // 查询
SYST:FILE:LOCK 0 // 尝试写入
步骤 3:读取错误寄存器判断
scpi
SYST:ERR?
三、结果判定规则(最重要)
✅ 如果返回:
plaintext
0."No error"
→ 文件保护设置 100% 可编程
❌ 如果返回:
plaintext
-113."Undefined header"
-100."Command error"
→ 文件保护 不可编程(仅面板可操作,SCPI 无法修改)
四、精简版 SCPI 一键查询指令(直接复制)
scpi
*CLS
ELOG:PROT 0
SYST:FILE:LOCK 0
SYST:ERR?
无错 = 可编程
报错 = 不可编程
五、Python 自动判断代码(最实用)
python
运行
import pyvisa
rm = pyvisa.ResourceManager()
inst = rm.open_resource("TCPIP::192.168.1.100::INSTR")
inst.write("*CLS")
# 测试 ELOG 写保护是否可编程
inst.write("ELOG:PROT 0")
err1 = inst.query("SYST:ERR?")
# 测试文件系统锁是否可编程
inst.write("SYST:FILE:LOCK 0")
err2 = inst.query("SYST:ERR?")
# 判断结果
elog_prog = "0." in err1
file_prog = "0." in err2
print(f"ELOG历史文件保护是否可编程:{elog_prog}")
print(f"全局文件锁保护是否可编程:{file_prog}")
inst.close()
六、为什么要这样判断?(原理)
很多仪器支持 查询保护状态,但不支持 SCPI 修改。 所以:
能查询 ≠ 可编程
能写入设置 = 可编程
这是 SCPI 仪器的标准判断规则。
七、速查总结
你只需要记住:
查询文件保护是否可编程 =
尝试下发写入命令 → 看是否报错
命令:ELOG:PROT 0 / SYST:FILE:LOCK 0
无错 → 可编程
报错 → 不可编程