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