《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 測(cè)試測(cè)量 > 業(yè)界動(dòng)態(tài) > 基于虛擬儀器技術(shù)的USB接口儀器通信軟件設(shè)計(jì)

基于虛擬儀器技術(shù)的USB接口儀器通信軟件設(shè)計(jì)

2008-04-11
作者:葉文生,, 王思華

  摘 要: 以北京普源公司生產(chǎn)的RIGOL DS5000系列數(shù)字存儲(chǔ)示波器" title="數(shù)字存儲(chǔ)示波器">數(shù)字存儲(chǔ)示波器為例,,介紹一種通過(guò)USB總線接口實(shí)現(xiàn)PC機(jī)與儀器通信的編程方法,,并且給出一個(gè)通信應(yīng)用實(shí)例,。
  關(guān)鍵詞: 電子儀器 USB接口 虛擬儀器 LabVIEW 動(dòng)態(tài)鏈接庫(kù)


  隨著現(xiàn)代化科學(xué)技術(shù)的發(fā)展,電子儀器在各行各業(yè)中得到廣泛的應(yīng)用,,成為不可缺少的工具,。自1928年峰值電子電壓表在美國(guó)商品化到現(xiàn)在,電子儀器的發(fā)展大致經(jīng)歷了模擬式→數(shù)字式→智能式與程控式三個(gè)階段,。與傳統(tǒng)儀器相比,,智能式與程控式儀器具有自測(cè)功能和數(shù)據(jù)處理功能以及操作自動(dòng)化、人機(jī)界面友好和可程控操作等特點(diǎn)?,F(xiàn)代智能儀器大多數(shù)都配備有標(biāo)準(zhǔn)的通信接口" title="通信接口">通信接口,,為PC機(jī)與儀器的連接提供了極大的方便。虛擬儀器是基于PC機(jī)的測(cè)控設(shè)備或系統(tǒng),,PC機(jī)與儀器組成的自動(dòng)測(cè)量系統(tǒng)是虛擬儀器的常用結(jié)構(gòu)之一,。該結(jié)構(gòu)的特點(diǎn)是能將電子儀器的長(zhǎng)處(例如測(cè)量高頻信號(hào)的能力強(qiáng))與PC機(jī)在信號(hào)處理、存儲(chǔ)和表達(dá)以及測(cè)試自動(dòng)化方面的優(yōu)勢(shì)結(jié)合起來(lái),,組成功能更強(qiáng),、性能更優(yōu)和用途更廣的自動(dòng)化測(cè)量系統(tǒng)。
1 常見(jiàn)儀器通信接口的比較
  目前,,集成在智能儀器上的標(biāo)準(zhǔn)通信接口主要有RS232C接口,、RS485接口、GPIB接口和USB總線接口等,。四種通信接口的性能比較如表1所示,。從表中可看出RS485具有長(zhǎng)距離傳輸?shù)膬?yōu)點(diǎn),而USB則具有傳輸速率" title="傳輸速率">傳輸速率最高的優(yōu)點(diǎn),。USB接口除了傳輸速率高外,,還具有支持熱插拔、即插即用和高性價(jià)比等優(yōu)點(diǎn),。因此,,現(xiàn)在越來(lái)越多的儀器配置了USB接口,而PC通常更是配置了多個(gè)USB接口,。


2 USB總線簡(jiǎn)介
  通用串行總線(USB)Universal Serial Bus是由Compaq,、IntelMicrosoft,、NECHewlett-Packard,、Lucent和Philips等七家公司于1994年底聯(lián)合開(kāi)發(fā)的一種通信接口標(biāo)準(zhǔn),,當(dāng)時(shí)推出的版本是0.7版,而直到1998年底推出1.1版之后,,USB總線接口才得到廣泛的應(yīng)用?,F(xiàn)在最新的版本是2.0版,,其傳輸速率已經(jīng)從1.1版的12Mbps提高到480Mbps,整整提高了40倍,。
3 USB總線儀器通信的實(shí)現(xiàn)
3.1 USB總線通信的方法
  美國(guó)國(guó)家儀器(NI)公司的虛擬儀器應(yīng)用軟件開(kāi)發(fā)平臺(tái)LabVIEW已成為測(cè)試測(cè)量和自動(dòng)化領(lǐng)域的主要軟件工具之一,,本文所討論的通信軟件設(shè)計(jì)即是基于LabVIEW完成的。在LabVIEW中,,PC機(jī)與電子儀器通過(guò)USB接口進(jìn)行通信的方式主要有以下兩種:
 ?。?)通過(guò)調(diào)用電子儀器廠商提供的二次開(kāi)發(fā)包里面的通信動(dòng)態(tài)鏈接庫(kù)" title="動(dòng)態(tài)鏈接庫(kù)">動(dòng)態(tài)鏈接庫(kù)(DLL)來(lái)實(shí)現(xiàn)。
 ?。?)通過(guò)VISA(Virtual Instrument Software Architecture)提供的USB控制函數(shù)節(jié)點(diǎn)來(lái)實(shí)現(xiàn),。
  本文只對(duì)第一種方法展開(kāi)討論和研究。
3.2 動(dòng)態(tài)鏈接庫(kù)的調(diào)用
  在LabVIEW中可通過(guò)調(diào)用DLL的方式實(shí)現(xiàn)對(duì)其他公司硬件產(chǎn)品(如數(shù)據(jù)采集卡,、圖像采集卡和USB接口設(shè)備等)的驅(qū)動(dòng),,并在此基礎(chǔ)上可實(shí)現(xiàn)PC機(jī)與儀器的通信。下面以調(diào)用北京普源公司提供的RIGOL DS5000系列數(shù)字存儲(chǔ)示波器(以下簡(jiǎn)稱DS5000示波器)的DLL為例來(lái)說(shuō)明具體的編程方法,。
  在LabVIEW中調(diào)用DLL的函數(shù)必須知道DLL接口函數(shù)的原型,,才能正確地設(shè)置相關(guān)的參數(shù)。普源公司提供的DS5000示波器的DLL(DS5000USB_UI.dll)中有兩個(gè)接口函數(shù):USB寫(xiě)函數(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é)點(diǎn)位于功能模板(Functions)→All Functions→Advanced中,把它調(diào)出到LabVIEW的程序框圖后,,雙擊它就可以見(jiàn)到如圖1所示的設(shè)置對(duì)話框,。然后經(jīng)過(guò)輸入正確的DLL路徑與函數(shù)名稱、調(diào)用規(guī)程,、函數(shù)參數(shù)及其類型等步驟,,便完成了調(diào)用DLL節(jié)點(diǎn)的設(shè)置。調(diào)用Write_USB函數(shù)的方法與Read_USB相似,。
  為了便于對(duì)儀器發(fā)送控制命令,,筆者將USB接口的寫(xiě)和讀制作成子程序" title="子程序">子程序,其程序框圖如圖2所示,。要注意的是,,DS5000示波器在進(jìn)行USB通信時(shí)每次只能接收和發(fā)送單個(gè)ASCII碼,故子程序中含有把字符串轉(zhuǎn)換成ASCII碼數(shù)值數(shù)組和把ASCII碼數(shù)值數(shù)組轉(zhuǎn)換回字符串的功能,。

?


3.3 DS5000的通信協(xié)議(控制命令)和使用
  在DS5000示波器的二次開(kāi)發(fā)包中,,包含有DS5000示波器的命令表,可以用USB寫(xiě)命令子程序把控制和查詢命令直接發(fā)給儀器,,然后再用USB讀取數(shù)據(jù)子程序從儀器取回?cái)?shù)據(jù),。例如,要讀取輸入信號(hào)的頻率,,可以在USB寫(xiě)命令子程序的CMD String參數(shù)中輸入“:MEASURE:FREQ:?”,,然后再用USB讀取數(shù)據(jù)子程序取回輸入信號(hào)頻率的表達(dá)值“freq=***.***kHz”,。表2為DS5000示波器的部分控制和查詢命令。


3.4 波形的讀取與顯示
  在PC機(jī)與數(shù)字示波器組成的系統(tǒng)中,,讀取示波器測(cè)量的信號(hào)數(shù)據(jù)并以波形方式顯示出來(lái)通常是最基本的功能,。在實(shí)現(xiàn)該功能的過(guò)程中,筆者發(fā)現(xiàn)程序的設(shè)計(jì)有一定的復(fù)雜性,,因此用以下的實(shí)例加以說(shuō)明,。
  例如,要取示波器通道1的波形,。在讀取通道1波形的命令“:DATA:CHANNEL1:?”發(fā)送到DS5000示波器后,,示波器會(huì)把波形數(shù)據(jù)分成48塊分批放到USB接口的數(shù)據(jù)緩存單元中,每批數(shù)據(jù)為256字節(jié),,并且每批數(shù)據(jù)以“00”結(jié)束,,而最后一批數(shù)據(jù)(即第48批數(shù)據(jù))以一個(gè)換行符和一個(gè)回車符作為全部數(shù)據(jù)的結(jié)束符。組成波形的每個(gè)點(diǎn)的數(shù)據(jù)都以十六進(jìn)制字符串組成,,如用“0xB0”表示十六進(jìn)制數(shù)值“B0”,。另外值得注意的是,DS5000示波器返回的數(shù)據(jù)是以8位補(bǔ)碼的形式表示的,,如果直接顯示在Waveform Graph窗口中,,則會(huì)出現(xiàn)Waveform Graph上的波形與原波形剛好反相的現(xiàn)象。為了解決此問(wèn)題,,可以用255減去返回的數(shù)據(jù),,然后再送到Waveform Graph中顯示,這樣在Waveform Graph上顯示的波形才能與原波形相同,。讀取波形數(shù)據(jù)并顯示波形曲線的VI程序段如圖3所示,。圖中,“SendtoUSB.vi”和“ReadUSBasString.vi”分別為USB寫(xiě)命令子程序和USB讀取數(shù)據(jù)子程序,,而“StrToNumArray.vi”子程序的功能是把從示波器讀回來(lái)的字符型數(shù)據(jù)轉(zhuǎn)換成可以正確地在Waveform Graph上顯示的數(shù)值型數(shù)據(jù),,其程序框圖如圖4所示。


3.5 虛擬數(shù)字存儲(chǔ)示波器程序設(shè)計(jì)
  筆者利用此技術(shù)在PC機(jī)上開(kāi)發(fā)出了一套虛擬數(shù)字存儲(chǔ)示波器應(yīng)用軟件,,其界面如圖5所示,。該虛擬示波器不僅具有普源公司的DS5022M數(shù)字存儲(chǔ)示波器的基本功能,而且增加了自動(dòng)調(diào)節(jié)量程和把波形數(shù)據(jù)文件與波形圖保存到電腦等功能,。如有需要,,利用LabVIEW可以很容易地為該虛擬儀器增加信號(hào)濾波等功能,從而把它擴(kuò)展為一種多用途的綜合測(cè)試系統(tǒng),。
  USB總線通信接口的應(yīng)用越來(lái)越多,,基于USB總線的儀器通信是一種新的儀器接口通信技術(shù)。與傳統(tǒng)的儀器接口方式相比,,USB通信方式具有成本低而性能高的優(yōu)點(diǎn),,從而使基于電子儀器與PC機(jī)的虛擬儀器系統(tǒng)更具競(jìng)爭(zhēng)力并具有更好的應(yīng)用前景。該技術(shù)不僅可用于儀器通信,,也可以應(yīng)用于其他領(lǐng)域,,例如PC機(jī)與數(shù)碼相機(jī)或其他帶USB接口的電子產(chǎn)品的通信。因此,,基于USB接口的虛擬儀器系統(tǒng)在自動(dòng)化測(cè)試領(lǐng)域必將得到越來(lái)越廣泛的應(yīng)用,。
參考文獻(xiàn)
1 伏大山,王 勇. 電子儀器發(fā)展趨勢(shì)[J]. 電子質(zhì)量,,2004;(10):9~11
2 林月芳,,吉海彥. 智能儀器及其發(fā)展趨勢(shì)[J]. 儀器技術(shù),2003;(1):37~39
3 邊海龍,,賈少華. USB2.0設(shè)備的設(shè)計(jì)與開(kāi)發(fā)[M]. 北京:人民郵電出版社,,2004
4 楊樂(lè)平,李海濤. LabVIEW高級(jí)程序設(shè)計(jì)[M]. 北京:清華大學(xué)出版社,,2003
5 National Instruments. LabVIEW help [Z], 2005
6 北京普源公司. DS5000用戶手冊(cè)[Z], 2003

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]