若双向直流电源的电流序列通过列表模式(LIST Mode)编程实现,且频率由每个序列点的持续时间(dwell time)间接决定(例如固定点数下总时间=单点时间×点数,频率=1/总周期),可通过以下SCPI指令查询序列参数并计算频率:
指令:
plaintextPROG:LIST:COUNt?
功能:返回序列中定义的步进点总数(N)。
示例:
发送 PROG:LIST:COUNt?,若返回 50,表示序列包含50个步进点。
指令:
plaintextPROG:LIST:CURR:DATA<n>?
功能:返回第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),检查序列是否处于激活状态或参数范围是否超限。