若双向直流电源的电流序列通过列表模式(LIST Mode)编程实现,且频率由每个序列点的持续时间(dwell time)间接决定(例如固定点数下总时间=单点时间×点数,频率=1/总周期),可通过以下SCPI指令查询序列参数并计算频率:
指令:
plaintextPROG:LIST:COUNt?
功能:返回序列中定义的步进点总数(N)。
示例:
发送
PROG:LIST:COUNt?
,若返回
50
,表示序列包含50个步进点。
指令:
plaintextPROG:LIST:CURR:DATA?
功能:返回第
n
个序列点的电流值与持续时间(
I_n, T_n
),其中
T_n
单位为秒(或电源支持的单位)。
示例:
发送
PROG:LIST:CURR:DATA1?
,若返回
-5, 2
,表示第1点电流为-5A,持续2秒。
若序列以固定点数循环运行,且总周期为所有点持续时间之和,则频率可通过以下步骤计算:
查询所有点持续时间:遍历所有点(1到N),记录每个点的
T_n
。
计算总周期:
计算频率:
示例:
若序列有3个点,持续时间分别为2秒、1秒、3秒,则总周期为6秒,频率为。
plaintextPROG:ANYW:CURR:FREQ?
TRIG:DELay?
)计算频率:
pythonimport pyvisarm = pyvisa.ResourceManager()power = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR")# 查询序列点数量power.write("SYST:REM") # 确保远程模式count = int(power.query("PROG:LIST:COUNt?"))# 查询所有点持续时间并计算总周期total_time = 0for n in range(1, count + 1): _, duration = power.query(f"PROG:LIST:CURR:DATA{n}?").split(",") total_time += float(duration)# 计算频率frequency = 1 / total_time if total_time > 0 else 0print(f"序列频率: {frequency:.3f} Hz")power.close()
SOURce:LIST:CURRent:DATA?
)。
-400 Parameter Error
),检查序列是否处于激活状态或参数范围是否超限。