摘? 要: 應用越來越廣泛的USB為實現實時數據采集" title="數據采集">數據采集提供了很大的便利,功能強大的MATLAB工具軟件對數據分析和處理十分方便。介紹一種利用MEX文件將二者結合起來,實現在MATLAB平臺下對數據實時采集,然后利用其庫函數對采集到的數據進行處理和分析的方法。
關鍵詞: USB? MATLAB? MEX文件? 數據采集 實時
?
1 MATLAB的特點
MATLAB(Matrix Laboratory)機矩陣實驗室是由美國MathWorks公司推出的一款集數值分析、矩陣計算、信號處理和圖形顯示于一體的工具軟件。它的命令語句功能非常強大,包含了大量高度集成的可直接調用的函數,高效簡潔;另一方面,它又是一個開放系統,針對不同的學科,推出了不同的工具箱。自1984年推向市場以來,經過十幾年的發展和競爭,現已成為國際認可(IEEE)的最優化的科技應用軟件之一。
正是由于MATLAB具有良好的擴展性以及強大的數據分析和處理能力,現已廣泛應用于矩陣代數、數值計算、數字信號處理、振動理論、神經網絡控制、動態仿真等領域。雖然MATLAB是一個完整的、功能齊全的編程環境,但在某些情況下,與外部環境的數據和程序的交互是非常必須而且有益的。例如,MATLAB不能實現對數據的實時采集,它所處理的數據必須是現成的,因此它不能很好地應用于需要在現場對數據進行分析和處理馬上得出結論的環境。如果將MATLAB與外部的數據和程序進行交互,問題就可迎刃而解了。
MATLAB是用M語言編程,盡管不能在M文件中直接調用C語言程序,但可以通過MATLAB提供的應用編程接口(API)來與外部接口,在MATLAB環境中調用C語言或Fortran程序、輸入或輸出數據" title="輸出數據">輸出數據以及與其他軟件程序建立客戶/服務器關系。在MATLAB中調用C語言程序,必須通過MEX文件來實現。
2 MEX文件
MEX文件是MATLAB命令解釋器能夠自動加載和執行的動態鏈接子函數。C語言的MEX文件是一種動態鏈接子程序,可以象調用M文件一樣調用它。MEX文件主要有以下幾方面的應用:
(1)在MATLAB中,M文件的計算速度特別是循環迭代速度遠比C語言慢,因此可以把大量循環迭代用C語言編寫為MEX文件,提高計算速度,解決MATLAB中循環的瓶頸問題;
(2)已經開發的C語言程序,不必將其轉化為M文件而重復勞動,通過添加入口程序mexFunction,可以由MATLAB調用;
(3)直接控制硬件,如A/D采集卡、D/A輸出卡等,以用于數據采集或控制應用。
MEX文件與動態鏈接庫從某種意義上來說有很多相似之處,不同之處在于MEX文件是專門針對MATLAB的動態鏈接庫,可以像MATLAB自身的庫函數一樣被調用。
C語言的MEX文件的源程序由兩個部分組成:
(1)計算程序,即在MEX文件中完成計算功能的程序代碼。計算程序可以是普通的C語言程序,按照C語言規則編寫即可;
(2)入口程序,即將計算程序與MATLAB連接的入口函數mexFunction。入口函數mexFunction相對復雜一些,函數中有四個參數nlhs、plhs、nrhs和prhs。這里nlhs是輸出數據的個數,plhs是指向mxArray(MATLAB中所有數據都由mxArray定義)的輸出數據的指針,nrhs是輸入數據的個數,prhs是指向mxArray的輸入數據的指針。
3 USB的特點
USB(Universal Serial Bus)就是通用串行總線,它是一種PC機的外掛總線,是多家主要電腦、電子科技廠商為了解決PC機外圍設備的擁擠,提高設備的傳輸速度而聯合提出的一種新型總線。當適合它的Windows98操作系統一出現,USB便得到了迅猛的發展。USB之所以具有如此魅力,還在于它具有許多其它總線無法比擬的優點。USB規范能針對不同的性能價格比要求提供不同的選擇,以滿足不同的系統和部件及相應不同的功能,其主要優點可歸結為以下幾點:
(1)速度快。USB有高速和低速兩種方式,主模式為高速模式,速率為12Mbps;另外為適應一些不需要很大吞吐量和很高實時性的設備,如鼠標等。USB還提供低速方式,速率為1.5Mbps。
(2)易擴展。用USB連接的外圍設備可以分為5層,外設數目最多可達127個。
(3)能夠采用總線供電。USB總線提供最大5V,500mA電流,對于功耗較小的設備來說非常有效。
(4)設備安裝和配置容易。USB設備支持即插即用和熱插拔,系統對其進行自動配置,不再占用中斷資源或者DMA資源,徹底拋棄了過去的跳線和撥碼開關設置。USB為電纜和連接頭提供了單一模型,解決了因外設越來越多造成的插槽緊張問題。
(5)使用靈活。USB共有4種傳輸模式:控制傳輸(control)、同步傳輸(Synchronization)、中斷傳輸(interrupt)、批量傳輸(bulk),以適應不同設備的需要。
(6)實現USB功能的模塊價格低廉。
實現實時數據的采集,并利用MATLAB強大的數據處理和分析功能,最理想的情況當然就是在MATLAB中直接對USB總線進行控制。但是MATLAB自身并不能實現對USB的控制功能。眾所周知,在C語言環境中,可以非常方便地實現對USB的驅動開發和控制。如果使用C語言對USB的數據采集部分進行驅動和控制,編譯成MEX文件,然后在MATLAB中調用即可。
4 USB數據采集系統
4.1 USB驅動(USBD)
USBD為客戶提供兩組工具:命令工具和通道工具。命令工具允許客戶在配置和控制USBD操作的同時配置并控制USB設備,它提供了對設備標準通道的所有訪問;通道工具允許USBD客戶管理特定設備的數據,控制數據的傳輸,它不允許客戶直接訪問設備的標準通道。USBD客戶可以直接命令設備或從通道直接輸入和輸出數據流。
USBD提供了供操作系統組件特別是設備驅動程序" title="設備驅動程序">設備驅動程序訪問設備的一組接口。這些操作系統組件只能通過USBD來訪問USB。一個USBD可以訪問一個或多個HCD,而一個HCD可能與一個或多個主機控制器相連。某些操作系統可能允許對USBD進行初始化設置。從客戶來看,與其進行通信的USBD管理著所有連接著的USB設備。
其通信過程如圖1所示。
?
?
從硬件連接的角度來看,系統由兩部分構成:開發板和PC機。從軟件角度來看,可以分為三個層次:板載程序、設備驅動程序和客戶應用程序。
·板載程序由8051執行,完成控制開發板的工作。
·設備驅動程序是Windows核心的一部分,它與系統中的USB總線驅動程序一起完成對設備的管理。
·客戶應用程序主要完成上層控制功能,將數據寫入設備或者將設備中的數據讀出顯示。
4.2 采集系統硬件連接
一個實用的USB數據采集系統包括A/D、微控制器及USB通信接口。為了擴展還可以加上多路" title="多路">多路模擬開關和數字I/O端口。系統硬件結構框圖如圖2所示。
?
?
一種方案就是采用普通單片機加上專用USB通信芯片。這種方案設計和調試比較麻煩,成本相對較高。
隨著單片機制造技術的發展以及USB應用的日益廣泛,還可以使用具有USB通信接口的單片機。這些單片機處理能力強,有的本身就具備多路A/D。系統電路簡單、調試方便、電磁兼容性好。
本系統從性能角度以及今后的發展方向出發,選用Cypress公司生產的具有USB通信功能的CY7C64613。EZ-USB FX(CY7C64613)屬于Cypress半導體第二代全速USB系列,它較第一代具有更好的性能和更高的集成度。CY7C64613不但具備了EZ-USB的所有特征,還包括了一個智能的USB核心,一個增強8051,8KB的RAM和維持上層代碼兼容性的高性能I/O。該單片機可以與USB1.1協議和2.0協議兼容。
系統A/D采用Analog Devices公司的AD7891。它是一個8通道的12位數據采集系統,可以任意選擇并行或串行接口" title="串行接口">串行接口。這部分包括一個多路輸入復用器,一個片上監控放大器,一個高速12位ADC,+2.5V參考電壓和一個高速接口。AD7891選擇并行還是串行接口由MODE腳決定。無論是并行還是串行接口,它都具有標準的控制輸入和快速的數據采集,從而保證了與現代微處理器、微控制器以及數字信號處理器的簡單接口連接。AD7891的每一個通道都有過壓保護,這意味著未選通道的過壓現象不會影響已選通道的數據傳輸。
系統框圖如圖3所示。
?
?
4.3 MEX文件的編寫?????
為了使程序具有良好的可移植性,實現功能的模塊化,MEX文件的兩個部分分別放在兩個不同的文件里。控制和實現部分主要完成對USB的讀寫以及管理功能,入口程序調用它們,從而實現對USB發送控制命令、從USB讀取數據以及存儲數據的功能。
MEX文件執行流程如圖4所示。
?
?
???在傳統的工程檢測中,需要將采集到的數據存儲起來,經過一系列的處理和轉換,才能利用MATLAB進行分析和處理。實時性較差,造成人力物力的浪費。而該系統可以在MATLAB平臺上直接調用,簡潔明了,克服了傳統方法的缺點。
?
參考文獻
1 (美)Jan Axelson著, 陳逸譯.USB應用大全.北京:中國電力出版社, 2001
2 劉志儉.MATLAB應用程序接口用戶指南.北京:科學出版社,2000
3 程衛國.MATLAB5.3應用指南.北京:人民郵電出版社,1999
4 SanJose編著.CY7C64601/603/613 EZ-USB FX USB?Microcontroller Data Sheet.Cypress Semiconductor Corporation,2001
5 LC2MOS 8-Channel,12-Bit High Speed Data Acquisition?System Data Sheet (Rev.C,),2002