在物联网通信时代,嵌入式模块开发越发广泛,自动化测试成为大家老生常谈的话题。对于一些高精度仪器,我们知道它是用GPIB控制用来测试,也希望可以通过一个程序实现自动化控制,但自动化控制的仪器或者程序往往需要高昂的价格。本人也受此困扰,因此查找了很多资料,终于让我发现了自动化控制这些仪器的方法。本文就为大家介绍下如何控制这些硬件仪器。
本文介绍基于GPIB接口和Pyvisa控制硬件测试仪器的方法。控制方法是通用的,控制不同的仪器需要获得被控制仪器的visa指令即可。Pyvisa需要配合windows的visa32.dll或visa64.dll使用,Python环境需使用Python2.x。本文以N6705C(N6705B)为例。
用于控制GPIB与连接端通信,即可以查看GPIB地址,也可以直接与仪器通信,并控制仪器。
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
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
1、使用pycharm加载pyvisa最新版本包;
2、若pycharm无法加载pyvisa,则使用pip安装:dos窗口执行pip install --user PyVISA;
3、若pip不可用,请检查pip是否添加到系统变量patch中。
4、脚本import visa:需要注意的是安装的库函数是pyvisa,脚本中加载的是visa,visa属于pyvisa
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
# -*- 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
# -*- 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 指令,套用上述方法即可以实现对硬件测试仪器的自动化控制。