1 引言
GPIB作为许多仪器的通讯接口,有着鲁棒性好、稳定、高速、易于维护和扩展等特点。GPIB目前以及未来十几年中仍将会广泛使用,很大程度上是由于软件和仪器驱动程序的广泛可用性。作为一种易于使用的、久经考验的仪器控制接口,它具有以下优点[1][2][3]:
超过5000多种可选的GPIB仪器,适合以积木方式将各种类型的设备组合成系统;
与其它仪器接口的软件兼容(由NI-VISA和SCPI提供);
被广大开发人员熟悉,应用广泛;
低延迟性能(低于100μs,优于LXI和USB);
高带宽性能(使用IEEE 488可达1.8Mb/s,使用HS488可高达8Mb/s);
电缆和接口坚固耐用。
Labview作为开发测试与测量应用得到了广大设计人员的亲睐,它易学易用,所提供的丰富的图形控件、采用的数据流模型以及大量的驱动程序和分析函数工具使创建测试与测量应用变得更为轻松[4]。
2 系统构成
本设计使用的NI的TNT4882芯片,它是一款单芯片,集高速、听讲功能与一体的GPIB专用接口芯片。TNT4882有三种工作模式[2][3][5]:单芯片模式、Turbor7210模式与Turbor9914模式。不同的模式决定哪些寄存器和主接口相连、寄存器的位的行为和与GPIB相连的FIFO。单芯片模式是最简单实用的模式,所以本设计采用单芯片模式,主要实现的功能是上位机指令通过GPIB控制单片机8位IO口,达到控制8个继电器的目的。本设计使用的上位机配置为奔腾四2.0GHzCPU,1G内存,由此可推断在此配置之上均可正常测试此设计。系统结构图如下所示。
其中,主要元器件TNT4882采用的是TNT-4882BQ芯片,静态RAM采用的是CY62256L芯片,GPIB是指24根引脚的通用GPIB接口,GPIB转USB卡使用的是NI公司GPIB-USB-HS转接卡,该卡实现将GPIB接口信号转换为USB接口信号使电路板与PC机通讯。
3 软件设计
3.1 下位机程序设计
TNT4882实现GPIB数据通讯的方式有程序I/O与DMA方式,程序I/O又分为轮询状态查询方式和中断驱动状态两种方式[3][5]。本设计下位机采用的就是轮询状态查询方式。下位机软件设计流程如下图所示。
关键程序代码如下:
void init4882(unsigned char primary_address)
{
CMDR = 0x22;
/* soft reset */
SPMR = 0x80;
/* to place TNT 4882 in Turbo+7210 mode */
AUXMR = 0x80;
SPMR = 0x99;
AUXMR = 0x99;
HSSEL = 0x01;
/* To place TNT 4882 in one chip mode */
HIER = 0xc0;
MISC = 0x00;
AUXMR = 0x02;
/* chip reset auxiliary command to assert the local pon message */
SPMR = 0x0f;
ADMR = 0x31;
/* Set the GPIB Address, this step set dual primary addressing mode */
ADR = primary_address;
/* set GPIB address for the device */
ADR = 0xe0;
/* disable internal Address Register 1 since TNT 4882 has no secondary address */
AUXMR = 0x51;
/*write the Hold off Handshake immediately */
AUXMR = 0x00;
/* clear the local power on message to begin GPIB operation */
} /* init4882 */
听讲部分代码如下:
ltinit();
CNT0 = 0x00;
CNT1 = 0xff;
CFG = 0x68;
CMDR = 0x04;
AUXMR = 0x03;
/* wait for data available */
do
{
ltstatus = ADSR;
3.2 上位机程序设计
由于下位机定义了命令协议为::setp 0,1。命令解释:单片机P口0位输出1。其中位选择范围0~7,分别代表第0位~第7位I/O口。输出值为0或1,分别代表输出低电平或高电平。
上位机采用Labview工具进行通讯与界面开发,如下图所示。界面为了直观,将Switch开关与命令:setp1,0或:setp1,1等关联起来,例如,当开关S3打开的时候意味着执行指令:setp2,1。此时I/O口3输出高电平,S3LED灯亮,控制第三个继电器打开。其余开关与LED灯原理相同。
程序采用Labview自带的GPIB控件进行通讯,简单实用。并且在操作界面能够同时显示上次与本次开关指令,便于查询。
4 结束语
通过本设计的开发,实现了通过GPIB接口控制继电器开关的功能,硬件设计与软件开发程序性能可靠。可以用于产品的二次开发,利用PC机程序控制继电器开关,达到自动控制与测量的目的。操作界面简明直观,提高了工作效率,具有很好的工程应用意义。并且基于Labview开发的程序可以根据实际需要进行更改,具有很好的扩展性。
参考文献:
[1] 李迪,陆钰.基于GPIB的测试程序的研究与实现[J].电子技术.2009,(11):2.
[2] 高玉栋,肖铁军,王刚,韩晓茹.基于GPIB接口的远程测试系统的设计[J].传感器与仪器仪表.2008,24(10):234-236.
[3] TNT 4882 Programmer Reference Manual[M].北京:July 1995Edition.National Instruments Corporation.
[4] 陈锡辉,张银鸿.LabVIEW8.20程序设计从入门到精通[M].北京:清华大学出版社.
[5] TNT 4882 Single-Chip IEEE 488.2 Talker/Listener ASIC[Z].NI datasheet.
作者简介:冯文武(1976-),男,工程师,主要从事自动控制和防静电方向的技术研究。