基于NI-VISA 、pyvisa和python的示波器控制(一)

本文实验采用泰克(tektronix)MSO44 示波器,搭配MACBOOK PRO电脑,开发环境采用python 3.9 和PyCharm 以及python 的其他函数库来实现功能。另外使用了NI—VISA 库,本文只介绍如何准备工作和pyvisa的简介,下一章讲介绍如何控制及示波器采集波形数据。

准备工作

在开始之前我们需要做一些准备工作以:

  1. 安装NI-VISA,网址如下NI-VISA 下载:各位可自行下载安装相关;
  2. 安装python 3.9 ,网址为:Pyhon.org,各位可自行安装,值得注意的是MacBook自带了python 2.7 但是该版本官方已停止支持,建议尽快升级为最新版本,实际也有办法做替换的,但是我能力有限就未做替换直接下载了最新版本的python 3.9
  3. 安装PyCharm,方便你的调试工作,选择Community版可免费使用。PyCharm 下载
  4. 在PyCharm中新建项目并配置项目解释器;
  5. 安装相应的功能模块,
    图一
    图2

以上准备工作基本完成,

示波器控制

此处主要是用pyvisa 函数库来实现对示波器的指令发送控制操作,来让我们看下下面这些例子:

  1. 连接示波器
    import pyvisa as visa
    rm = visa.ResourceManager()
    rm.list_resources()
    my_instrument = rm.open_resource('GPIB0::14::INSTR')
    print(my_instrument.query('*IDN?'))
    
    这里要这样写不能使用如下的写法,下面的写法会出现奇奇怪怪的问题或者没办法正常连接仪器,下面这种写法是之前旧的写法。
    import visa
    
    导入pyvisa之后,创建一个ResourceManager对象。它是可以带参数调用的但我没有去研究,这里是不带参数的调用,
    有了ResourceManager之后,就可以使用list_resources方法列出所有可用的资源。可以打印出来选择正确的设备名称
    在这种情况下,有一个USB仪器的仪器编号为0,所以用实例化的ResourceManager打开“USB0::0x0699::0x0527::C018073::INSTR”,并将返回的对象赋值给my_instrument。
    print(my_instrument)
    <GPIBInstrument('USB0::0x0699::0x0527::C018073::INSTR')>
    
    ResourceManager提供了不同类型的方法用于查询参数和属性
    通过下面的函数查询设备信息,指令为“*IDN”,这个指令在支持NIVISA的设备上都适用。query函数可以替代发送指令的写和读两个函数,本来两条指令才能做的操作这一条指令就能办到。
    所以:
    my_instrument.query("*IDN?")
    
    等同于
    my_instrument.write('*IDN?')
    print(my_instrument.read())
    
  2. 正确配置仪器很重要
    正确配置仪器才能保证仪器能够返回我们想要的数据,而不是返回一堆错误和error来是我们头疼,所以正确配置仪器就很重要了。以下是read_termination和write_termination的设置指令
    my_instrument.read_termination = '\n'
    my_instrument.write_termination = '\n'
    my_instrument.query('*IDN?')
    
    这里我们用“n”,也就是“换行”。这是一个常见的值,另一个是’ r ‘即’回车’,在某些情况下使用null字节’ 0 '。
    以下指令用于设置波特率:
    my_instrument.baud_rate = 57600
    
  3. 检查指令是否存在错误
    当使用query时,我们测试对仪器的写入和读取。首先要做的是尝试确定问题是在写操作还是读操作期间发生的。一般发送命令错误,仪器会发出提示声或者错误提示消息。
    我们可以通过发送切换指令来确认示波器有么有正确识别指令。
    如果发送的命令正确接受了但是读取出现了问题就要检查,读取部分是否有设置上的问题。比如read_termination属性是不是设置的不对。
    建议在读取前加入一定的延时以确保能够完整的得到所需的数据。
使用PythonPyVISA库来控制Keysight示波器可以极大地简化仪器的自动化控制过程。以下是些基本步骤示例代码,帮助你开始使用PyVISA库来控制Keysight示波器: 1. **安装PyVISA库**: 首先,你需要安装PyVISA库。可以使用pip进行安装: ```bash pip install pyvisa ``` 2. **安装VISA后端**: PyVISA需要VISA后端,常用的是NI-VISApyvisa-py。可以根据你的需求选择合适的VISA后端。这里我们以pyvisa-py为例: ```bash pip install pyvisa-py ``` 3. **连接示波器**: 确保你的电脑通过USB或以太网连接到Keysight示波器。 4. **编写Python代码**: 以下是个简单的示例代码,演示如何连接示波器并获取波形数据: ```python import visa import pyvisa # 创建资源管理器 rm = pyvisa.ResourceManager() print(rm.list_resources()) # 连接示波器(根据实际资源名称修改) scope = rm.open_resource('USB0::0x2A8D::0x1780::MY53212345::INSTR') # 查询示波器ID print(scope.query('*IDN?')) # 设置示波器参数 scope.write('ACQUIRE:TYPE NORMAL') scope.write('ACQUIRE:MODE RTIME') scope.write('ACQUIRE:POINTS:AUTO ON') # 获取波形数据 scope.write('DIGITIZE CHANNEL1') scope.write('WAVEFORM:DATA?') waveform_data = scope.read_raw() # 关闭连接 scope.close() rm.close() # 处理波形数据 print(waveform_data) ``` 5. **解释代码**: - `ResourceManager()`: 创建资源管理器对象。 - `list_resources()`: 列出所有可用的资源。 - `open_resource()`: 打开示波器资源。 - `query()`: 发送查询命令并获取响应。 - `write()`: 发送命令到示波器- `read_raw()`: 读取原始数据。 6. **处理数据**: 根据需要处理获取到的波形数据,例如绘图或分析。 通过这些步骤,你可以使用PyVISA库有效地控制Keysight示波器,并进行各种自动化操作。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值