我正在研究接触电阻,为此我将使用 Keithley 2400 源表和 Keithley 2182a 纳伏表。两台仪器都通过带有 Keithley KUSB-488b 适配器的 USB 连接到 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 行的结果应该给我一个我的仪器地址的列表。但是,这些都不正确,因此VI_ERROR_TMO
当我尝试第 4 行提供的四个地址时,我得到一个超时错误 ()。这个简单代码块的第 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 Layer,但还是没有成功。此外,在 Keithley 通信器中,这两个设备实际上都带有相应的 GPIB 地址。问题在于使用 Python 和正确的地址。