无法通过 GPIB 以简单的方式从 Agilent 53131A 读取

Unable to read from Agilent 53131A by GPIB in the simple way

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

我使用了给定的 NI 示例。

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

我尝试通过写入和读取来查询来自 2 个频道的频率,它们都成功了。 它们被连续发送和读取。

  1. *IDN?
  2. :FUNC 'FREQ 1'
  3. :READ:FREQ?

如果成功,则表示已成功安装和配置 GPIB for Agilent 和 NI MAX 以及驱动程序。

我也能用KeySight Connection Expert的写和读了,同样成功了。

但是,当我使用given NI example in Delphi的时候。最初它被保存为 Delphi 3 或 4.

我使用了通用计数器的 Scope Simple 示例。我主要用它来以简单的方式写作和阅读。它只需要初始化,read/write 和清理

我更改了如下代码,在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的工作不熟悉。请指教。

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

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

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