配置GPIB驱动程序匹配系统

概述

GPIB Software开发人员遇到的最常见的问题是配置软件以满足每个测试系统的要求。因为一个驱动程序操作不同的系统,配置驱动程序必须容易。NI-488软件提供多种配置方法,以便用户选择最适合应用的方法。本文档介绍了NI-488 MS-DOS软件的每种配置方法。


内容

GPIB配置选项

有三种使用NI-488软件更改系统默认配置选项的方法。它们如下:

  • 运行配置工具IBCONF。
  • 执行特殊的批处理文件(.BAT),动态更改IBCONF文件。
  • 在应用程序内使用特殊配置函数。


下列章节介绍了更改驱动程序配置特性的方法,以及每种方法的优点。

 

方法1:配置工具IBCONF


IBCONF.EXE是一个面向屏幕的交互式程序,可将两组功能传递给驱动程序。第一组包含连接至GPIB接口的设备的特性。每个设备具有下列特性:

  • 符号名称(如DEV5、PLOTTER或meter)。
  • GPIB主地址和次地址。
  • 执行特定函数时的时间限制。该时间限制可确保传输不会无限期地挂起GPIB。
  • 通过字符串结束(EOS)字符、结束或识别(EOI)信号和/或字节计数执行设备调用时的数据终止方法。
  • 启用或禁用设备的背靠背函数调用的重复寻址参数。


第二组包含计算机中每个GPIB接口板卡的特性。NI-488驱动程序最多可控制两块GPIB接口板卡。每个GPIB接口板卡具有下列特性:

  • 符号名称(GPIB0或GPIB1)。
  • GPIB主地址和次地址。
  • 被指定为总线上设备的系统控制器的容量,以及作为系统控制器执行的特定操作。
  • 执行特定函数时的时间限制。
  • 执行板卡功能时的GPIB数据终止方法-通过EOS字符、EOI信号和/或字节计数。
  • 板卡使用的中断线。
  • 板卡使用的DMA通道。
  • 传输数据时的定时速度(T1延迟)。


手动执行和修改IBCONF的优点是可完全灵活地配置每个设备,且无需为每个应用程序添加配置代码。

 

方法2:IBCONF批处理模式


IBCONF批处理模式提供了另一种修改NI-488驱动程序配置参数的方法。在批处理模式下,配置信息包含在创建的配置文件中。如需从已创建的文件中加载配置信息,可输入以下命令:

ibconf -b文件名<Enter>


其中filename是配置文件的名称,例如sample.cfg。-b和文件名之间必须至少有一个空格。

您将不会看到IBCONF设备映射,但会看到请求更新内存中加载的GPIB驱动程序的提示。回答是,更改完成后无需重启计算机。但可取消该提示,通过-d选项执行IBCONF自动更新驱动程序。将自动配置驱动程序的加载版本。

批处理模式适用于发布可执行程序的GPIB开发人员和GPIB最终用户。对于已安装基础程序的开发人员来说,使用IBCONF的批处理模式是一种无需对现有程序进行任何更改即可确保正确配置的简单方法。用户只需执行批处理文件,GPIB设备将自动配置。程序员可为每个程序开发批处理文件。

批处理文件可通过任意文本编辑器编辑。批处理文件是由一对项组成的自由文本文件。每项必须用至少一个空格或换行符分隔,这是唯一的格式限制。配对的第一项是表示板卡或设备特性的助记符,或要配置的板卡/设备映射配置函数(例如,重命名、连接、断开)。对的第二项是第一项(记忆)的值。例如,如需将设备映射中的dev8重命名为扫描仪,可在批处理文件中输入以下代码:



要为gpib0启用自动串行轮询,请输入以下代码行:

查找board0 spoll yes

可使用批处理模式方法更改实际IBCONF文件中的所有特性,包括基I/O地址、中断设置和DMA通道。也可使用IBCONF设备映射表连接和断开GPIB接口板卡上的设备。表1包含所有有效配置项对的列表。任何可作为数字输入的值都可以以十进制或十六进制输入。十六进制数前必须有0x(例如,十进制64可写为0x40)。

表1.批处理模式命令对
第一项
第二项
Mnemonic
说明
查找查找板卡或设备板卡#或设备#
pad主GPIB地址数字
次地址次GPIB地址数字
tmo超时设置数字或mnemonic
eosEOS字节数字
雷奥斯在EOS上终止读取是 或 否
xeos写入EOS时置EOI为有效是 或 否
区间EOS上的比较类型7位或8位
Eot设置EOI为最后一个写入字节是 或 否
sc系统控制器(仅限板卡)是 或 否
sreSC时置REN有效(仅限板卡)是 或 否
轮询启用自动串行轮询(仅限板卡)是 或 否
tmng定时(仅限板卡)2usec,500nsec,
350nsec
e488_2启用488.2协议(仅限板卡)是 或 否
cic_protCIC协议(仅限板卡)是 或 否
int中断设置(仅限板卡)数字
端口基I/O地址(仅限板卡)数字
dma DMADMA通道(仅限板卡)数字
raddr重复寻址(仅限设备)是 或 否
name重命名设备(仅限设备)设备名称
连接连接设备至板卡(仅限设备)板卡#
断开连接断开设备与板卡的连接(仅限设备)无值
类型将当前板卡切换至PC2或PC2A模式pc2或pc2a



以下范例是配置文件范例,以及每个条目的分步解释。

范例:scanner.cfg范例配置文件

要求:

  1. 将第一个设备的名称改为扫描仪。
  2. 将第三个设备的名称更改为范围。
  3. 更改板卡0 (gpib0)的配置。
    • 主地址为2(填充2)
    • 超时设置为T30(tmo T30)
    • EOS字节至十六进制1E (eos 0x1E)
    • 系统控制器功能为否(sc no)
    • EOS与8位(二进制8位)的比较类型
    • GPIB总线定时速度至350 nsec (tmng 350nsec)


配置文件:

 

方法3:特殊配置函数

第三种配置设备的方法是使用特殊配置函数在应用程序中动态配置设备。如前所述,配置GPIB系统需要了解总线及其连接的设备。应用程序软件开发人员可动态配置驱动程序,因此初学者无需了解或编辑IBCONF。该方法也适用于在同一GPIB接口板卡上运行多种不同的系统配置。程序中的配置改动仅在程序运行时应用。终止时,配置参数恢复至原始设置。这种配置方法不仅效率更高,而且非常简单,因为它以子程序函数调用的形式出现。

IBCONFIG函数
通过使用最强大的配置函数ibconfig,只需将ibconfig函数调用添加至应用程序,即可动态配置IBCONF中的所有软件参数。无论IBCONF中的设置如何,都可以确保驱动程序配置正确。ibconfig的配置参数可分为两组:板卡参数和设备参数。板卡参数,例如,启用/禁用硬件中断或启用/禁用自动串行轮询。设备参数可启用/禁用重复寻址。

也可使用ibconfig选择主地址和次地址、超时和字符串结束终止。但是,仍然支持传统的NI-488配置函数ibpad(更改主地址)、ibsad(更改次地址)、ibtmo(更改超时设置)、ibeos(设置字符串结束字符)和ibeot(设置结束终止消息)。以下代码显示了ibconfig函数的使用方法。

REM QuickBASIC 4.5范例
REM 下列代码用于设置GPIB操作的设备。
REM
REM $INCLUDE: 'qbdecl.bas'
调用ibfind("dev1", dev%)

REM 将主地址更改为7。
选项% = IbcPAD:值% = 7
调用ibconfig(dev%, option%, value%)

REM 将超时更改为10秒。
选项% = IbcTMO:值% = 13
调用ibconfig(dev%、option%、value%)

IBLN函数
ibln函数检查指定地址的侦听器。这与NI-488.2™例程FindLstn类似,区别在于参数是单个设备地址,而不是地址数组。 ibln可用于扫描多个地址以查找总线上的侦听器。确定地址后,可使用ibconfig更改驱动程序中设备的主地址。

以下QuickBASIC代码扫描总线上所有GPIB主地址(不包含次地址)的侦听器,并报告找到的设备。

REM $INCLUDE: 'qbdecl.bas'
DIM设备%(30)
cnt% = 0
REM
REM 下列调用将dev1作为通用设备打开。
REM 需要单元描述符来调用ibln。
调用ibfind("dev1", dev%)
REM
REM 因为您要找的不是次地址,所以请设置
REM sad参数为0。 sad% = 0
REM 现在扫描30个可能的主地址。 请注意,
请注意,不检查地址0,因为它是默认值
GPIB控制器的REM地址,始终为
REM侦听。
其中,i% = 1~30

调用ibln(dev%, i%, sad%, listen%)

REM检查响应,查看侦听器是否存在于
REM地址由i%指定。 如设备正在侦听,保存
将地址重新输入数组Device%(),这是一个列表
所有活动侦听器的REM。
REM
REM 在找到每个侦听器时递增计数。

如果侦听% = 1 THEN
设备%(cnt%) = i%
cnt% = cnt% + 1
结束IF

下一个i%
REM 现在打印活动地址。
打印“以下地址存在设备”
j% = 0~cnt% - 1
打印“设备位于GPIB地址”;设备%(j%)
下一个j%

IBDEV函数
在传统的NI-488应用程序中,ibfind函数用于打开设备进行通信。ibfind返回一个数字(单位描述符),以便GPIB调用该设备。但是,要使用ibfind,必须在IBCONF中预先配置设备名称,否则ibfind将失败。如您所见,如果您不知道设备名称,这是一个缺点。

通过使用 ibdev 函数而不是 ibfind 函数,可以在不知道设备名称的情况下打开和初始化设备。 ibdev 与 ibfind 类似,但不会将设备名称作为函数的参数之一传递。 ibdev 只是打开它找到的第一个未打开的用户可配置设备并返回在 ibconfig、ibln 和所有其他设备级调用中使用的单元描述符。调用ibdev获取单元描述符后,可能需要调用ibconfig配置未使用ibdev配置的通信特性。

使用ibdev的范例如下所示。

REM bd.index%对于gpib0或gpib1为0。
bd.索引% = 0
REM焊盘%是设备的主地址
REM打开。假设在上述程序中,您确定
请注意,地址7上有一个侦听设备。
填充% = 设备%(0): sad% = 0
REM 对于必须指定的其他参数,设置
将超时时间改为10秒,启用
REM写入并禁用EOS终端。
tmo% = 13 : eot% = 1 : eos% = 0
REM 调用ibdev时,UD%返回的值为
REM单元描述符。
调用ibdev(bd.index%, pad%, sad%, tmo%, eot%, eos%, ud%)

 

总结


本文档介绍了除传统IBCONF方法之外的两种配置GPIB系统的方法:批处理模式方法和programming方法。这两种新方法均以透明方式配置驱动程序,无需或无需最终用户付出太多努力。使用批处理模式,可创建配置IBCONF中设置的批处理文件,无需最终用户实际编辑IBCONF文件。使用NI-488配置函数,通过添加函数至程序可动态配置驱动程序。三个最强大的NI-488配置函数(ibconfig、ibln和ibdev)可查找特定的侦听器并更改应用程序IBCONF中的所有配置设置。

 

Was this information helpful?

Yes

No