python做硬件自动化测试仪器_基于Python PyVisa和GPIB的硬件测试仪器控制方法

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

背景

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

技术要点

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

环境搭建

PC安装NI-MAX及使用方法

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

解压NI-MAX,双击运行setup.exe即可,安装过程中需要重启电脑;

有对应的一起和GPIB卡,想必也有正版授权的NI-MAX驱动程序了,如果没有请到其官网下载。

安装成功后在windows->所有程序->NI MAX 双击打开,如图:

f576f55533974c678b49c4c4e05206e8.jpg

Python控制硬件仪器-图1

如果此时仪器已经连接到PC,NI MAX打开后可以查看GPIB地址,如图:

34c353910933492e9e9d8f6c65e1633d.jpg

Python控制硬件仪器-图2

可以通过NI MAX与仪器直接进行通信

点击“与仪器通信”后弹出窗口,在发送字符串输入框中输入控制指令,图例为查询仪器型号指令(*IDN?)。如图所示,可以对仪器进行查询、写入、读取操作。

884dad7d59c24b3bacb8041d6d37cacc.jpg

更多关于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 指令,套用上述方法即可以实现对硬件测试仪器的自动化控制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

外点惩处函数法·约束优化问题

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主同意不得转载&#xff0c;博客主页 http://blog.csdn.net/i_love_home https://blog.csdn.net/zstu_wangrui/article/details/36242529 外点惩处函数法约束优化问题 外点法惩处函数&#xff08;r添加&#xff0c;SU…

在单元测试和TDD中指定时间的重要性

最近&#xff0c;我一直在写与自动测试有关的更高级的概念&#xff08;主要与Spock有关&#xff09;。 但是&#xff0c;在进行测试培训时&#xff0c;我清楚地看到&#xff0c;通常对特定工具的知识并不是主要问题。 即使使用Spock&#xff0c;也可以编写肿且难以维护的测试&a…

40个Java多线程问题总结

前言 Java多线程分类中写了21篇多线程的文章&#xff0c;21篇文章的内容很多&#xff0c;个人认为&#xff0c;学习&#xff0c;内容越多、越杂的知识&#xff0c;越需要进行深刻的总结&#xff0c;这样才能记忆深刻&#xff0c;将知识变成自己的。这篇文章主要是对多线程的问题…

.pro.user文件

.pro.user 用于记录打开工程的路径&#xff0c;所用的编译器、构建的工具链、生成目录、打开工程的qt-creator的版本等。 当更换编译环境时&#xff0c;要将其删除。

python tkinter实例_python绘制一个图形示例源码(tkinter)

【实例简介】 【实例截图】【核心代码】 # -*- coding: utf-8 -*- #!/usr/bin/python import math from tkinter import * class PTS: def __init__(self): self.x 0 self.y 0 points [] def LineToDemo(): screenx 400 screeny 400 canvas Canvas(width screenx,height…

PHP算法之冒泡排序

//冒泡排序 //①思路,先比较出第一次,找一个最大的值,排到最后; //②重复count遍之后,就能得到排序; //③优化,每一次循环之后不需要再次全部重复; $array [11,5,4,58,1,222,34]; for ($j 0; $j< count($array)-1; $j) { for($i 0 ; $i < count($array)-$j-1; $i){if(…

jaxb 命名空间_在JAXB解组期间应用名称空间

jaxb 命名空间对于某些XML模式来说&#xff0c;它是一组严格的规则&#xff0c;用于规定XML文档的结构方式。 但是对于其他人来说&#xff0c;通常的准则是指出XML的外观。 这意味着有时出于某些原因&#xff0c;人们希望接受不符合XML模式的输入。 在此示例中&#xff0c;我将…

pro文件

配置 注释 以“#”开始&#xff0c;到这一行结束。 快捷键&#xff1a;Ctrl / CONFIG 指定编译器选项和项目配置&#xff0c;值由qmake内部识别并具有特殊意义。 以下配置值控制编译标志&#xff1a; 选项说明release项目以release模式构建。如果也指定了debug&#xff0c;那么…

Java Thread 总结

线程的概述&#xff08;Introduction&#xff09; 线程是一个程序的多个执行路径&#xff0c;执行调度的单位&#xff0c;依托于进程存在。 线程不仅可以共享进程的内存&#xff0c;而且还拥有一个属于自己的内存空间&#xff0c;这段内存空间也叫做线程栈&#xff0c;是在建立…

前端和后端哪个工资高_新媒体运营和网络运维哪个好,哪个工资待遇高,门槛低?...

文/水流云在草青青通常情况下&#xff0c;门槛高低和待遇高低成反比。工资待遇和工作本领成正比。除非你有人脉或贵人&#xff0c;除非你踩狗屎运。门槛低&#xff0c;待遇高的工作对绝大多数人而言是梦话。不知题主朋友的特长是什么&#xff1f;有哪些工作经验&#xff1f;青青…

python框架源码学习

最近下了一个别人的接口测试框架原码来学习 1.有用到logbook模块进行日志管理 2.使用xlrd模块对excel数据表的操作 3.使用自定义的代码输出测试报告 4.使用logger模块记录运行时日志 主要是看了关于接口的代码&#xff1a;封装了http请求的get/post请求 用法&#xff1a; 需要导…

使用TestContainers进行数据库测试

如果您曾经编写过测试数据库交互的代码&#xff0c;例如数据访问对象&#xff0c;那么您很可能遇到了测试中最长期的烦恼之一&#xff1a;为了准确地测试这些交互&#xff0c;需要一个数据库。 为了本文的方便&#xff0c;让我们考虑一个将PostgreSQL用作其环境的一部分的应用…

cuda安装配置VS2013

1.1 安装cuda 首先官网下载安装包&#xff0c;这个就不细说了 &#xff0c;我下的是这个版本cuda_8.0.61_win10.exe&#xff0c;&#xff0c;注意win7和win10版本要对应&#xff0c;千万别弄错了 之后双击会出现如下截图&#xff0c;解压完以后一直点下一步如下图出现这个等半个…

两列布局、三列适应布局、两列等高适应布局。

一. 两列布局&#xff1a;左侧定宽、右侧自适应。 四种方法 &#xff1a;flex 、position、float和负外边距、外边距 1. 使用flex. <!DOCTYPE html> <html> <head><meta charset"utf-8"><title></title><style type"tex…

操作系统的线程和进程的区别_面试官:你熟悉多线程嘛?线程跟进程有什么区别?...

这篇文章跟大家聊聊线程&#xff0c;讲到线程&#xff0c;⼜不得不提进程了~进程我们估计是很了解的了&#xff0c;在windows下打开任务管理器&#xff0c;可以发现我们在操作系统上运⾏的程序都是进程。什么是叫一个进程&#xff1f; 什么叫一个线程&#xff1f;进程&#xff…

以OpenCV为例配置VS第三方库

正常情况下&#xff0c;你拿到的别人的第三方动态库&#xff08;静态库调用方式这里不讲&#xff0c;有另外一篇文章&#xff09;至少应该包含下面三种文件&#xff1a; 1. 头文件&#xff0c;这个一般放在include这样字眼的文件夹下&#xff0c;比如OpenCV的&#xff1a;然后i…

光纤接口怎么接 图解_光纤的数据比网线快很多倍,但为什么没有在家庭局域网中普及呢?...

光纤的数据吞吐量比网线大很多&#xff0c;速度也更快&#xff0c;网络光纤入户已经普及&#xff0c;但是家庭内组网却没有普及&#xff0c;大部分家庭组网还是网线较多。分析起来主要的原因有&#xff1a;光纤线的价格和网线差不多&#xff0c;但是因为光纤所使用的专用的光接…

项目Alpha冲刺--1/10

项目Alpha冲刺--1/10作业要求 这个作业属于哪个课程软件工程1916-W(福州大学)这个作业要求在哪里项目Alpha冲刺团队名称基于云的胜利冲锋队项目名称云评&#xff1a;高校学生成绩综合评估及可视化分析平台这个作业的目标团队的代码规范、本次冲刺任务与计划其他参考文献1.邹欣.…

Java连接postgresql数据库

1.下载驱动jar 下载地址&#xff1a;https://jdbc.postgresql.org/download.html 2.导入jar包 新建lib文件夹&#xff0c;将下载的jar驱动包拖到文件夹中。 将jar驱动包添加到Libraries 3.程序代码如下&#xff1a;HelloWorld.java package test; import java.sql.Connecti…

jvm默认的初始化参数_您是否应该信任JVM中的默认设置?

jvm默认的初始化参数如今&#xff0c;JVM被认为是智能的。 预期配置不多-只需设置要在启动脚本中使用的最大堆&#xff0c;您就可以进行了。 所有其他默认设置都很好。 大概我们当中有些人误以为。 实际上&#xff0c;在运行时期间发生了很多事情&#xff0c;无法自动调整性能&…