有關基於Matlab的計算機數據採集系統

學識都 人氣:2.25W

數據採集卡結構將數據採集卡設計成外置式結構,模擬信號經/D轉換成數字信號後通過串行口傳至較遠距離之外的計算機。本研究採用RS一232形式接口。數據採集卡框,主要包括TI公司生產的一片/D 轉換芯片TLC2543及單片機AT89C51。

有關基於Matlab的計算機數據採集系統

是帶串行控制和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繪製成二維圖形,橫座標爲時間,縱座標爲電壓,分別記錄數字控制器輸入電壓(來自應變儀)與調整輸出電壓控制器輸出)。控制器控制目標是維持其輸入電壓穩定(等於2倍設定值),數字控制器採樣頻率爲,即每秒對輸出更新100次。由圖可見,系統在數字控制器輸出(圖3a中上半部分曲線)作用控制下目標值曲線基本上爲一條水平線,說明反饋控制效果良好。用Matlab圖形自帶的圖形縮放功能可以方便地查看信號細節,圖中明顯可見數字控制器具有的“階梯”式輸出波形。

結論採用與計算機串口連接的外置式採集卡,利用Matlab語言編寫驅動程序的計算機數據採集系統具有優良的性價比。系統基本性能總結如下:模擬通道數11,模擬輸入電壓0~5 V,分辨率12位,採樣頻率(每通道)與採樣通道數有關(二者乘積基本不變),8通道時每通道可達450 Hz,2通道時可達以上,記錄長度(採集時間長度)由用戶決定,理論上最大長度僅取決於系統內存容量,完全滿足一般測試系統的需要。

最大采樣頻率主要由A/D轉換時間與數據傳輸時間決定。上述指標是在將每次採集的12位二進制數據用兩個字節(16位)發送至計算機的情況下測得的結果。可以簡單地省去冗餘位發送(例如兩次採集結果即24位用3字節發送)以提高採集頻率,還可以通過在採集卡上加上緩存提高採集頻率。