0

您好,我正在使用 LabView 2012、Delphi XE7 和 GPIB(我认为是 488.2)、Win7 SP1 和 Agilent 53131A。

我使用了给定的 NI 示例。

NI Labview 示例 - 可在 LabVIEW 帮助 - GPIB.vi 中找到。

我尝试读写以从 2 个通道查询频率,并且它们是成功的。它们被连续发送和读取。

  1. *国际化域名?
  2. :FUNC '频率 1'
  3. :阅读:频率?

如果它们成功,则意味着用于 Agilent 和 NI MAX 的 GPIB 和驱动程序已成功安装和配置。

我还可以使用 KeySight Connection Expert 进行读写,同样成功。

但是,当我在 Delphi 中使用给定的 NI 示例时。最初它被保存为 Delphi 3 或 4。

我将 Scope Simple 示例用于通用计数器。我主要用它以简单的方式写作和阅读。它只需要初始化、读/写和清理

我在 SimpleForm.pas 中更改了以下代码,如下所示

检测到的设备GPIB0::3::INSTR在第 32 行,

PRIMARY_ADDR_OF_COUNTER = 3;  

要写入和读取的字符串,在第 132 行,

CommandBox.Text := '*IDN?';

然后它被编译没有错误并运行。

要写入的字符串已成功

但是一读,就没有成功。字符串输出应该是' HEWLETT-PACKARD,53131A,0,4806'.

程序结束时的错误如下:-

Unable to read from device
ibsta = SC000 <ERR TMO>
iberr = 6 <EABO>
ibcntl = 0

从这些读数中,我发现:-

EABO 意味着中止

我不熟悉GPIB的工作。好心提醒。

4

1 回答 1

1

您是正确的,这EABO是中止的标识符。另外,从中我们可以看出ibsta = SC000 <ERR TMO>,中止的原因是GPIB超时错误。我不熟悉 Keysight Connection Expert 或您的仪器,但由于错误来自 GPIB 超时,最可能的原因是:

  1. 查询格式不正确,仪器认为它只是一个不需要响应的写语句。(这可能是写函数没有错误,但读函数超时的原因。)
  2. 查询格式不正确,仪器返回错误。
  3. 仪器需要启用“Talker”功能才能发送数据。(大多数仪器通过查询自动执行此操作。)

有关通用 GPIB 命令的更多信息,请参阅 National Instruments 人员的此参考

于 2015-08-27T20:26:48.293 回答