- 相關推薦
有關基于Matlab的計算機數據采集系統
數據采集卡結構將數據采集卡設計成外置式結構,模擬信號經/D轉換成數字信號后通過串行口傳至較遠距離之外的計算機。本研究采用RS一232形式接口。數據采集卡框,主要包括TI公司生產的一片/D 轉換芯片TLC2543及單片機AT89C51。
是帶串行控制和11個輸入端的12位模數轉換芯片,內置采樣保持器,最長轉換時間不超過,內置S/H 及多路選擇開關,單5 V供電,O~模擬輸入,需外接參考電壓輸入。單片機振蕩頻率選用22.118 4 MHz,這樣AT89C51與PC通信波特率可精確地達到115 200 bps,確保高速采集的數據能實時傳送給計算機[3]。
模擬信號輸入用TLC2274高速低噪聲運放緩沖,它的輸出是滿幅度的(即rail—to—rail),采用單供電時,可產生O~5 V 輸出,用在這里是很合適的。電壓源芯片AD586產生+5 V精密基準電壓作為TLC2543參考電壓。采集設置由PC傳送,采得的數據經過串行口實時傳送給計算機。
系統軟件設計系統軟件包括兩部分,即采集卡上的單片機程序與PC機上用Matlab語言編寫的M 程序。單片機程序按要求(來自PC 串I=I)采集數據并將數據回送至PC,M 程序控制采集卡及接收采集數據,并完成數據處理、分析、存盤等任務。
單片機程序設計為保證采樣頻率準確,采用定時中斷啟動采集。
采集在中斷服務程序中完成,每次采集循環均按指定的通道數對模擬通道1~11(最少1個通道,最多個通道)進行采集,之后將采得的數據傳送至。主程序完成初始化設置與PC機握手,接收控制參數,之后等待中斷。接收的參數有兩個,即通道數與表示采樣頻率的定時常數。顯然,這兩個參數之積大致為一定值。這樣可以通過靈活設置采樣參數,充分發揮采集卡性能。
數據采集與傳輸在中斷服務程序中完成。首先,完成一個循環的采集與傳輸,即按要求采集相應的通道,并傳送2×通道數個字節。之后,檢查是否收到結束信號(檢查RI標志位),若收到,則中斷服務程序結束并返回至主程序開始處,即相當于程序重新開始,等待下一次采集命令;否則,中斷服務程序正常結束,返回主程序,等待下一次中斷。
正常工作時單片機向PC串口高速傳送數據而無需接收來自PC的指令或數據,只要PC程序程序)設置較大容量串口通信接收緩存,則單片機只管定時向PC傳送數據,而不必擔心PC接收會漏收數據。握手信號及控制信號等必須與PC機交互傳送的數據,采用了PC機發送一單片機應答一PC機發送下一字節的方式,確保單片機準確接收。
程序設計采用Matlab編寫的驅動程序類似于下編寫基于對話框的應用程序。利用Matlab的工具可方便地設計出符合要求的GUI。編程就是合理編寫相應的控件回調函數,對GUI中控件的回調函數(eP Callback)編程。
為該采集系統設計的GUI共使用6個通用控件,即一個編輯框、4個按鈕及一個圖框。編輯框用來指示當前設置及狀態,4個按鈕分別對應采集系統的4個基本任務,即數據采集(toggle button)、數據分析、數據載入(eP數據文件打開)、數據存盤,其中后3個按鈕均為radio button型式。下面以“數據采集”對應的回調函數為例加以說明。
“數據采集”回調函數button—GatherData—是整個驅動程序的核心,在按下該按鈕后開始執行。該按鈕設置為toggle button即自鎖式按鈕,用來完成采集器啟停控制與狀態指示兩個功能。
圖2是該回調函數程序流程框圖。首先檢查該按鈕的status屬性,判斷用戶是啟動采集還是結束采集。如是啟動采集(eP按鈕由彈開狀態至壓下狀態),則握手成功后即發送控制命令,包括通道數與代表采樣頻率的時間常數,之后采集卡立即開始采集,機則開始接收采集。由圖可見,數據接收部分實際上是一個循環程序,直至接收緩存中只有單個字節#OH時表示單片機已停發數據,此時退出上述循環,之后進行數據處理工作。數據處理包括數據重組與合成:重組是指將接收的數據組合成按通道排列的數據;合成是將兩字節表示的12位二進制數轉換成實際電壓值,最后將結果存放于名為的矩陣中,其中 為每通道采樣點數, 為通道序號。value矩陣實際列數為通道數加1,其中第1列為采集時間(根據采樣頻率求得),從第2列開始為各通道數據。將value設置為global屬性,這樣在工作區即可直接存取該矩陣。只要在命令窗口中聲明global value,程序結束后可直接對進行分析、繪圖等操作,無需先將value從函數空間裝至工作區空間,使用方便。只要PC機內存足夠,使用者可采集任意時間長的數據。
由于利用同一按鈕的兩種狀態表示啟動與結束采集,因此就出現了所謂回調函數中斷問題。如果不能對回調函數進行中斷,則在回調函數結束前系統無法對再次按下按鈕作出響應,從而導致無法結束采集的局面。Matlab共設計了drawnow、figure、 pause、waitfor與getframe共5條指令用于回調函數中斷(詳見Matlab幫助),圖2的框圖中接收循環段插入drawnow指令。Matlab執行此指令時會自動檢查是否有按鈕按下,若有則中斷當前執行中的回調函數程序而調用相應按鈕對應的回調函數(在這里二者均為button_GatherData-Callback),之后返回至下一句執行;否則直接轉至下一句(即執行。figure(gcf)保證GUI處于當前窗口,隨時準備接收用戶輸入。這樣,就利用了Matlab內部回調函數中斷機制,正確地響應了用戶輸入。
使用一種名為handles的結構來保存數據。利用handles可以解決同一GUI中不同回調函數之間或者同一回調函數不同執行次數之間的通信問題。
“數據分析”回調函數button—PlotData—根據需要將所得數據(handles結構中)實現繪圖、計算等功能,例如數據濾波、頻譜分析、標度轉換、二維繪圖甚至三維繪圖等。“數據存盤”回調函數button—SaveData—Callback將采得數據結構中)存為文本格式的數據文件,以方便在各種編輯軟件中打開。該文件包括文件頭與正文兩部分,文件頭主要是一些統計結果及說明,包括所用通道數、采樣頻率、每通道總樣點數、數據采集日期與時間等;正文部分即為正式數據部分,按列排列,總列數為通道數加1,其中第1列為時間,總行數(正文)為每通道樣點數。
應用設計的基于Matlab的數據采集系統充分利用了Matlab方便的串口控制、強大的計算能力及編程方便等特點,在土槽應用中,取得了良好的效果。
采集系統在土槽測試裝置中采用磁粉離合器垂直加載系統的應用結果。啟用2通道,采樣頻率每通道),將采集的數據用Matlab繪制成二維圖形,橫坐標為時間,縱坐標為電壓,分別記錄數字控制器輸入電壓(來自應變儀)與調整輸出電壓控制器輸出)?刂破骺刂颇繕耸蔷S持其輸入電壓穩定(等于2倍設定值),數字控制器采樣頻率為,即每秒對輸出更新100次。由圖可見,系統在數字控制器輸出(圖3a中上半部分曲線)作用控制下目標值曲線基本上為一條水平線,說明反饋控制效果良好。用Matlab圖形自帶的圖形縮放功能可以方便地查看信號細節,圖中明顯可見數字控制器具有的“階梯”式輸出波形。
結論采用與計算機串口連接的外置式采集卡,利用Matlab語言編寫驅動程序的計算機數據采集系統具有優良的性價比。系統基本性能總結如下:模擬通道數11,模擬輸入電壓0~5 V,分辨率12位,采樣頻率(每通道)與采樣通道數有關(二者乘積基本不變),8通道時每通道可達450 Hz,2通道時可達以上,記錄長度(采集時間長度)由用戶決定,理論上最大長度僅取決于系統內存容量,完全滿足一般測試系統的需要。
最大采樣頻率主要由A/D轉換時間與數據傳輸時間決定。上述指標是在將每次采集的12位二進制數據用兩個字節(16位)發送至計算機的情況下測得的結果?梢院唵蔚厥∪ト哂辔话l送(例如兩次采集結果即24位用3字節發送)以提高采集頻率,還可以通過在采集卡上加上緩存提高采集頻率。
【基于Matlab的計算機數據采集系統】相關文章:
基于USB接口的數據采集系統設計10-10
基于USB總線的高速數據采集系統10-11
基于DSP的USB口數據采集分析系統10-09
基于DSP和以太網的數據采集處理系統06-14