當前位置:文思屋>學習教育>畢業論文>

有關基於Matlab的計算機資料採集系統

文思屋 人氣:2.26W

資料採集卡結構將資料採集卡設計成外接式結構,模擬訊號經/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位元組傳送)以提高採集頻率,還可以通過在採集卡上加上快取提高採集頻率。