如何解决使用Python中的PyVISA通过GPIB连接到仪器
我正在努力获取电接触电阻,为此,我将使用Keithley 2400源表和Keithley 2182a纳伏表。这两款仪器都通过带有吉时利KUSB-488b适配器的USB通过Windows连接到Windows计算机。
我正在使用Python,Pyvisa模块和National Instruments后端(NI VISA)创建一个脚本,该脚本将允许我进行所需的测量。但是,在与仪器通信时遇到麻烦。根据Pyvisa开发人员提供的官方文档,我运行了几个简单的脚本,但是无法连接任何一种乐器。以下简单的代码块可能有助于我的解释:
>>> import pyvisa
>>> rm = pyvisa.ResourceManager()
>>> rm.list_resources()
('ASRL3::INSTR','ASRL4::INSTR','ASRL8::INSTR','ASRL14::INSTR')
>>> inst = rm.open_resource(' # Instrument address here # ')
>>> print(inst.query("*IDN?")
第4行的结果应该给我列出仪器的地址。但是,这些都不是正确的,因此,当我尝试第4行提供的四个地址时,会收到超时错误(VI_ERROR_TMO
)。此简单代码块的第4行的预期输出将是两个的GPIB地址。仪器,根据文档。我尝试使用KI-488诊断工具与两个设备进行通信。我与他们成功地进行了沟通。 SMU的地址是GPIB :: 24,纳伏表是GPIB :: 7。
我还尝试以更复杂的脚本(当前扫描)传递从诊断工具获得的GPIB地址。但这导致了
pyvisa.errors.VisaIOError:VI_ERROR_LIBRARY_NFOUND(-1073807202)
我在网上搜索了类似的错误,其中大多数是缺少dll或错误位造成的。但是,这不是我的情况,因为简单的python -m visa info
证明实现的后端是正确的。我也尝试过通过resourcemanager( path )
,但这还是不成功。
此外,我尝试安装Keithley I / O层,但是仍然没有成功。同样,在吉时利通信器中,两个设备实际上都以其相应的GPIB地址出现。问题是在使用Python和正确的地址。
解决方法
使用Keysight's website中的“ Keysight IO库套件”而不是NI-VISA,可以使用相同的KUSB-488B适配器解决类似的问题。
在运行Windows 10(19.09,64位)的PC上,我执行了以下操作:
- 从设备管理器中卸载KUSB-488B驱动程序。
- 卸载NI-VISA,重新启动。
- 删除Windows设置应用程序中已安装程序列表中提及“ VISA”,“ NI”,“ GPIB”或“ 488”的所有其余项。重新启动。
- 安装最新的KUSB-488B驱动程序。在安装过程中,选择“与Keithley命令兼容”选项(NI还有另一个选项,但我忘记了它的名字)。重新启动。
- 安装“ Keysight IO库套件”,版本“ 2020 Update 1”。重新启动。
现在,我可以在是德科技类似于“ NI-MAX”的“ Keysight Connection Expert”中看到该设备。
安装Anaconda Python(64位)并运行pip install pyvisa
之后,我可以控制仪器而没有任何错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。