武漢理工大學(xué)信息工程學(xué)院,呂鋒,陳園
通用計(jì)算機(jī)系統(tǒng)具有強(qiáng)大的處理能力以及豐富的軟件資源,正在被越來(lái)越多的現(xiàn)代儀器所采用。在儀器的設(shè)計(jì)過(guò)程中,往往需要提供GPIB接口以及相應(yīng)的指令集以方便用戶組成自動(dòng)測(cè)試系統(tǒng)。針對(duì)這一需求,本文提出了一個(gè)通用計(jì)算機(jī)平臺(tái)上IEEE-488兼容儀器的設(shè)計(jì)方案:通過(guò)使用GPIB接口卡和編寫(xiě)相應(yīng)的儀器端程序,使得基于計(jì)算機(jī)的儀器能夠模擬一個(gè)或者多個(gè)GPIB儀器。
1 IEEE-488儀器簡(jiǎn)介
IEEE-488儀器模型如圖1所示。儀器提供GPIB接口以及相應(yīng)的指令集,指令集由以下幾部分組成[1-2]:
(1)IEEE-488.2公用命令集,如:*IDN?,*STB?,*CLS等。
(2)SCPI標(biāo)準(zhǔn)規(guī)定的STATus和SYSTem子系統(tǒng),主要用來(lái)報(bào)告儀器狀態(tài)和進(jìn)行系統(tǒng)設(shè)置。
(3)儀器特定測(cè)量功能指令。
其中,(1)和(2)是儀器必備指令,(3)的選取與儀器的實(shí)際功能有關(guān)。用戶只需要將PC機(jī)與帶有GPIB接口的儀器連接,通過(guò)調(diào)用儀器控制軟件如NI-488.2和VISA等提供的I/O庫(kù)向儀器寫(xiě)入指令,就能實(shí)現(xiàn)對(duì)儀器的控制。
2 系統(tǒng)設(shè)計(jì)
2.1 系統(tǒng)組成
根據(jù)圖1所示的模型,在通用計(jì)算機(jī)平臺(tái)上設(shè)計(jì)的IEEE-488兼容儀器軟硬件組成如圖2所示。
儀器運(yùn)行在Windows操作系統(tǒng)下,其各部分的功能如下:
(1)PCI-GPIB是NI公司提供的GPIB接口卡。通過(guò)安裝設(shè)備端軟件NI-Device,使GPIB接口卡完成Talker/Listener功能。
(2)模塊函數(shù)和必備函數(shù)與IEEE-488儀器模型中的儀器函數(shù)相對(duì)應(yīng):模塊函數(shù)是模塊制造商提供的API,大部分用來(lái)處理儀器特定測(cè)量功能指令;必備函數(shù)通過(guò)訪問(wèn)狀態(tài)報(bào)告模型和調(diào)用某些模塊函數(shù)處理IEEE-488.2與SCPI標(biāo)準(zhǔn)規(guī)定的必備指令。
(3)狀態(tài)報(bào)告模型由若干狀態(tài)寄存器組構(gòu)成,用來(lái)描述儀器的狀態(tài)。大部分儀器函數(shù)都會(huì)訪問(wèn)此模型。
(4)儀器端程序采用C++編寫(xiě),主要負(fù)責(zé)接收主控計(jì)算機(jī)發(fā)送的指令,然后找到對(duì)應(yīng)的儀器函數(shù)進(jìn)行處理。如果接收的是查詢指令,還負(fù)責(zé)將儀器函數(shù)的響應(yīng)結(jié)果返回給主控計(jì)算機(jī)。
系統(tǒng)的核心是儀器端程序和狀態(tài)報(bào)告模型的設(shè)計(jì),以下將對(duì)這兩部分進(jìn)行詳細(xì)說(shuō)明。
2.2 儀器端程序設(shè)計(jì)
儀器端的程序完成圖1中除儀器函數(shù)以外的所有功能。其中,總線的消息處理即圖1中GPIB總線、I/O組件、輸出隊(duì)列、消息交換組件、輸入隊(duì)列部分的功能通過(guò)調(diào)用NI-Device提供的API完成,其余部分由設(shè)計(jì)者自行完成。
2.2.1 總線消息處理
總線上的消息處理主要通過(guò)調(diào)用NI-Device提供的API完成。NI-Device是NI公司推出的一款面向儀器制造商的設(shè)備端軟件,可以為儀器開(kāi)發(fā)人員處理絕大部分的IEEE-488協(xié)議要求,并且支持面向?qū)ο蟮腃++語(yǔ)言接口[3]。IEEE-488兼容儀器主要使用以下幾個(gè)類:
(1)C4882Device:是一個(gè)抽象類,是所有設(shè)備類的基類,它定義了設(shè)備類與總線接口方式。當(dāng)總線上發(fā)生某個(gè)事件時(shí),就調(diào)用相應(yīng)的事件處理函數(shù)。此外,C4882Device類還負(fù)責(zé)輸入輸出隊(duì)列管理和狀態(tài)字節(jié)報(bào)告等。
(2)CGpibDevice:使用GPIB總線的設(shè)備類都必須是CGpibDevice類的派生類,它負(fù)責(zé)處理GPIB總線協(xié)議。