一、两类历史文件保护体系(安捷伦 / 是德 Keysight 同源机型 N6705、N7900、N6900 双向电源)
历史记录分 ELOG 输出限制事件记录、DLOG 波形采样文件,保护分为:ELOG 专属写保护、全局文件系统锁定保护,两套独立 SCPI 查询。 Agilent 时期固件 SCPI 指令集与后期 Keysight 完全兼容,指令无更名。
1、查询 ELOG(OVP/OCP 输出限制历史)专属写保护状态
作用:开启后禁止清空 ELOG、禁止覆盖旧故障记录,原始 event.log 历史事件防擦除。
查询指令
scpi
ELOG:PROT?
返回值:
1:ELOG 历史记录写保护开启,无法执行ELOG:CLE清空、旧记录不会被循环覆盖
0:写保护关闭,可清空、日志满后自动覆盖最早记录
配套操作指令(仅查询用,供参考)
scpi
ELOG:PROT 1 // 开启保护
ELOG:PROT 0 // 关闭保护
校验指令是否存在(老 Agilent 低固件)
scpi
*CLS
ELOG:PROT?
SYST:ERR?
返回-113代表极早期固件无 ELOG 写保护功能。
2、查询全局文件系统锁定保护(所有 DLOG/ELOG 导出文件通用)
锁定后所有 INT:/、USB:/ 内的历史日志文件禁止删除、重命名、覆盖写入,仅可读;文件内容明文、非加密。
查询全局锁状态
scpi
SYST:FILE:LOCK?
返回值:
1:全局文件锁定开启,所有历史文件只读保护
0:文件锁定关闭,可修改 / 删除 / 导出覆盖文件
分区独立锁(新版 Agilent/Keysight 高固件)
可单独查内置盘、U 盘锁定状态
scpi
SYST:FILE:LOCK? INT:
SYST:FILE:LOCK? USB:
锁定生效限制(历史文件行为)
不能执行:ELOG:EXPORT覆盖旧导出 csv、DLOG:SAVE覆盖波形文件、SYST:FILE:DEL删除历史、SYST:FILE:RENAME改名
允许执行:SYST:TRANSFER?下载历史文件、SYST:FILE:ATTR?查创建时间、ELOG:DATA?读取限制历史内容
3、区分三个易混淆保护(不要混淆概念)
表格
4、完整批量查询保护状态 SCPI 脚本
scpi
*CLS
!1 查询输出限制ELOG历史写保护
ELOG:PROT?
!2 查询全局文件锁
SYST:FILE:LOCK?
!3 分盘锁定查询
SYST:FILE:LOCK? INT:
SYST:FILE:LOCK? USB:
!4 读取错误判断指令是否支持
SYST:ERR?
5、Agilent 老旧机型兼容说明
N6705A/B、N7900 早期 Agilent 固件:支持ELOG:PROT、SYST:FILE:LOCK全套指令
E36xx 老款 Agilent 简易双向电源:无文件系统锁SYST:FILE:LOCK,仅极简故障码,无完整 ELOG 历史保护;只能读取瞬时故障STAT:QUES?
Agilent 与 Keysight 同硬件机型 SCPI 完全互通,无需替换指令名称
6、Python 一键读取全部历史文件保护状态
python
运行
import pyvisa
rm = pyvisa.ResourceManager()
inst = rm.open_resource("TCPIP::仪器IP::INSTR")
inst.timeout = 5000
# ELOG历史事件写保护
elog_prot = inst.query("ELOG:PROT?").strip()
# 全局文件锁
file_lock = inst.query("SYST:FILE:LOCK?").strip()
# 分区锁
lock_int = inst.query("SYST:FILE:LOCK? INT:").strip()
lock_usb = inst.query("SYST:FILE:LOCK? USB:").strip()
print(f"ELOG输出限制历史写保护:{elog_prot}(1开启/0关闭)")
print(f"全局文件系统锁定:{file_lock}")
print(f"INT内置盘锁定:{lock_int}")
print(f"USB外接盘锁定:{lock_usb}")
err = inst.query("SYST:ERR?")
print(f"指令错误状态:{err}")
inst.close()
关键补充
这两类仅防篡改、防删除保护,Agilent 原厂机型无文件加密功能,所有历史文件明文存储;加密只能上位机后处理实现。
ELOG:PROT 只保护原生 event.log,不保护你手动 ELOG:EXPORT 导出的备份 csv,导出文件安全依靠SYST:FILE:LOCK管控。