国产呦萝小初合集密码

资讯中心

联系我们

国产呦萝小初合集密码·(中国)官方网站
地址:深圳市福田区红荔路第一世界广场A座8D-E
咨询电话:0755-83766766
E-mail:info@qihuisz.com

如何用SCPI指令查询双向直流电源输出电流序列的步进输出是否正确?

2025-12-24 09:52:12  点击:

要使用SCPI指令验证双向直流电源输出电流序列的步进输出是否正确,需通过查询实际输出值序列状态错误日志进行多维度确认。以下是分步骤的详细方法:

一、验证输出电流值是否符合预期

1. 实时查询当前输出电流

指令

								plaintextMEASure:CURRent?

或(部分设备支持):

								plaintextSOURce:CURRent?

功能:返回电源当前输出的实际电流值(单位:A)。
示例
发送
MEAS:CURR? ,若返回 -5.000 ,表示当前输出为-5A。

2. 对比预期值与实际值

  • 预期值来源:通过 PROG:LIST:CURR:DATA?  查询序列中各点的设定值。
  • 验证方法
    1. 手动记录查询结果,或编写脚本自动对比(如Python示例见下文)。
    2. 若实际值与预期值偏差超过设备精度(如±0.1%),需检查:
      • 序列是否被正确加载( PROG:LIST:COUNt?  确认点数)。
      • 电源是否处于输出状态( OUTPut:STATe?  确认是否为 1 )。
      • 是否存在保护触发(如过流保护 SYST:ERR?  查询错误代码)。

二、验证序列步进状态

1. 查询当前序列点索引

指令

								plaintextPROG:LIST:INDEx?

功能:返回当前正在执行的序列点序号(从1开始)。
示例
发送
PROG:LIST:INDEx? ,若返回 3 ,表示正在执行第3个序列点。

2. 验证步进顺序

  • 预期顺序:通过 PROG:LIST:CURR:DATA?  确认各点顺序。
  • 验证方法
    1. 连续查询 PROG:LIST:INDEx? ,观察索引是否按1→2→3…递增。
    2. 若索引停滞或跳变,可能原因:
      • 序列未启动( PROG:LIST:FUNCtion?  确认是否为 ON )。
      • 触发信号异常(如外部触发未到达)。
      • 电源进入保护状态( SYST:ERR?  查询错误)。

三、验证序列持续时间

1. 查询当前点剩余时间(部分设备支持)

指令(示例,具体指令需参考手册):

								plaintextPROG:LIST:TIME:REMain?

或通过时间戳计算:

  1. 记录 PROG:LIST:INDEx?  变化时刻(如第1点开始时间 T1 )。
  2. 记录第2点开始时间 T2 ,计算第1点实际持续时间 ΔT = T2 - T1
  3. 对比 PROG:LIST:CURR:DATA1?  返回的设定时间 T_set ,若 |ΔT - T_set|  超过允许误差(如±5%),需检查时钟同步或触发源。

四、自动化验证脚本(Python示例)

								pythonimport pyvisaimport timerm = pyvisa.ResourceManager()power = rm.open_resource("TCPIP0::192.168.1.100::inst0::INSTR")# 查询序列总点数count = int(power.query("PROG:LIST:COUNt?"))print(f"序列总点数: {count}")# 查询各点预期值与时间expected_values = []for n in range(1, count + 1):    data = power.query(f"PROG:LIST:CURR:DATA{n}?").split(",")    expected_values.append((float(data[0]), float(data[1])))  # (电流, 时间)# 启动输出(若未启动)power.write("OUTPut:STATe ON")power.write("PROG:LIST:FUNCtion ON")# 验证步进输出for i, (expected_curr, expected_time) in enumerate(expected_values, 1):    start_time = time.time()    while True:        # 查询当前点索引        current_index = int(power.query("PROG:LIST:INDEx?"))        if current_index == i:            break        time.sleep(0.01)  # 避免频繁查询        # 查询实际电流    actual_curr = float(power.query("MEAS:CURR?"))    print(f"点{i}: 预期电流={expected_curr}A, 实际电流={actual_curr}A")        # 验证电流误差(假设允许误差±0.1A)    if abs(actual_curr - expected_curr) > 0.1:        print("⚠️ 电流误差超限!")        # 验证持续时间(通过时间戳模拟)    if i 
								
							

五、常见问题排查

  1. 输出电流为0
    • 检查 OUTPut:STATe?  是否为 1
    • 确认序列模式已启用( PROG:LIST:FUNCtion?  为 ON )。
  2. 序列不步进
    • 检查触发源( TRIGger:SOURce?  是否为 BUS  或 EXT )。
    • 确认无错误中断( SYST:ERR?  返回 0  或无保护触发)。
  3. 电流波动大
    • 检查负载稳定性(如是否为纯电阻负载)。
    • 确认电源滤波设置(如 SOURce:CURRent:FILTer  是否启用)。
  4. 指令报错
    • -400 Parameter Error :检查指令语法或参数范围。
    • -107 No Sequence Active :序列未启用或未加载。


m wap