【问题标题】:No response using PyVISA from instrument on GPIB使用 GPIB 上仪器的 PyVISA 没有响应
【发布时间】:2017-11-17 15:28:14
【问题描述】:

我正在尝试使用 PyVISA 在 GPIB 上控制仪器(非常旧的霍尔测量设备)。我知道它适用于labview,在那里我发现了哪些地址可以使用跟踪器执行什么操作以及一些基本命令,但没有任何乐趣。我被要求在 python 3 中编写数据采集和分析代码。

到目前为止,我已经能够识别地址:

import visa
rm = visa.ResourceManager()
print(rm.list_resources())
>>>('ASRL1::INSTR', 'GPIB0::3::0::INSTR', 'GPIB0::3::1::INSTR', 'GPIB0::3::3::INSTR', 'GPIB0::3::4::INSTR', 'GPIB0::3::5::INSTR', 'GPIB0::3::6::INSTR', 'GPIB0::3::7::INSTR', 'GPIB0::3::8::INSTR', 'GPIB0::3::9::INSTR', 'GPIB0::3::10::INSTR')

但是,当我尝试使用任何“wave”或实际上的测量命令字符串(找到跟踪 labview I/O)进行查询时,我总是遇到超时错误。

instr3_8 = rm.open_resource('GPIB0::3::8::INSTR')
instr3_8.query("*IDN?")
>>>VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed.

这是我尝试从仪器中读取的所有内容的结果。

(PyVISA 和 GPIB 与 Keithley 源仪表 IDN 查询一起工作,所以我知道后端正在工作。该仪器是 bio-rad HL 5200,可能对任何人都有用,我没有找到任何手册和几乎没有在线参考。)

这是读取磁铁位置的labview block diagram 的图像。从那以后,我可以通过使用 pyvisa 编写来改变位置,但阅读仍然会超时,github 上的类似问题让我相信终止字符是错误的,但我还没有修复。

【问题讨论】:

  • 你能把labview代码贴在它工作的地方吗,我们可能会看到差异。
  • 据我了解,在 LabView 的框图之外没有可访问的“代码”,但跟踪器拥有发送到仪器的所有内容。
  • 这里的“代码”是指labview的框图,对于我们labview的用户来说,这是实际的代码,您可以将其发布为图像。
  • 抱歉,我已经把一个链接放到一个简单的接收/阅读上,该链接在 labview 中有效,但在 python 中无效

标签: python visa gpib pyvisa


【解决方案1】:

问题归结为 PyVISA 和 NI MAX 在从仪器读取时无法识别终止字符。在用 .read_termination 尝试了所有可能的终止字符后,我发现一个可以工作的字符终于可以从我的大厅探针中读取了。

【讨论】:

    【解决方案2】:

    非常旧的 GPIB 仪器通常具有不完整或非标准的 GPIB 实现。例如,它们可能缺乏对 *IDN? 的支持,或者只有一个硬编码的命令终止字符。

    其中一些旧仪器还使用地址 +1 作为“打印机”地址。所以仪器会保留它设置的地址,但也会保留下一个地址。如果同一网络上有更多(旧)仪器,这可能会造成严重混乱,因此最好不要使用后续地址,而是使用 1、3、5、7。

    此外,即使只是过于频繁地轮询状态字节也会使真正旧仪器的处理能力超载,更不用说读取应答缓冲区了。

    【讨论】:

      猜你喜欢
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多