<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 測試測量 > 設計應用 > 基于USB總線(xiàn)的虛擬儀器技術(shù)

基于USB總線(xiàn)的虛擬儀器技術(shù)

作者:■ 西北工業(yè)大學(xué)航海工程學(xué)院 蔡鍔 錢(qián)志博 時(shí)間:2005-03-04 來(lái)源:電子設計應用2004年第12期 收藏

摘 要:本文介紹了基于總線(xiàn)的技術(shù)在水下航行器動(dòng)力裝置測試中的應用情況。以PC機為主控單元、總線(xiàn)為接口、為軟件開(kāi)發(fā)平臺的充分利用了的新特性,提高了的整體性能。
關(guān)鍵詞:;USB; ;;

本文引用地址:http://dyxdggzs.com/article/4536.htm

序言
在水下航行器的動(dòng)力測試系統中,測試參數種類(lèi)繁多,測試環(huán)境復雜,存在強的噪聲干擾,并且,由于測試的目的不同,要出現不同的組合測試,所以要求測試系統具有較好的組態(tài)性能和易維護性。然而,傳統的測試系統設備復雜、功能單一、靈活性差。如果將虛擬儀器技術(shù)引入到水下航行器的動(dòng)力測試系統中,特別是引入基于USB總線(xiàn)的虛擬儀器技術(shù), 不但可以滿(mǎn)足動(dòng)力測試系統的要求,而且可以實(shí)現所建立的測控系統具有開(kāi)放式工業(yè)標準性、互換性和互操作性以及現場(chǎng)設備的智能化等優(yōu)勢。另外,還具有節省硬件數量及成本、節省維護開(kāi)銷(xiāo)與提高可靠性等特點(diǎn)。

硬件設計
系統總體結構
水下航行器動(dòng)力裝置研究中要進(jìn)行很多參數的測試,其中包括電壓、電流、有功功率、無(wú)功功率、扭矩等,未來(lái)的研究還會(huì )涉及到噪聲、振動(dòng)等參數的測試。不同的參數其測量方法不盡相同,本文所詳述的測試系統總體框圖如圖1所示。下面將重點(diǎn)介紹基于USB總線(xiàn)的數據采集卡的硬件和軟件設計。
USB數據采集卡硬件設計
鑒于USB協(xié)議的復雜性(需要編寫(xiě)大量的固件代碼),基于USB總線(xiàn)的數據采集卡的控制芯片采用AT89C55WD(自帶20K的程序存儲器,足以滿(mǎn)足需要)。采集卡的ADC采用8位的ADC08909。USB接口芯片采用Philips公司的PDIUSBD12,該芯片采用GoodLink技術(shù)的連接指示器,在通訊時(shí)使LED閃爍,這種技術(shù)對于USB接口調試十分有用。PDIUSBD12與AT89C55WD、ADC0809的接口電路如圖2所示。PDIUSBD12和AT89C55WD采用總線(xiàn)方式連接,通過(guò)中斷方式進(jìn)行數據交換。

軟件設計
這里只介紹與USB數據采集卡相關(guān)的軟件設計,包括單片機固件程序、采集卡驅動(dòng)程序、動(dòng)態(tài)鏈接庫()、用戶(hù)應用程序。
單片機固件程序設計
固件程序主要完成兩個(gè)方面的工作:ADC采樣服務(wù)和PDIUSBD12同主機的通訊。程序采用積木式結構,各模塊程序分工如下:    
*硬件提取層:對單片機的I/O口、數據總線(xiàn)等硬件接口進(jìn)行操作;
* PDIUSBD12命令接口:指對PDIUSBD12器件進(jìn)行操作的模塊子程序集;
*中斷服務(wù)程序:當PDIUSBD12向AT89C55WD發(fā)出中斷請求時(shí),讀取PDIUSBD12的中斷傳輸來(lái)的數據,設定事件標志位和Setup包數據緩存區并傳輸給主程序;
*標準請求處理程序:對USB的標準請求進(jìn)行處理;
* 廠(chǎng)商請求處理程序:對USB的廠(chǎng)商請求進(jìn)行處理;
*主循環(huán)程序:發(fā)送USB請求、處理USB總線(xiàn)事件和對用戶(hù)功能進(jìn)行處理。
固件程序的主循環(huán)框圖如圖3所示。
數據采集卡驅動(dòng)程序設計
數據采集卡驅動(dòng)程序的設計目標是編寫(xiě)在Windows2000下使用的驅動(dòng)程序。USB設備驅動(dòng)程序的設計是基于WDM的,傳統開(kāi)發(fā)工具是Microsoft公司的Windows 2000DDK,這種方法的優(yōu)點(diǎn)是能使開(kāi)發(fā)者對整個(gè)驅動(dòng)模型有較為深入的理解,使得開(kāi)發(fā)過(guò)程更為靈活。但是對于初學(xué)者來(lái)說(shuō)工作量、難度都較大,因此一些公司紛紛推出了諸如DriverWorks、Driver Winzard等驅動(dòng)開(kāi)發(fā)工具,這些工具的特點(diǎn)是只需添入少量的代碼,就可自動(dòng)生成相對完善的驅動(dòng)程序,但是缺乏靈活性。本設計中開(kāi)發(fā)驅動(dòng)程序采用的是前一種傳統方法,在Visual C++工程環(huán)境下編寫(xiě)源代碼,然后在Windows 2000DDK環(huán)境下編譯成sys驅動(dòng)文件,最后編寫(xiě)安裝信息文件,具體過(guò)程較為復雜,在此不再詳述。
程序設計
所謂DLL就是一個(gè)包含了若干函數的可執行模塊。其作用是通過(guò)DMA的方式讀取存儲在PDIUSBD12 FIFO中的采樣數據,并把它們存儲在開(kāi)辟的數據緩存區中,以供用戶(hù)應用程序調用。使用這種方法的優(yōu)點(diǎn)是允許若干個(gè)應用程序共享某個(gè)函數的單個(gè)副本,實(shí)現了代碼數據、硬件資源等的共享。
由于在Win32系統中,每個(gè)設備都抽象成文件,DLL只需通過(guò)幾條簡(jiǎn)單的文件操作API(應用程序接口)函數就可實(shí)現與驅動(dòng)程序中某個(gè)設備通訊,因此編寫(xiě)DLL時(shí)應充分應用API函數。本設計中用到的API函數主要有:open_file( )、open_dev( )、DeviceIoControl ( )和ReadFile( )。DLL在Visual C++中的Win32 Dynamic-Link Library開(kāi)發(fā)模板下編寫(xiě),由于用戶(hù)應用程序采用編寫(xiě),因此還需將Labview.lib庫文件添加到開(kāi)發(fā)模板中,這樣才能編譯生成正確的DLL文件。
用戶(hù)應用程序設計
用戶(hù)應用程序將采用NI公司的Labview7.0編寫(xiě)。Labview中DLL的調用是通過(guò)CLF(Call Library Function)節點(diǎn)實(shí)現的,在使用之前需要對它進(jìn)行配置,配置完成后,CLF節點(diǎn)的函數原型為:char UsbRead (char dbfsize, unsigned char *code, char *databuf),dbfsize為所讀取數據長(cháng)度;*code為返回的錯誤代碼指針(為了調試方便);*databuf為所讀取的數據指針。需要注意的是在調用DLL之前,Labview程序中需要對*databuf賦初值,否則Labview程序運行會(huì )發(fā)生意想不到的錯誤。因為在Labview中是不會(huì )自動(dòng)給*databuf開(kāi)辟內存的。
使用NI公司的DataSocket技術(shù),通過(guò)簡(jiǎn)單的編程,用戶(hù)應用程序就可以實(shí)現在局域網(wǎng)或廣域網(wǎng)內向多個(gè)遠程終端同時(shí)廣播現場(chǎng)測量數據。同樣,使用WebPublish技術(shù)通過(guò)簡(jiǎn)單的編程,用戶(hù)可以在本地或遠程計算機上瀏覽和控制用戶(hù)應用程序的控制面板。這樣網(wǎng)絡(luò )化虛擬測控平臺的雛形就基本建立起來(lái)了,這也是本設計在編制用戶(hù)應用程序時(shí),為何選用Labview7.0的重要原因。

結語(yǔ)
通過(guò)本設計,可以看出USB總線(xiàn)同Labview開(kāi)發(fā)軟件平臺的結合具有廣闊的發(fā)展前景,但是這次設計由于所選擇USB接口芯片的限制,傳輸速度難以提高(通過(guò)測試,速度從未大于1M/s),使得它在高頻、實(shí)時(shí)性要求較高的場(chǎng)合難有用武之地。通過(guò)選用支持USB2.0協(xié)議的接口芯片(速度可達480M/s)來(lái)提高速度,是本設計值得改進(jìn)的一個(gè)方面?!?/p>

參考文獻
1 Intel, Microsoft, IBM, etc. USB Specification 1.1. 2002
2 Chris Cant Windows WDM 設備驅動(dòng)程序開(kāi)發(fā)指南. 北京: 機械工業(yè)出版社,2000.10
3 楊樂(lè )平,李海濤,勇楊等. labview高級程序設計. 北京:清華大學(xué)出版社,2002.10



關(guān)鍵詞: DLL Labview USB 測試系統 虛擬儀器

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>