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

时间:2015-07-30 06:46:41

标签: delphi labview delphi-xe7 gpib

您好我使用的是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
  4. 如果它们成功,那意味着成功安装和配置了用于Agilent和NI MAX和驱动程序的GPIB。

    我也可以使用KeySight Connection Expert来编写和阅读,同样也是成功的。

    但是,当我使用given NI example in Delphi时。原则上它被保存为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的工作。请建议。

1 个答案:

答案 0 :(得分:1)

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

  1. 查询格式不正确,并且仪器认为它只是一个无需响应的写入语句。 (这可能是写函数没有错误,但读取函数超时的原因。)
  2. 查询格式不正确,仪器返回错误。
  3. 乐器需要有&#39; Talker&#39;功能已启用发送数据。 (大多数乐器会自动执行查询。)
  4. 有关通用GPIB命令的更多信息,请参阅National Instruments的人员reference