在GPIB上使用来自仪器的PyVISA没有响应

时间:2017-11-17 15:28:14

标签: python visa gpib pyvisa

我试图用PyVISA控制GPIB上的仪器(非常旧的霍尔测量设备)。我知道它适用于labview,在那里我发现哪些地址用跟踪器执行什么和一些基本命令但是没有快乐。我被要求在python 3中编写DAQ和分析代码。

到目前为止,我已经能够确定地址:

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使用吉时利源仪表IDN查询,所以我知道后端正在工作。该仪器是生物辐射HL 5200,因为它对任何人都有用,我&#39 ;我发现没有手册,也没有在线参考。)

这是一张读取磁铁位置的labview block diagram图像。我已经能够通过写pyvisa改变位置,但阅读仍然暂停,github上的类似问题让我相信终止角色是错误的但我还没有解决。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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