基于Python PyVisa和GPIB的硬件测试仪器控制方法

基于Python和GPIB的硬件测试仪器控制方法

背景

在物联网通信时代,嵌入式模块开发越发广泛,自动化测试成为大家老生常谈的话题。对于一些高精度仪器,我们知道它是用GPIB控制用来测试,也希望可以通过一个程序实现自动化控制,但自动化控制的仪器或者程序往往需要高昂的价格。本人也受此困扰,因此查找了很多资料,终于让我发现了自动化控制这些仪器的方法。本文就为大家介绍下如何控制这些硬件仪器。

技术要点

本文介绍基于GPIB接口和Pyvisa控制硬件测试仪器的方法。控制方法是通用的,控制不同的仪器需要获得被控制仪器的visa指令即可。Pyvisa需要配合windows的visa32.dllvisa64.dll使用,Python环境需使用Python2.x。本文以N6705C(N6705B)为例。

环境搭建

PC安装NI-MAX及使用方法

用于控制GPIB与连接端通信,即可以查看GPIB地址,也可以直接与仪器通信,并控制仪器。

  1. 解压NI-MAX,双击运行setup.exe即可,安装过程中需要重启电脑;
    有对应的一起和GPIB卡,想必也有正版授权的NI-MAX驱动程序了,如果没有请到其官网下载。
  2. 安装成功后在windows->所有程序->NI MAX 双击打开,如图:
    基于Python PyVisa和GPIB的硬件测试仪器控制方法_第1张图片
    Python控制硬件仪器-图1
  3. 如果此时仪器已经连接到PC,NI MAX打开后可以查看GPIB地址,如图:
    基于Python PyVisa和GPIB的硬件测试仪器控制方法_第2张图片
    Python控制硬件仪器-图2
  4. 可以通过NI MAX与仪器直接进行通信
    点击“与仪器通信”后弹出窗口,在发送字符串输入框中输入控制指令,图例为查询仪器型号指令(*IDN?)。如图所示,可以对仪器进行查询、写入、读取操作。
    基于Python PyVisa和GPIB的硬件测试仪器控制方法_第3张图片
  5. 更多关于NI MAX操作如下
    参考文档:https://www.ni.com/getting-started/set-up-hardware/instrument-control/zhs/gpib-connect

检查当前windows是否缺少visa32.dll

如缺少,请下载并存放系统路径:

1、Windows 95/98/Me系统,将visa32.dll复制到C:\Windows\System目录下。
2、Windows NT/2000系统,将visa32.dll复制到C:\WINNT\System32目录下。
3、Windows XP/WIN7/win10系统(64位系统对应64位dll文件,32位系统对应32位dll文件),
将visa32.dll复制到C:\Windows\System32目录下。
4、如果您的系统是64位的请将32位的dll文件复制到C:\Windows\SysWOW64目录。

下载及安装使用说明地址:

   32位:https://dl.pconline.com.cn/download/1374544.html
   64位:https://www.jb51.net/dll/visa64.dll.html

安装Python2.7

1、必须使用python2.x,python3.x无法使用pyvisa库结合NI-MAX控制GPIB;
2、安装多个Python环境,在使用pycharm写脚本时,注意在设置中选择不同的python环境。
3、Python2.x脚本中注意不可以使用中文;

为解决python2.x和3.x的共存,实现DOS可以调用python2.x,请到python2.x安装路径下:修改python.exe 为python2.exe,pythonw.exe为pythonw2.exe

加载pyvisa库函数

1、使用pycharm加载pyvisa最新版本包;
2、若pycharm无法加载pyvisa,则使用pip安装:dos窗口执行pip install --user PyVISA;
3、若pip不可用,请检查pip是否添加到系统变量patch中。
4、脚本import visa:需要注意的是安装的库函数是pyvisa,脚本中加载的是visa,visa属于pyvisa

使用脚本控制GPIB->VISA控制仪器

1、visa指令有query/write/read;
2、安捷伦电源指令有:*IDN?->查询仪器型号、OUTP OFF->关闭供电、OUTP ON->打开供电、meas:curr?->输出测量值(电流);
3、N6705C指令有:*IDN?->查询仪器型号、Output off, (@1)->关闭供电、Output on, (@1)->打开供电、Meas:Current? (@1)->输出测量值(电流);
4、visa控制指令参考链接:
https://blog.csdn.net/pugongying1988/article/details/79225898

Python控制硬件测试仪器参考Demo

控制安捷伦电源

# -*- coding: UTF-8 -*-
import visa             
import time
gpib_addr = 'GPIB0::1::INSTR'       #PC安装NI MAX后可以查看GPIB地址,此工具也可以直接与GPIB通信
rm = visa.ResourceManager()        #获取visa资源,将python的visa和系统visa关联起来
gpib_inst = rm.open_resource(gpib_addr)  #打开GPIB地址连接
print(gpib_inst.query('*IDN?'))        #查询仪器型号
gpib_inst.write("OUTP OFF")         #关闭供电开关
time.sleep(2)
gpib_inst.write("OUTP ON")          #打开供电开关
#读取耗流
count =0
while count < 10:
    gpib_inst.write("meas:curr?")   #写入耗流测量输出指令
    ma=gpib_inst.read()
    print(ma)
    count+=1

控制N6705B 高精度耗流仪

# -*- coding: UTF-8 -*-
import visa 
import time
gpib_addr = 'GPIB0::5::INSTR'   #PC安装NI MAX后可以查看GPIB地址,此工具也可以直接与GPIB通信
rm = visa.ResourceManager()     #获取visa资源,将python的visa和系统visa关联起来
gpib_inst = rm.open_resource(gpib_addr)  #打开GPIB地址连接
print(gpib_inst.query('*IDN?'))          #查询仪器型号
#读取耗流
count =0
while count < 10:
    gpib_inst.write("Meas:Current? (@1)") #写入耗流测量输出指令
    ma=float(gpib_inst.read())
    print(ma)
    count+=1

结尾

以上是我实现控制硬件测试一起的方法,希望对你有所帮助,这个方法是通用的,适应于任何通过GPIB访问的仪器。如果需要,你执行得到对应仪器的visa 指令,套用上述方法即可以实现对硬件测试仪器的自动化控制。

你可能感兴趣的:(Python,python,经验分享)