梁芳芳 李南安
(廣東工程職業(yè)技術學院,廣東廣州510520)
越來越多的測量儀器提供GPIB(General Purpose Intefface Bus)總線接口,通過該總線可以方便快捷地連接帶有GPIB接口的儀器及計算機,組成一個GPlB網(wǎng)絡。同時在工業(yè)控制領域支持485網(wǎng)絡的儀器大量存在,為使支持485網(wǎng)絡的儀器快速接入到GPIB網(wǎng)絡,本文設計了一種性價比突出的RS485一GPIB轉(zhuǎn)換器,該轉(zhuǎn)換器利用計算機最常用的RS485接口,控制帶有485接口的儀器,在計算機與儀器之間建立數(shù)據(jù)傳輸?shù)耐ǖ馈?/p>
RS485-GPIB轉(zhuǎn)換器的設計,旨在使帶有485接口的測量儀器,接入到GPIB網(wǎng)絡中,并利用計算機的鍵盤和顯示器來操控儀器進行程控測量。本設計中儀器端接口為RS485接口,所設計轉(zhuǎn)換器的核心是單片機,它一端連接儀器儀表的RS485串口,一端連接GPIB網(wǎng)絡接口,單片機接收來自計算機GPIB網(wǎng)絡的指令,并轉(zhuǎn)發(fā)給帶有RS485接口的儀器執(zhí)行。儀器執(zhí)行完成指令后將執(zhí)行結(jié)果發(fā)送給儀器,儀器再將所收到的數(shù)據(jù)通過GPIB接口傳遞給計算機,在主控制程序中顯示。
單片機是RS485-GPIB控制器的核心,本設計選用winbond公司的w77c032A單片機。由于w77c032A應用領域廣泛,擁有豐富的片上資源和總線式I/O口,支持高級語言編程,內(nèi)部集成了符合RS485數(shù)據(jù)規(guī)范的異步串行控制單元。因此,使用Tx和Rx串行接口線與外部串行傳輸數(shù)據(jù),只需在單片機外部使用SP485芯片進行電平轉(zhuǎn)換,便可直接連接儀器儀表的串行端口(COM)??刂破鞯挠布Y(jié)構(gòu)如圖1所示,其中,GPIB接口控制電路是控制器硬件設計的重點。
需要指出的是:使用智能化的GPIB接口芯片,可以大大簡化GPIB接口電路的設計。目前最常用的芯片有兩種,一種以美國國家儀器公司生產(chǎn)的TNT4882芯片為代表,將所有接口功能集成在芯片上,完全由硬件完成接口功能,不需要其它輔助芯片,并且直接連接GPIB總線;另一種是以美國德州儀器公司生產(chǎn)的TMS9914芯片為代表,依靠軟件編程來完成GPIB接口功能,由接口芯片SN75160和SN75161進行電平轉(zhuǎn)換后連接GPIB總線。這二種芯片的比較如表l所示??紤]到硬件可靠性,結(jié)構(gòu)簡單等因素,本設計選用以美國國家儀器公司生產(chǎn)的TNT4882芯片作為GPIB總線接口芯片。TNT4882是美國NI公司的一款單芯片、高速聽/講功能兼?zhèn)涞腉PIB(General purpose interface bus)接口專用芯片。它內(nèi)部集成了Turbo488(高速傳輸電路)以及NAT4882(IEEE488.2兼容電路),并擁有諸多新的特性,能夠兼容ANSIIEEEStandard 488.1和ANSI IEEE Standard 488.2規(guī)范,因而可以為GPIB系統(tǒng)提供一套完整的解決方案。為了達到更高的傳輸速率,TNT4882采用了單芯片F(xiàn)IFO緩存電路設計其內(nèi)置的16個增強型IEEE 488.1兼容收發(fā)器,可以直接連接GPIB總線,以實現(xiàn)HS488傳輸模式(一種新的GPIB高速傳輸模式)。在兼容性方面,它與以往使用的μPD7210、TMS9914A中的寄存器設置完全兼容,用戶可以將以前所用的代碼直接移植到TNT4882上。同時,它所包含的Turbo488電路及其諸多新特性也可以在一定程度上減少軟件的開銷。另外,TNT4882還具有靈活的CPU接口,可以方便地連接各種16位或8位微處理器,并將CPU發(fā)出的消息GPIB設備和CPU及內(nèi)存之間的通信。
圖1 轉(zhuǎn)換器硬件結(jié)構(gòu)框圖
在圖l中,采用w77c032的PO口連接tnt4882的數(shù)據(jù)接口,作為數(shù)據(jù)總線和GPIB進行雙向數(shù)據(jù)交換;Pl的I/O口作為地址總線,對tnt4882內(nèi)部寄存器尋址。tnt4882的中斷輸出連接在w77c032的外部中斷接口上,采用中斷觸發(fā)的方式管理GPIB接口通信;tnt4882的時鐘信號采用獨立時鐘源。
表1 GPIB常用接口芯片
計算機端軟件采用PCI-GPIB接口驅(qū)動自帶的軟件。本設計中轉(zhuǎn)換器軟件采用C51語言編寫,編譯后燒錄在W77C032A單片機中運行。軟件框架采用主程序加中斷調(diào)用方式.以提高功能模塊的內(nèi)聚性。軟件功能分為RS485串口通信程序和GPIB接口通信程序兩部分,分別和兩個中斷相關:(1)串行通信中斷。該中斷負責RS485串口數(shù)據(jù)傳輸。(2)接收TNT4882中斷信號的外部中斷。該中斷處理來自GPIB接口數(shù)據(jù)通信的各種事件。主程序在完成全部初始化后進入死循環(huán)狀態(tài),等待這兩個中斷的發(fā)生。其中,RS485串口數(shù)據(jù)發(fā)送在主程序中執(zhí)行,而串口數(shù)據(jù)接收由串口中斷處理程序完成。串口通信程序較為簡單,這里主要給出GPIB通信程序結(jié)構(gòu)。
TNT4882芯片開始工作之前需要對其進行初始化,這部分代碼作為主程序中初始化程序的一部分運行,包括以下內(nèi)容:(l)復位TNT4882中的Turbo488電路;(2)將TNT4882設置成Turbo+7210模式;(3)將TNT4882設置成單芯片模式;(4)使LocalPoer一On信號有效;(5)配置TNT4882,為GPIB操作作準備;(6)設置TNT4882的GPIB地址;(7)設置初始連續(xù)輪詢響應;(8)設置初始并行輪詢響應;(9)清除或設定中斷;(10)設置GPIB握手參數(shù);(11)清除localpower-on信號,開始GPIB操作。初始化流程如圖2所示。
圖2 TNT4882芯片初始化
GPIB控制部分的代碼以中斷方式運行,當TNT4882觸發(fā)W 77C032A芯片的外部中斷時,單片機中止正常工作,將現(xiàn)場數(shù)據(jù)壓入堆棧保護,并調(diào)用外部中斷處理函數(shù),響應TNT4882芯片的中斷申請,其中斷處理程序流程如圖3所示。引起TNT4882向單片機發(fā)出中斷信號的事件主要有四種:發(fā)送數(shù)據(jù)事件、接收數(shù)據(jù)事件、接收GET命令事件和接收DCAS命令事件。中斷頻繁時會影響主程序運行效率,但考慮到所設計的轉(zhuǎn)換器功能單一,主程序基本處于空轉(zhuǎn)狀態(tài),四種事件的處理都在中斷程序中完成,因此,對主程序運行影響不大。GPIB接收數(shù)據(jù)和發(fā)送數(shù)據(jù)流程如圖4和圖5所示。
圖4 GPIB接受數(shù)據(jù)流程
圖5 GPIB發(fā)送數(shù)據(jù)流程
每次GPIB接口數(shù)據(jù)接收中,TNT4882接收到第一個字節(jié)數(shù)據(jù)后,即置位寄存器ISR0中的BI位。觸發(fā)單片機外部中斷,單片機進入外部中斷處理程序后,讀取ISR0寄存器,判斷TNT4882觸發(fā)中斷的原因是接收數(shù)據(jù)事件后,調(diào)用接收數(shù)據(jù)子程序的執(zhí)行,開始接收來自GPIB儀器的數(shù)據(jù)。
在主程序中,TNT4882發(fā)送完第一個字節(jié)數(shù)據(jù)后,即置位寄存器ISR0中的BO位,觸發(fā)單片機外部中斷。單片機進入外部中斷處理程序后,根據(jù)BO位判斷事件類型為發(fā)送數(shù)據(jù)事件,則調(diào)用GPIB數(shù)據(jù)發(fā)送程序,將緩沖區(qū)中剩余的數(shù)據(jù)依次發(fā)送到GPIB總線上。
本文設計的RS485-GPIB轉(zhuǎn)換器已成功用于計算機主控某環(huán)境設備公司的高溫箱的GPIB總線連接中。圖6是計算機控制設備的部分截圖,使得該公司設備通過該轉(zhuǎn)換器成功接入到GPIB網(wǎng)絡中。
圖6 計算機控制設備界面
[1] 黃崧,儲飛黃.GPIB接口專用芯片TNT4882[J].國外電子元器件,2003,8:42-44.
[2] 黃奮,儲飛黃,楊景.基于TNT4882GPIB接口設計[J].電子測量技術,2002,2:1-2.
[3] National Instruments CorPoration,TNT4882TMProgrammer Reference Manual.1995.
[4] 畢文輝,徐華,趣文淑.GPIB技術[J].計量與測試技術,2000,1:29-30.
[5] 黎源,李萬昌.基于IEEE488.2標準的示波器控制系統(tǒng)開發(fā)[J].電子測量與儀器學報(2004年增刊):320-324.