摘 要:本文介紹了如何利用計(jì)算機(jī)采用GPIB接口及HP標(biāo)準(zhǔn)儀器控制庫(kù)與TD3000光時(shí)域反射儀進(jìn)行連接的方式、方法,實(shí)現(xiàn)了計(jì)算機(jī)對(duì)TD3000程控儀器的測(cè)量控制。同時(shí)介紹了系統(tǒng)中所應(yīng)用的HP標(biāo)準(zhǔn)儀器控制庫(kù)中的函數(shù)及TD3000程控儀器命令,并設(shè)計(jì)了計(jì)算機(jī)控制儀器完成一次測(cè)量過(guò)程的原始數(shù)據(jù)的讀取方法和程序流程。
關(guān)鍵詞:GPIB接口;光時(shí)域反射儀;標(biāo)準(zhǔn)儀器控制庫(kù);程控儀器
1 引 言
計(jì)算機(jī)技術(shù)和現(xiàn)代微電子技術(shù)的發(fā)展與普及,促進(jìn)了電子測(cè)量?jī)x器的快速發(fā)展。而早期采用獨(dú)立臺(tái)式測(cè)量?jī)x器來(lái)完成的測(cè)試工作已不能滿足現(xiàn)代測(cè)量任務(wù)的要求,因此,自動(dòng)測(cè)試系統(tǒng)在企業(yè)的生產(chǎn)、科研和工程中得到大規(guī)模的發(fā)展和應(yīng)用。自動(dòng)測(cè)試系統(tǒng)即是以計(jì)算機(jī)軟硬件系統(tǒng)為核心,包括測(cè)量用儀器儀表、測(cè)試對(duì)象等組成計(jì)算機(jī)控制系統(tǒng)。專為儀器控制應(yīng)用而設(shè)計(jì)的GPIB接口由此誕生,并廣泛運(yùn)用于儀器儀表的自動(dòng)測(cè)試系統(tǒng)中,成為了智能儀器儀表的標(biāo)準(zhǔn)接口。雖然新興的接口和總線技術(shù)不斷地運(yùn)用于自動(dòng)測(cè)試系統(tǒng)中,但由于GPIB擁有強(qiáng)大的功能、成熟的技術(shù)支持與廣大的使用者,使GPIB仍將是自動(dòng)測(cè)試系統(tǒng)中的重要組成部分,在系統(tǒng)的組建中,實(shí)現(xiàn)對(duì)儀器儀表的GPIB控制是最基本和重要的環(huán)節(jié)。本文將分析和設(shè)計(jì)使用計(jì)算機(jī)通過(guò)GPIB接口控制TD3000 OTDR儀器,實(shí)現(xiàn)儀器的程控測(cè)量和測(cè)量數(shù)據(jù)讀取方法。
TD3000 OTDR儀器,即光時(shí)域反射儀,廣泛運(yùn)用于光纖光纜生產(chǎn)、工程等行業(yè),是對(duì)光纖的長(zhǎng)度、衰減等重要指標(biāo)進(jìn)行測(cè)量以及斷纖位置定位。常規(guī)的操作是在儀器的控制面板上通過(guò)各種開(kāi)關(guān)和旋鈕完成測(cè)量,人工操作較繁瑣,數(shù)據(jù)顯示也較單一并且測(cè)量結(jié)果不易保存和作后續(xù)進(jìn)一步分析處理。此儀器有GPIB標(biāo)準(zhǔn)接口,可與計(jì)算機(jī)連接組成自動(dòng)測(cè)試系統(tǒng),完成人工難辦或無(wú)法進(jìn)行的測(cè)量任務(wù)。
2 應(yīng)用系統(tǒng)組成及GPIB接口簡(jiǎn)介
2.1 應(yīng)用系統(tǒng)組成設(shè)計(jì)
一個(gè)典型的GPIB自動(dòng)測(cè)試系統(tǒng)如圖1所示,由一臺(tái)安裝有GPIB接口卡的主控計(jì)算機(jī)與多臺(tái)帶有GPIB接口的測(cè)試儀器通過(guò)GPIB總線連接而成,其連接方式有總線形式或星形的連接,也可以是兩種方式的組合。測(cè)試軟件運(yùn)行在主控計(jì)算機(jī)上,通過(guò)GPIB接口卡,對(duì)測(cè)試儀器進(jìn)行自動(dòng)操作和遠(yuǎn)程控制。
[align=center]

圖1 基于GPIB總線的儀器控制系統(tǒng)框圖[/align]
在本設(shè)計(jì)系統(tǒng)中GPIB儀器為一臺(tái)TD3000 OTDR程控儀器,GPIB接口卡采用美國(guó)Agilent公司的PCI-GPIB 82350A 型接口卡,計(jì)算機(jī)平臺(tái)采用臺(tái)式微機(jī),并安裝接口卡驅(qū)動(dòng)程序及HP SICL儀器控制I/O函數(shù)庫(kù)[1]。
2.2 GPIB接口簡(jiǎn)介
GPIB接口,即通用儀器標(biāo)準(zhǔn)接口,也稱為IEEE-488標(biāo)準(zhǔn)。其數(shù)據(jù)傳輸受三根信號(hào)線的制約,為“三線掛鉤”應(yīng)答方式的異步數(shù)據(jù)傳輸。該通信總線由8根雙向數(shù)據(jù)線DIO1-DIO2,3根信號(hào)交換線DAV、NRFD、NDAC,5根通用控制線ATN、IFC、SRQ、REN、EOI以及8根地線,共24根線組成。總線上可連接15臺(tái)儀器或設(shè)備,統(tǒng)稱之為器件,向總線發(fā)送數(shù)據(jù)的設(shè)備稱為“講者”,從總線上接收數(shù)據(jù)的設(shè)備稱為“聽(tīng)者”,控制總線的設(shè)備稱為“控者”。在GPIB的數(shù)據(jù)傳輸過(guò)程中,三根信號(hào)交換線,DAV數(shù)據(jù)線上數(shù)據(jù)有效由講者使用,NRFD(未準(zhǔn)備好接收數(shù)據(jù))和NDAC(未收到數(shù)據(jù))由聽(tīng)者使用,可實(shí)現(xiàn)廣播式傳輸,即一對(duì)多的傳輸方式。其數(shù)據(jù)的傳輸過(guò)程是:DAV=0,表示數(shù)據(jù)線上沒(méi)有數(shù)據(jù)或數(shù)據(jù)尚未有效。講者必須在所有聽(tīng)者均已準(zhǔn)備好接收數(shù)據(jù)的情況下,即NRFD=0,才會(huì)令DAV=1。聽(tīng)者在得知數(shù)據(jù)有效,即DAV=1時(shí),一方面將NRFD=1,以準(zhǔn)備下一個(gè)數(shù)據(jù)的傳送,另一方面在數(shù)據(jù)接收完畢以后,立即以NRFD=0來(lái)告知講者。講者撤消原數(shù)據(jù),即令DAV=0,聽(tīng)者在講者撤消數(shù)據(jù)以后,以NRFD=1來(lái)應(yīng)答,結(jié)束一次數(shù)據(jù)傳輸。若還有數(shù)據(jù)要傳輸,重復(fù)上述過(guò)程。從GPIB這種三線掛鉤方式的數(shù)據(jù)傳送過(guò)程可以看出,它是一種雙向全互鎖的異步傳輸過(guò)程,其特點(diǎn)不但保證了自動(dòng)適應(yīng)不同傳輸速率的設(shè)備,更保證了數(shù)據(jù)傳輸?shù)目煽啃?。在本系統(tǒng)中作為“控者”的設(shè)備是微機(jī)系統(tǒng),而TD3000 OTDR程控儀器可工作在“聽(tīng)者”和“講者”兩種模式。
2.3 HP SICL簡(jiǎn)介
HP SICL是隨GPIB接口卡連同驅(qū)動(dòng)程序一起提供的HP標(biāo)準(zhǔn)儀器控制庫(kù),它是一個(gè)能安裝于各種計(jì)算機(jī)體系、I/O接口和操作系統(tǒng)的標(biāo)準(zhǔn)模塊化儀器通訊庫(kù)。在C/C++或VB中運(yùn)用此標(biāo)準(zhǔn)儀器通訊庫(kù)所編寫(xiě)的應(yīng)用程序可以不加修改或較小修改地從一個(gè)系統(tǒng)移植到另一個(gè)系統(tǒng)。SICL標(biāo)準(zhǔn)函數(shù)適用于多種接口的通訊應(yīng)用,由于庫(kù)函數(shù)命令與特定通信接口無(wú)關(guān),所以在一個(gè)接口上對(duì)一臺(tái)儀器所編寫(xiě)的通訊程序可應(yīng)用在其它接口上的相同儀器。同時(shí)SICL也為程序員提供了基于不同I/O接口上的函數(shù)命令。
驅(qū)動(dòng)程序和SICL的安裝可采用系統(tǒng)默認(rèn)方式完成。安裝完成之后需運(yùn)行RUN IO CONFIG程序,并設(shè)置或采用默認(rèn)的接口名和總線地址,本設(shè)計(jì)中接口名為hpib7,總線地址為21[2]。
3 控制系統(tǒng)的軟件設(shè)計(jì)
3.1 TD3000儀器命令
TD3000儀器共有25條程控命令,有啟動(dòng)、測(cè)量參數(shù)設(shè)置和讀測(cè)量結(jié)果及測(cè)量原始數(shù)據(jù)等命令,計(jì)算機(jī)通過(guò)GPIB接口發(fā)送這些命令實(shí)現(xiàn)對(duì)儀器的遠(yuǎn)程控制,可以完成幾乎所有常規(guī)操作儀器面板的功能,命令的具體格式在TD3000儀器操作手冊(cè)上有詳細(xì)說(shuō)明。使用這些命令計(jì)算機(jī)除可以讀出儀器的測(cè)量結(jié)果,如光纖的長(zhǎng)度、衰減等外,還可以直接讀取儀器測(cè)量的原始數(shù)據(jù),再利用計(jì)算機(jī)強(qiáng)大的數(shù)據(jù)處理功能實(shí)現(xiàn)數(shù)據(jù)的多種算法、顯示、保存或打印,有效的擴(kuò)展了儀器的功能,大大簡(jiǎn)化了人工操作,提高了效率。本設(shè)計(jì)即采用此方式,其主要使用的程控命令是OT命令,即輸出曲線軌跡數(shù)組命令,此命令是TD3000最重要命令之一。其返回信息與其它命令不同,OT命令返回兩種信息,首先是ASCII字符串的頭記錄數(shù)據(jù),數(shù)據(jù)格式為〈ndata〉,〈nscans〉,〈delta〉〈endm〉,分別表示整個(gè)曲線的數(shù)據(jù)點(diǎn)數(shù)、掃描時(shí)間、數(shù)據(jù)點(diǎn)之間的距離和終止符。其次是符合ANSI/IEEE Std 728-1982二進(jìn)制數(shù)據(jù)塊傳輸標(biāo)準(zhǔn)的曲線數(shù)據(jù)包,包中數(shù)據(jù)以“#”和“B”為前綴,后兩字節(jié)為包中數(shù)據(jù)字節(jié)數(shù),接下來(lái)為曲線數(shù)據(jù)點(diǎn)數(shù)據(jù),每?jī)蓚€(gè)字節(jié)為一個(gè)數(shù)據(jù)點(diǎn),最后以一個(gè)字節(jié)的效驗(yàn)和結(jié)束。數(shù)據(jù)包的最大字節(jié)數(shù)為1024字節(jié),因此一條軌跡曲線的數(shù)據(jù)一般需要由多個(gè)數(shù)據(jù)包組成[3]。
3.2 軟件設(shè)計(jì)
根據(jù)以上的設(shè)計(jì)分析,計(jì)算機(jī)控制儀器完成一次測(cè)量,并從儀器中讀出原始測(cè)量數(shù)據(jù)是系統(tǒng)設(shè)計(jì)中最重要和最基本的任務(wù)。本設(shè)計(jì)采用C語(yǔ)言編程,調(diào)用SICL函數(shù)來(lái)實(shí)現(xiàn)對(duì)TD3000儀器的控制。如圖2是完成一次測(cè)量控制并讀取原始測(cè)量數(shù)據(jù)的程序流程[4],此流程中INST
[align=center]

圖2測(cè)量控制程序流程圖[/align]
是SICL頭文件中所定義的設(shè)備標(biāo)識(shí)符數(shù)據(jù)類型,通過(guò)iopen(“hpib7,21”)打開(kāi)函數(shù)獲得要通信儀器或設(shè)備的標(biāo)識(shí)符,其中“hpib7,21”為運(yùn)行安裝SICL后的IO CONFIG程序所產(chǎn)生的接口名和總線地址。變量和參數(shù)是根據(jù)程序設(shè)計(jì)中使用變量定義,如定義存放一個(gè)數(shù)據(jù)包的數(shù)組char buf[1024]以及存放曲線數(shù)據(jù)點(diǎn)的數(shù)組int dPoint[ndata]等。接下來(lái)是接口的出錯(cuò)及超時(shí)處理,儀器參數(shù)的設(shè)置是根據(jù)測(cè)量過(guò)程的實(shí)際要求來(lái)確定的,這里需要發(fā)送多個(gè)TD3000儀器程控命令,使儀器完成所要求的測(cè)量任務(wù),此處用庫(kù)函數(shù)iprinf(id,format[,arg1][,arg2][,…] )來(lái)實(shí)現(xiàn),如啟動(dòng)掃描命令“SS 12”,命令“SS”后的數(shù)值參數(shù)是掃描平均時(shí)間,根據(jù)測(cè)試光纖長(zhǎng)度及TD3000測(cè)試手冊(cè)確定,其應(yīng)用函數(shù)格式為iprinf(id,“SS 12\n” ),此函數(shù)根據(jù)應(yīng)用的需要可同時(shí)完成多個(gè)命令的發(fā)送。掃描完成與否,可讀取儀器狀態(tài)進(jìn)行檢查,判斷掃描平均是否結(jié)束,發(fā)送iprinf(id,“OS\n” )后,返回信息格式為,,用庫(kù)函數(shù)iscanf(id,format[,arg1][,arg2][,…] )讀取狀態(tài),具體應(yīng)用函數(shù)為iscanf(id,“%c,%c”,&err,&tstat ),判斷tstat是否等于2且err=0,表示掃描平均完成曲線數(shù)據(jù)準(zhǔn)備好。此時(shí)可直接讀取儀器測(cè)量并按儀器固定方式計(jì)算出的結(jié)果,或者讀出儀器測(cè)量的原始數(shù)據(jù),由計(jì)算機(jī)完成對(duì)此數(shù)據(jù)的計(jì)算及處理。本設(shè)計(jì)采用后者方式,因此發(fā)送OT命令。
根據(jù)上文的分析可知,OT命令返回兩種信息,即與其它命令相似的ASCII信息和符合ANSI/IEEE Std 728-1982標(biāo)準(zhǔn)的二進(jìn)制數(shù)據(jù)信息,對(duì)于這兩種信息采用不同的庫(kù)函數(shù)來(lái)完成數(shù)據(jù)的讀取,即用函數(shù)iscanf(id,“%d,%d,%f”,&ndata,&nscan,&delta )來(lái)讀取曲線數(shù)據(jù)的頭記錄(Header Record),曲線數(shù)據(jù)點(diǎn)數(shù)ndata用來(lái)計(jì)算要讀幾個(gè)數(shù)據(jù)包,nscan實(shí)際掃描平均時(shí)間單位是毫秒,delta相鄰數(shù)據(jù)點(diǎn)間長(zhǎng)度,用于計(jì)算光纖長(zhǎng)度。用函數(shù)iread(id,buf,bufsize,reason,actualcnt)來(lái)讀曲線數(shù)據(jù)包,根據(jù)數(shù)據(jù)包數(shù)據(jù)格式分析,首先讀四個(gè)字節(jié),函數(shù)應(yīng)用為iread(id,buf1,4,NULL,NULL),buf1[0]、buf1[1]應(yīng)為ASCII數(shù)據(jù)“#”和“B”,buf1[2]和buf1[3]為數(shù)據(jù)包中數(shù)據(jù)字節(jié)數(shù),因此需要再讀字節(jié)為bytect= buf1[2]*256+buf1[3]+1,此處加上了一個(gè)字節(jié)的效驗(yàn)和,其函數(shù)應(yīng)用為iread(id,buf2,bytect,NULL,NULL),由此完成了一個(gè)數(shù)據(jù)包的數(shù)據(jù)讀出。按兩個(gè)字節(jié)為一個(gè)曲線數(shù)據(jù)點(diǎn)計(jì)算所讀數(shù)據(jù)包的數(shù)據(jù)點(diǎn),與頭記錄中數(shù)據(jù)點(diǎn)比較,若相等則完成測(cè)量原始數(shù)據(jù)的讀出程序,若不相等再讀一次,直至讀完所有數(shù)據(jù)點(diǎn)。整個(gè)曲線數(shù)據(jù)點(diǎn)存放于dPoint[ndata]數(shù)組中,其最大為16384個(gè)數(shù)據(jù)點(diǎn),數(shù)據(jù)值為-2720~8160,計(jì)算機(jī)可應(yīng)用此數(shù)組編程完成數(shù)據(jù)的各種計(jì)算及處理,以滿足用戶對(duì)儀器測(cè)量結(jié)果的多方面要求。
4 結(jié)束語(yǔ)
本文主要討論了計(jì)算機(jī)控制TD3000儀器完成一次測(cè)量過(guò)程所采用的方式、方法及程序流程,本設(shè)計(jì)在實(shí)際應(yīng)用系統(tǒng)中實(shí)現(xiàn)了計(jì)算機(jī)對(duì)TD3000 OTDR儀器的測(cè)量控制,并在實(shí)際的生產(chǎn)測(cè)試中,取得了良好的效果,不但提高了測(cè)試效率,更實(shí)現(xiàn)了手工操作難以完成的測(cè)試任務(wù)。其設(shè)計(jì)思路和方法也適用于其它類型的程控儀器的計(jì)算機(jī)控制系統(tǒng),對(duì)用一些老式儀器來(lái)組建自動(dòng)測(cè)試系統(tǒng),提供了一種改造方法。
本文作者創(chuàng)新點(diǎn):本文介紹的對(duì)儀器控制系統(tǒng)的設(shè)計(jì)不是直接讀取儀器測(cè)量并計(jì)算出的結(jié)果,而是讀取儀器測(cè)量的原始數(shù)據(jù),由計(jì)算機(jī)來(lái)處理原始數(shù)據(jù),因此可充分發(fā)揮計(jì)算機(jī)的數(shù)據(jù)運(yùn)算和處理能力,極大的擴(kuò)展了原有儀器的功能,滿足用戶對(duì)儀器測(cè)量結(jié)果新的需求。
參考文獻(xiàn)
[1] 張煥林,穆建成.基于GPIB技術(shù)的自動(dòng)測(cè)試系統(tǒng)設(shè)計(jì)[J].微計(jì)算機(jī)信息,2005,(5):165-166.
[2] HP Standard Instrument Control Library Guide[Z].USA:Hewlett-Packard Company.1998.
[3] TD-3000 OTDR Operating Instructions[Z].USA:Laser precision corp.1994.
[4] 譚浩強(qiáng).C程序設(shè)計(jì)[M]. 北京:清華大學(xué)出版社,1991.