一、核心判定指令(N6705C / N7900 / N6900 平台通用)
文件系统锁定用于防止日志写入、文件删除 / 覆盖,SCPI 以文件锁状态查询判断硬件固件是否支持该功能。
1. 查询全局文件系统锁定状态
scpi
SYST:FILE:LOCK?
返回值定义:
0:无锁定、解锁状态;指令可正常读写文件
1:全局文件系统已锁定
若仪器返回 Command error / -113 Undefined header:代表本机固件不支持文件锁定功能
2. 锁定 / 解锁文件系统(功能存在时才可执行)
scpi
SYST:FILE:LOCK 1 // 开启全局锁定
SYST:FILE:LOCK 0 // 解除全局锁定
锁定后限制操作:
禁止 ELOG:EXPORT、DLOG:SAVE 写入新文件
禁止 SYST:FILE:DEL、SYST:FILE:RENAME、SYST:FILE:COPY 修改文件
仅允许 SYST:TRANSFER? 读取、SYST:FILE:ATTR?/SIZE?/LIST? 查询
二、分步校验是否支持锁定功能
先发送状态查询指令
scpi
*CLS
SYST:FILE:LOCK?
读取仪器状态寄存器判断报错
scpi
SYST:ERR?
返回 0."No error":指令识别正常 → 本机支持文件系统锁定
返回 -113."Undefined header":无此指令 → 不支持锁定
三、分区单独锁定补充(部分高版本固件)
少数新版 N7900 高级固件支持单盘符独立锁,查询指令:
scpi
SYST:FILE:LOCK? INT:
SYST:FILE:LOCK? USB:
同样用SYST:ERR?校验指令有效性;老固件仅支持全局锁SYST:FILE:LOCK?无盘符参数。
四、ELOG 专属写保护(区分文件系统锁)
之前提到的 EEPROM / 事件日志写保护是独立机制,不属于SYST:FILE:LOCK文件系统锁:
ELOG 分区写保护查询
scpi
ELOG:PROT?
1=ELOG 事件日志禁止覆盖清除;0= 可清除覆盖;这条和磁盘文件锁是两套隔离保护逻辑。
五、完整校验自动化流程(Python 示例)
python
运行
import pyvisa
rm = pyvisa.ResourceManager()
inst = rm.open_resource("TCPIP::192.168.1.100::INSTR")
inst.timeout = 5000
inst.write("*CLS")
# 尝试查询文件系统锁
resp = inst.query("SYST:FILE:LOCK?")
err = inst.query("SYST:ERR?")
if "-113" in err:
print("本机固件【不支持】文件系统锁定功能")
else:
lock_state = int(resp)
print(f"文件系统锁定状态:{'已锁定' if lock_state==1 else '未锁定'}")
print("本机支持SYST:FILE:LOCK锁定功能")
# 额外查询ELOG事件写保护状态
elog_prot = int(inst.query("ELOG:PROT?"))
print(f"ELOG事件日志写保护:{'开启' if elog_prot==1 else '关闭'}")
inst.close()
六、机型兼容说明
支持文件锁 N6705C(固件≥1.40)、N7970A/N7971A/N7972A、N6950A/N6952A 高功率双向模块
不支持文件锁 老旧 E3631A/E3646A 等基础双向电源、早期低固件 N6705B、紧凑型 N6900 入门版;无SYST:FILE:LOCK指令,仅 ELOG 基础写保护。
速查对照
表格