摘 要: 以北京普源公司生產(chǎn)的RIGOL DS5000系列數(shù)字存儲示波器" title="數(shù)字存儲示波器">數(shù)字存儲示波器為例,介紹一種通過USB總線接口實現(xiàn)PC機(jī)與儀器通信的編程方法,并且給出一個通信應(yīng)用實例。
關(guān)鍵詞: 電子儀器 USB接口 虛擬儀器 LabVIEW 動態(tài)鏈接庫
隨著現(xiàn)代化科學(xué)技術(shù)的發(fā)展,電子儀器在各行各業(yè)中得到廣泛的應(yīng)用,成為不可缺少的工具。自1928年峰值電子電壓表在美國商品化到現(xiàn)在,電子儀器的發(fā)展大致經(jīng)歷了模擬式→數(shù)字式→智能式與程控式三個階段。與傳統(tǒng)儀器相比,智能式與程控式儀器具有自測功能和數(shù)據(jù)處理功能以及操作自動化、人機(jī)界面友好和可程控操作等特點。現(xiàn)代智能儀器大多數(shù)都配備有標(biāo)準(zhǔn)的通信接口" title="通信接口">通信接口,為PC機(jī)與儀器的連接提供了極大的方便。虛擬儀器是基于PC機(jī)的測控設(shè)備或系統(tǒng),PC機(jī)與儀器組成的自動測量系統(tǒng)是虛擬儀器的常用結(jié)構(gòu)之一。該結(jié)構(gòu)的特點是能將電子儀器的長處(例如測量高頻信號的能力強(qiáng))與PC機(jī)在信號處理、存儲和表達(dá)以及測試自動化方面的優(yōu)勢結(jié)合起來,組成功能更強(qiáng)、性能更優(yōu)和用途更廣的自動化測量系統(tǒng)。
1 常見儀器通信接口的比較
目前,集成在智能儀器上的標(biāo)準(zhǔn)通信接口主要有RS232C接口、RS485接口、GPIB接口和USB總線接口等。四種通信接口的性能比較如表1所示。從表中可看出RS485具有長距離傳輸?shù)膬?yōu)點,而USB則具有傳輸速率" title="傳輸速率">傳輸速率最高的優(yōu)點。USB接口除了傳輸速率高外,還具有支持熱插拔、即插即用和高性價比等優(yōu)點。因此,現(xiàn)在越來越多的儀器配置了USB接口,而PC通常更是配置了多個USB接口。
2 USB總線簡介
通用串行總線(USB)Universal Serial Bus是由Compaq、Intel、Microsoft、NEC、Hewlett-Packard、Lucent和Philips等七家公司于1994年底聯(lián)合開發(fā)的一種通信接口標(biāo)準(zhǔn),當(dāng)時推出的版本是0.7版,而直到1998年底推出1.1版之后,USB總線接口才得到廣泛的應(yīng)用?,F(xiàn)在最新的版本是2.0版,其傳輸速率已經(jīng)從1.1版的12Mbps提高到480Mbps,整整提高了40倍。
3 USB總線儀器通信的實現(xiàn)
3.1 USB總線通信的方法
美國國家儀器(NI)公司的虛擬儀器應(yīng)用軟件開發(fā)平臺LabVIEW已成為測試測量和自動化領(lǐng)域的主要軟件工具之一,本文所討論的通信軟件設(shè)計即是基于LabVIEW完成的。在LabVIEW中,PC機(jī)與電子儀器通過USB接口進(jìn)行通信的方式主要有以下兩種:
?。?)通過調(diào)用電子儀器廠商提供的二次開發(fā)包里面的通信動態(tài)鏈接庫" title="動態(tài)鏈接庫">動態(tài)鏈接庫(DLL)來實現(xiàn)。
?。?)通過VISA(Virtual Instrument Software Architecture)提供的USB控制函數(shù)節(jié)點來實現(xiàn)。
本文只對第一種方法展開討論和研究。
3.2 動態(tài)鏈接庫的調(diào)用
在LabVIEW中可通過調(diào)用DLL的方式實現(xiàn)對其他公司硬件產(chǎn)品(如數(shù)據(jù)采集卡、圖像采集卡和USB接口設(shè)備等)的驅(qū)動,并在此基礎(chǔ)上可實現(xiàn)PC機(jī)與儀器的通信。下面以調(diào)用北京普源公司提供的RIGOL DS5000系列數(shù)字存儲示波器(以下簡稱DS5000示波器)的DLL為例來說明具體的編程方法。
在LabVIEW中調(diào)用DLL的函數(shù)必須知道DLL接口函數(shù)的原型,才能正確地設(shè)置相關(guān)的參數(shù)。普源公司提供的DS5000示波器的DLL(DS5000USB_UI.dll)中有兩個接口函數(shù):USB寫函數(shù)(Write_USB)和USB讀函數(shù)(Read_USB),它們的函數(shù)原型分別是bool Read_USB(int nType, int nLength,unsigned char* pBuffer)和bool Write_USB(unsigned char* cCmd)。LabVIEW 7.1的調(diào)用DLL(Call Library Function)節(jié)點位于功能模板(Functions)→All Functions→Advanced中,把它調(diào)出到LabVIEW的程序框圖后,雙擊它就可以見到如圖1所示的設(shè)置對話框。然后經(jīng)過輸入正確的DLL路徑與函數(shù)名稱、調(diào)用規(guī)程、函數(shù)參數(shù)及其類型等步驟,便完成了調(diào)用DLL節(jié)點的設(shè)置。調(diào)用Write_USB函數(shù)的方法與Read_USB相似。
為了便于對儀器發(fā)送控制命令,筆者將USB接口的寫和讀制作成子程序" title="子程序">子程序,其程序框圖如圖2所示。要注意的是,DS5000示波器在進(jìn)行USB通信時每次只能接收和發(fā)送單個ASCII碼,故子程序中含有把字符串轉(zhuǎn)換成ASCII碼數(shù)值數(shù)組和把ASCII碼數(shù)值數(shù)組轉(zhuǎn)換回字符串的功能。
?
3.3 DS5000的通信協(xié)議(控制命令)和使用
在DS5000示波器的二次開發(fā)包中,包含有DS5000示波器的命令表,可以用USB寫命令子程序把控制和查詢命令直接發(fā)給儀器,然后再用USB讀取數(shù)據(jù)子程序從儀器取回數(shù)據(jù)。例如,要讀取輸入信號的頻率,可以在USB寫命令子程序的CMD String參數(shù)中輸入“:MEASURE:FREQ:?”,然后再用USB讀取數(shù)據(jù)子程序取回輸入信號頻率的表達(dá)值“freq=***.***kHz”。表2為DS5000示波器的部分控制和查詢命令。
3.4 波形的讀取與顯示
在PC機(jī)與數(shù)字示波器組成的系統(tǒng)中,讀取示波器測量的信號數(shù)據(jù)并以波形方式顯示出來通常是最基本的功能。在實現(xiàn)該功能的過程中,筆者發(fā)現(xiàn)程序的設(shè)計有一定的復(fù)雜性,因此用以下的實例加以說明。
例如,要取示波器通道1的波形。在讀取通道1波形的命令“:DATA:CHANNEL1:?”發(fā)送到DS5000示波器后,示波器會把波形數(shù)據(jù)分成48塊分批放到USB接口的數(shù)據(jù)緩存單元中,每批數(shù)據(jù)為256字節(jié),并且每批數(shù)據(jù)以“00”結(jié)束,而最后一批數(shù)據(jù)(即第48批數(shù)據(jù))以一個換行符和一個回車符作為全部數(shù)據(jù)的結(jié)束符。組成波形的每個點的數(shù)據(jù)都以十六進(jìn)制字符串組成,如用“0xB0”表示十六進(jìn)制數(shù)值“B0”。另外值得注意的是,DS5000示波器返回的數(shù)據(jù)是以8位補(bǔ)碼的形式表示的,如果直接顯示在Waveform Graph窗口中,則會出現(xiàn)Waveform Graph上的波形與原波形剛好反相的現(xiàn)象。為了解決此問題,可以用255減去返回的數(shù)據(jù),然后再送到Waveform Graph中顯示,這樣在Waveform Graph上顯示的波形才能與原波形相同。讀取波形數(shù)據(jù)并顯示波形曲線的VI程序段如圖3所示。圖中,“SendtoUSB.vi”和“ReadUSBasString.vi”分別為USB寫命令子程序和USB讀取數(shù)據(jù)子程序,而“StrToNumArray.vi”子程序的功能是把從示波器讀回來的字符型數(shù)據(jù)轉(zhuǎn)換成可以正確地在Waveform Graph上顯示的數(shù)值型數(shù)據(jù),其程序框圖如圖4所示。
3.5 虛擬數(shù)字存儲示波器程序設(shè)計
筆者利用此技術(shù)在PC機(jī)上開發(fā)出了一套虛擬數(shù)字存儲示波器應(yīng)用軟件,其界面如圖5所示。該虛擬示波器不僅具有普源公司的DS5022M數(shù)字存儲示波器的基本功能,而且增加了自動調(diào)節(jié)量程和把波形數(shù)據(jù)文件與波形圖保存到電腦等功能。如有需要,利用LabVIEW可以很容易地為該虛擬儀器增加信號濾波等功能,從而把它擴(kuò)展為一種多用途的綜合測試系統(tǒng)。
USB總線通信接口的應(yīng)用越來越多,基于USB總線的儀器通信是一種新的儀器接口通信技術(shù)。與傳統(tǒng)的儀器接口方式相比,USB通信方式具有成本低而性能高的優(yōu)點,從而使基于電子儀器與PC機(jī)的虛擬儀器系統(tǒng)更具競爭力并具有更好的應(yīng)用前景。該技術(shù)不僅可用于儀器通信,也可以應(yīng)用于其他領(lǐng)域,例如PC機(jī)與數(shù)碼相機(jī)或其他帶USB接口的電子產(chǎn)品的通信。因此,基于USB接口的虛擬儀器系統(tǒng)在自動化測試領(lǐng)域必將得到越來越廣泛的應(yīng)用。
參考文獻(xiàn)
1 伏大山,王 勇. 電子儀器發(fā)展趨勢[J]. 電子質(zhì)量,2004;(10):9~11
2 林月芳,吉海彥. 智能儀器及其發(fā)展趨勢[J]. 儀器技術(shù),2003;(1):37~39
3 邊海龍,賈少華. USB2.0設(shè)備的設(shè)計與開發(fā)[M]. 北京:人民郵電出版社,2004
4 楊樂平,李海濤. LabVIEW高級程序設(shè)計[M]. 北京:清華大學(xué)出版社,2003
5 National Instruments. LabVIEW help [Z], 2005
6 北京普源公司. DS5000用戶手冊[Z], 2003