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