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