關(guān) 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設(shè)計(jì)應(yīng)用 > 基于MATLAB的實(shí)時(shí)數(shù)據(jù)采集與分析研究

        基于MATLAB的實(shí)時(shí)數(shù)據(jù)采集與分析研究

        作者: 時(shí)間:2009-05-15 來源:網(wǎng)絡(luò) 收藏


          (3)配置屬性。屬性分為公共屬性和通道/數(shù)據(jù)線屬性,而兩者又再被分為基本屬性與設(shè)備特有屬性。其中公共屬性為返回設(shè)備對象的所有可配置的公共屬性名及其可能的屬性值,應(yīng)將對象作為Set函數(shù)的輸入?yún)?shù);要返回設(shè)備對象的所有公共屬性及其當(dāng)前值或?yàn)轱@示某個(gè)屬性的當(dāng)前值,應(yīng)將對象或?qū)傩悦鳛镚et函數(shù)的輸入?yún)?shù)。對于通道/數(shù)據(jù)線屬性,則使用Channel(Line)屬性。

        本文引用地址:http://www.104case.com/article/163805.htm

          (4)獲取或輸出數(shù)據(jù)。包括啟動設(shè)備對象,記錄或發(fā)送數(shù)據(jù)及停止設(shè)備對象三個(gè)步驟。其中啟動設(shè)備執(zhí)行Start函數(shù)、提取記錄數(shù)據(jù)使用Getdata函數(shù)、發(fā)送數(shù)據(jù)前的數(shù)據(jù)排列使用Putdata函數(shù)、停止使用用Stop函數(shù);另外運(yùn)行狀態(tài)用Running屬性標(biāo)識、記錄狀態(tài)由Logging屬性標(biāo)識、發(fā)送狀態(tài)由Sending屬性標(biāo)識,其取值均為On或Off。對于數(shù)字量I/O對象,該部分處理有所不同。

          (5)清除。當(dāng)不再需要設(shè)備對象時(shí),應(yīng)使用刪除函數(shù)Delete將設(shè)備對象從內(nèi)存中清除,并使用清除命令Clear將對象從工作空間中清除。

        3.2 應(yīng)用實(shí)例與分析

        3.2.1 對RS232 的串口通信設(shè)計(jì)

        是一個(gè)跨平臺軟件,而此處使用的是自主設(shè)計(jì)的卡,因此不具備直接訪問的能力。但MATLAB的面向?qū)ο蠹夹g(shù),已用一個(gè)對象把計(jì)算機(jī)串口封裝起來,只要用Serial函數(shù)創(chuàng)建串口對象即可[6]。關(guān)鍵語句為:s=serial(‘COM1’,‘BaudRate’,9600)。MATLAB封裝的串口對象支持對串口的異步讀寫操作,通過對異步讀寫設(shè)置,PC在執(zhí)行讀寫串口函數(shù)時(shí)能立即返回,不必等待串口把數(shù)據(jù)串輸完畢。當(dāng)指定數(shù)據(jù)傳輸結(jié)束時(shí)就觸發(fā)事件,執(zhí)行事件回調(diào)函數(shù),對事件回調(diào)函數(shù)編程,進(jìn)行數(shù)據(jù)處理,這樣可以大大提高數(shù)據(jù)處理的效率。

        MEX是MATLAB的可執(zhí)行程序,是MATLAB調(diào)用其它語言編寫的程序或算法的接口,在Windows環(huán)境下是擴(kuò)展名為DLL的動態(tài)鏈接庫。對MEX編譯器進(jìn)行配置的方法是:在MATLAB命令窗口中運(yùn)行mex-setup,選擇VC6.0++作為編譯器。用C語言編寫端口讀、寫的操作程序,程序包含有頭文件mex.h和mexFunction函數(shù),mexFunction函數(shù)中nelhs表示輸出變量的個(gè)數(shù),plhs包含指向輸出變量指針的數(shù)組,nrhs表示輸入變量的個(gè)數(shù),prhs包含指向輸入變量指針的數(shù)組。接口編形成的MEX文件與參考文獻(xiàn)[7][8]類似,在此不再累述。

        3.2.2 與分析

          (1)數(shù)據(jù)讀取的MATLAB實(shí)現(xiàn)

          主要代碼為:

        %讀取通道數(shù)及總數(shù)據(jù)量
        fid=fopen(‘cardiogram.add’,‘r’);
        Status=fseek(fid,56,‘bof’);
        nDataChNum=fread(fid,1,‘long’);
        status=fseek(fid,204, ‘bof’);
        nAllDataLength=fread(fid,1, ‘long’);
        %按通道數(shù)循環(huán)讀出各通道起始地址
        status=fseek(fid,76, ‘bof’);%
        for i=1: nDataChNum
        pChannelAdr(i)=fread(fid,1, ‘long’)
        end
        %按通道數(shù)循環(huán)讀出各通道數(shù)據(jù)
        for i=1:nDataChNum
        status=fseek(fid,pChannelAdr(i)+360, ‘bof’)
        nSegNum=fread(fid,1, ‘log’)
        status=fseek(fid,pChannelAdr(i)+160*nSegNum+1024, ‘bof’);
        data=fread(fid,nAllDataLength, ‘short’);
        end
        sta=fclose(fid);

          (2)數(shù)據(jù)處理與圖形繪制

        利用MATLAB的圖形用戶接口,通過編程可以很方便地構(gòu)建與分析的用戶交互界面。將數(shù)據(jù)采集系統(tǒng)采集的實(shí)際心電圖信號,用RS232導(dǎo)入到PC中。在MATLAB環(huán)境下,運(yùn)行以上已經(jīng)編好的程序,即可得到如下的模擬實(shí)驗(yàn)結(jié)果。不過要說明的是,此處使用的數(shù)據(jù)采集系統(tǒng)是八通道同步采集,而仿真時(shí)僅使用的是其中一個(gè)通道進(jìn)行的操作。

        figure 3 實(shí)際心電圖信號的采集與處理效果圖

        4、結(jié)語

        使用自主開發(fā)的數(shù)據(jù)采集系統(tǒng),通過合理運(yùn)用串口及MTLAB強(qiáng)大的數(shù)值計(jì)算和分析功能,實(shí)現(xiàn)了MATLAB的數(shù)據(jù)處理和分析。通過模擬實(shí)驗(yàn)表明,該方法對于其它類似采集卡依然實(shí)用,具有一定的應(yīng)用價(jià)值和發(fā)展前景。


        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 虎林市| 通辽市| 化州市| 哈密市| 星子县| 南木林县| 乌鲁木齐县| 开平市| 武城县| 开封市| 余庆县| 蕉岭县| 梅州市| 普宁市| 六盘水市| 巴彦县| 梧州市| 罗平县| 册亨县| 福泉市| 思茅市| 长葛市| 海淀区| 榆中县| 芦溪县| 双鸭山市| 伊吾县| 将乐县| 育儿| 延津县| 屯门区| 江津市| 清水河县| 溧阳市| 双江| 曲阳县| 呼和浩特市| 左云县| 临海市| 屏南县| 玉林市|