首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
华为云
V2EX  ›  问与答

有人熟悉 安捷伦 agilent 和 罗德与施瓦茨 Rohde & Schwarz 等测试设备的开发吗? (SCPI 如何入门?)

  •  1
     
  •   wzw · 71 天前 · 273 次点击
    这是一个创建于 71 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题:

    1. SCPI 感觉有点难理解, 如何入门?
    2. 我用用程序控制这些设备,进行测试. 那我应该如何完成最简单的一个测试步骤?(帮助理解 SCPI 流程)

    1 目前看懂了 hello world 的例子, 连上了设备. 这个代码跑通

    import visa
    
    rm = visa.ResourceManager()
    scope = rm.open_resource("TCPIP::192.168.2.2::5025::SOCKET")
    
    # All these three settings are required for SOCKET and Serial connection
    scope.write_termination = '\n'
    scope.set_visa_attribute(visa.constants.VI_ATTR_TERMCHAR, 10)
    scope.set_visa_attribute(visa.constants.VI_ATTR_TERMCHAR_EN, True)
    
    scope.clear()  # Clear instrument io buffers and status
    idn_response = scope.query('*IDN?')  # Query the Identification string
    
    print 'Hello, I am ' + idn_response
    

    2 但是开始测试的 SCPI 命令就有点难上手的感觉了. (这段卡不太懂了. 恶补中)

     RTO/RTE Oscilloscope example for Python using PyVISA
    
    import visa
    import VISAresourceExtentions
    
    # -----------------------------------------------------------
    # Initialization
    # -----------------------------------------------------------
    rm = visa.ResourceManager()
    scope = rm.open_resource('TCPIP::10.85.0.119::INSTR')
    
    # try block to catch any InstrumentErrorException() or InstrumentTimeoutException()
    try:
        scope.write_termination = ''
        # Some instruments require LF at the end of each command. In that case, use:
        # scope.write_termination = '\n'
        scope.ext_clear_status()  # Clear instrument io buffers and status
        scope.write('*RST;*CLS;:SYST:DISP:UPD ON')  # Reset the instrument
        scope.write('*ESE 1')  # Event Status Enable OPC bit - one time setting after *RST
        scope.ext_error_checking()  # Error Checking
    
        # -----------------------------------------------------------
        # Settings all in one string:
        # -----------------------------------------------------------
        scope.write('ACQ:POIN:AUTO RECL;:TIM:RANG 2.0;:ACQ:POIN 1002;:CHAN1:STAT ON;:TRIG1:MODE AUTO')
        scope.ext_error_checking()  # Error Checking
    
        # -----------------------------------------------------------
        # Acquisition:
        # -----------------------------------------------------------
        print '\nAcquisition started...'
        scope.ext_write_with_srq_sync('SING', 6000)
        print 'Acquisition finished'
        # -----------------------------------------------------------
        # Selftest:
        # -----------------------------------------------------------
        print '\nSelftest started...'
        scope.ext_query_with_srq_sync('*TST?', 120000)
        scope.ext_error_checking()  # Error Checking
        print 'Selftest finished...'
    
        print 'Finished'
    
    except VISAresourceExtentions.InstrumentErrorException, e:
        # Catching instrument error exception and showing its content
        print 'Instrument error(s) occurred:\n' + e.message
    
    except VISAresourceExtentions.InstrumentTimeoutException, e:
        # Catching instrument error exception and showing its content
        print 'Timeout error(s) occurred:\n' + e.message
    
    

    有没有这方面入门经验的分享一下, 感觉 SCPI 命令好难懂.

    谢谢

    4 回复  |  直到 2018-06-05 14:42:58 +08:00
        1
    v2byy   71 天前 via iPhone
    看开发手册啊,做自动化测试吗
        2
    wzw   71 天前
    @v2byy #1 很多测试只能半自动吧. 正在看手册... 感觉有点怪怪的. 不如 python node js php .net C 好理解. 也可能我刚开始
        3
    wzw   70 天前 via iPhone
    一个回复,三个收藏+++
        4
    fsdafsag   70 天前
    只会用 labview 控制,一般都有范例可以改或者 DLL 可以调用, 再不济也可以根据通讯协议通过 scpi 模块来通讯。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   实用小工具   ·   691 人在线   最高记录 3762   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 16ms · UTC 20:00 · PVG 04:00 · LAX 13:00 · JFK 16:00
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1