什么会导致 GPIB 无响应

Posted

技术标签:

【中文标题】什么会导致 GPIB 无响应【英文标题】:What can cause a GPIB to be unresponsive 【发布时间】:2012-06-26 21:43:43 【问题描述】:

我有一个 GPIB 设备,我正在使用 National Instruments USB 转 GPIB 进行通信。 USB转GPIB很好用。

我想知道什么会导致 GPIB 设备无响应?如果我关闭设备并重新打开它会响应,但是当我运行我的程序时它会首先响应。然后它切断了我什至无法与它只是超时的 GPIB 设备通信。

我填满缓冲区了吗?

其他提问者的一些细节

我正在使用 PyVisa 控制 National Instruments GPIB 卡(不是 USB)。 GPIB 总线上的仪器是 Newport ESP300 运动控制器。在几个小时的会话期间(一直向 ESP300 发送命令和从 ESP300 读取),ESP300 有时会停止收听并变得无响应。所有读取都超时,甚至*idn? 都没有产生响应。

我能做些什么来清除这种状态吗?例如开IFC线?

【问题讨论】:

我记得,您必须确保在发送新命令之前阅读结果。此外,如果您发送不正确的内容,则读取只会超时。在所有情况下都完全正确是很痛苦的。 您必须正确订购它们是对的,但这不会导致超时。即使您已经收到响应,但如果您重复发送命令会发生什么。这会导致它没有响应吗? @Ashitkalax 抱歉,我不记得了。这在很大程度上取决于您正在与之交谈的仪器以及它们的通信堆栈的健壮程度。 我还不确定,但是设备上的缓冲区可能溢出了,设备将被锁定。我必须关闭设备并重新打开才能使设备正常工作。 我想提出这个问题,因为我遇到了类似的问题并且还没有答案 - 所以我根据我的情况添加了一些细节。 【参考方案1】:

由于您使用的是 National Instruments 硬件,您可以在后台运行 NI Trace 以检查从程序发出的所有命令。在 Trace 中检查最后一个命令及其从程序发出的导致硬件挂起的参数。

You can download NI IO Trace here

【讨论】:

【参考方案2】:

应该有一个明确的命令(类似于"*CLS?",但不要引用我的话)。当我第一次连接到设备时,我总是运行它。然后确保你有一个好的超时时间。我发现我的设备大约需要 1 秒。不到 1 秒就完成了,所以我错过了写入后的读取。大多数情况下,超时是因为您刚刚错过了它,或者您正在阅读一个没有返回的命令。确保您还在写入之间检查错误队列中的错误,以确保写入时确实正确。

【讨论】:

【参考方案3】:

如果设备不再监听(这里可能就是这种情况),即使命令 *CLS 也将不起作用。强制重置设备接口无论其状态(侦听与否)的唯一方法是发送低级 gpib 总线消息“Selected Device Clear”(它由标准 gpib 库的函数“ibclr”实现,例如 @ 987654321@ 第 3-7 页,但我不知道 Python 中的等价物是什么)。此命令旨在在发生 GPIB 错误时使用,我一直在这样做并且从未遇到过问题。为使其正常工作,您还应该监视所有 gpib 调用的返回值——通常人们不会这样做,因此在程序挂起之前他们不会意识到错误。

【讨论】:

以上是关于什么会导致 GPIB 无响应的主要内容,如果未能解决你的问题,请参考以下文章

网络驱动器无响应导致资源管理器卡住

.netcore视图跳转无响应

请求接口无响应

繁忙的应用程序导致 Windows 7 上出现错误的“无响应”状态 - WM_UPDATE

linux服务器配置差异导致multipart/form-data文件上传请求可能无响应?

加载大页面时 Internet Explorer 无响应