越來越多的測量儀器提供GPIB(General Purpose Intefface Bus)總線接口,通過該總線可以方便快捷地連接帶有GPIB接口的儀器及計算機,組成一個GPlB網絡。GPIB設備與計算機連接時,需要借助GPIB接口板卡,但這些GPIB接口板卡價格昂貴,給儀器與計算機連接帶來不便。在大多數情況下計算機只連接一臺GPIB接口儀器,并不需要這些功能復雜價格昂貴的GPIB板卡。面對單臺儀器與計算機連接的功能需求,本文設計了一種性價比突出的RS232一GPIB控制器,該控制器利用計算機最常用的RS232接口,控制帶有GPIB接口的儀器,在計算機與儀器之間建立數據傳輸的通道。同時,支持SCPI(Standard Commands for Prognmnnable Instrumentation)指令集,只需在Windows操作系統自帶的工具軟件超級終端中輸入SCPI指令,便可方便地對儀器進行參數設置和讀取測試結果。
RS232-GPIB控制器的設計,旨在連接計算機和帶有GPIB接口的測量儀器,并利用計算機的鍵盤和顯示器來操控儀器進行程控測量。本設計中計算機端接口為RS232接口,使用這個串口作為通信工具,編程方便、連接簡單可靠,軟件則采用Windows操作系統自帶的超級終端。因此,可以很方便地完成計算機串口數據的接收和發(fā)送,無需自行開發(fā)計算機端軟件,節(jié)省了控制器的開發(fā)時間。所設計控制器的核心是單片機,它一端連接計算機RS232串口,一端連接儀器GPIB接口,單片機接收來自計算機超級終端的SCPI指令,并轉發(fā)給帶有GPIB接口的儀器執(zhí)行。儀器執(zhí)行完成指令后將執(zhí)行結果發(fā)送給控制器,控制器再將所收到的數據通過RS232串口傳遞給計算機.在超級終端中顯示。
1 硬件設計
單片機是RS232-GPIB控制器的核心,本設計選用ATEML公司的AT89C51單片機。由于89C51應用領域廣泛,擁有豐富的片上資源和總線式I/O口,支持高級語言編程,內部集成了符合RS232數據規(guī)范的異步串行控制單元。因此,使用Tx和Rx串行接口線與外部串行傳輸數據,只需在單片機外部使用MAX232芯片進行電平轉換,便可直接連接計算機的串行端口(COM)??刂破鞯挠布Y構如圖1所示,其中,GPIB接口控制電路是控制器硬件設計的重點。
需要指出的是:使用智能化的GPIB接口芯片,可以大大簡化GPIB接口電路的設計。目前最常用的芯片有兩種,一種以美國國家儀器公司生產的TNT4882芯片為代表,將所有接口功能集成在芯片上,完全由硬件完成接口功能,不需要其他輔助芯片,并且直接連接GPIB總線;另一種是以美國德州儀器公司生產的TMS9914芯片為代表,依靠軟件編程來完成GPIB接口功能,由接口芯片SN75160和SN75161進行電平轉換后連接GPIB總線。這二種芯片的比較如表l所示??紤]到成本等因素,本設計選用與TMS9914芯片完全兼容的NAT9914芯片作為GPIB總線接口芯片。NAT9914是一款標準的GPIB控制芯片,可以執(zhí)行所有GPIB接口功能,具有直接存儲器存?。?u style="color: rgb(51, 51, 51) !important;">DMA)功能,可編程時鐘和波特率,采用CMOS驅動,并兼容TTL電平,因此使用極為方便。同時,選用SN75160作為數據轉換器,SN75162作為握手線和控制線轉換器,與NAT9914配套使用,連接GPlB接口。
在圖l中,采用89C51的PO口連接NAT9914的數據接口,作為數據總線和GPIB進行雙向數據交換;Pl的I/O口作為地址總線,對NAT9914內部寄存器尋址。NAT9914的中斷輸出連接在89C51的外部中斷接口上,采用中斷觸發(fā)的方式管理GPIB接口通信;NAT9914的時鐘信號一般采用獨立時鐘源。本設計中,考慮到控制器的功能僅完成與單臺GPIB接口儀器之問的通信,時鐘頻率的高低對GPIB接口數據傳輸速度影響基本可以忽略,因此直接使用89C51的ALE信號作為NAT9914時鐘信號,這樣可以充分利用89C51的片上資源,簡化電路,降低硬件成本。
2 軟件設計
計算機端軟件采用超級終端,用戶在超級終端中鍵入指令語句控制帶有GPIB接口的儀器。因SCPI指令集提供一個無縫的控制界面,使其在更換不同公司的同類GPIB設備時,不需要重新設定控制程序,可方便地和不同廠商同類GPIB設備的搡作編程。因此,本設計選取對業(yè)界通用的SCPI指令集作為控制指令,以便RS232一GPIB控制器可以和絕大多數GPIB接口儀器配合使用。
本設計中控制器軟件采用C51語言編寫,編譯后燒錄在89C51單片機中運行。軟件框架采用主程序加中斷調用方式.以提高功能模塊的內聚性。軟件功能分為RS232串口通信程序和GPIB接口通信程序兩部分,分別和兩個中斷相關:(1)串行通信中斷。該中斷負責RS232串口數據傳輸。(2)接收NAT9914中斷信號的外部中斷。該中斷處理來自GPIB接口數據通信的各種事件。主程序在完成全部初始化后進入死循環(huán)狀態(tài),等待這兩個中斷的發(fā)生。其中,RS232串口數據發(fā)送在主程序中執(zhí)行,而串口數據接收由串口中斷處理程序完成。串口通信程序較為簡單,這里主要給出GPIB通信程序結構。
NAT9914芯片開始工作之前需要對其進行初始化,這部分代碼作為主程序中初始化程序的一部分運行,包括設置ICR寄存器、選擇時鐘信號頻率、設置GPIB延遲時問T1、定義通信結束字符EOS、設置GPIB設備地址(規(guī)定地址必須在O~30之間,如果寫入更大的地址。則設備仍看作30)。初始化完成后將NAT9914接通GPIB總線。初始化流程如圖2所示。
GPIB控制部分的代碼以中斷方式運行,當NAT9914觸發(fā)89C51芯片的外部中斷時,單片機中止正常工作,將現場數據壓入堆棧保護,并調用外部中斷處理函數,響應NAT9914芯片的中斷申請,其中斷處理程序流程如圖3所示。引起NAT9914向單片機發(fā)出中斷信號的事件主要有四種:發(fā)送數據事件、接收數據事件、接收GET命令事件和接收DCAS命令事件。中斷頻繁時會影響主程序運行效率,但考慮到所設計的轉換器功能單一,主程序基本處于空轉狀態(tài),四種事件的處理都在中斷程序中完成,因此,對主程序運行影響不大。GPIB接收數據和發(fā)送數據流程如圖4和圖5所示。
每次GPIB接口數據接收中,NAT9914接收到第一個字節(jié)數據后,即置位寄存器ISR0中的BI位。觸發(fā)單片機外部中斷,單片機進入外部中斷處理程序后,讀取ISR0寄存器,判斷NAT9914觸發(fā)中斷的原因是接收數據事件后,調用接收數據子程序的執(zhí)行,開始接收來自GPIB儀器的數據。
在主程序中,NAT9914發(fā)送完第一個字節(jié)數據后.即置位寄存器ISR0中的BO位,觸發(fā)單片機外部中斷。單片機進入外部中斷處理程序后,根據BO位判斷事件類型為發(fā)送數據事件,則調用GPIB數據發(fā)送程序,將緩沖區(qū)中剩余的數據依次發(fā)送到GPIB總線上。
3 運行情況及結果
本文設計的RS232一GPIB控制器已成功用于計算機和泰克TDS210型示波器的GPIB總線連接中。圖6是計算機超級終端顯示界面的部分截圖,其中COMMAND:》為計算機鍵盤SCPI命令輸入提示符,GPIB:》為GPIB連接設備的反饋信息輸出提示符,表示后面的信息來自GPIB設備(即泰克TDS210型示波器)。
首先輸入的是查詢命令.該類命令以‘?’結尾,當示波器收到查詢命令后,會立即反饋相關查詢信息。ID?命令,查詢該示波器的品牌和型號信息,示波器回復相關信息顯示在超級終端上;CH1?命令,查詢示波器l號通道的設置信息;DATA?命令,查詢示波器當前使用通道信息以及采樣點數等信息。
接著輸入控制命令,示波器收到該命令后,執(zhí)行相應的操作,但并不將執(zhí)行結果反饋回來。如:LANG ENGL命令,表示將示波器語言界面改為英文界面;LANGJAPA命令,表示將修改界面為日語界面。