1、引言
數(shù)據(jù)采集系統(tǒng)涉及多學(xué)科,所研究的對(duì)象是物理或生物等各種非電或電信號(hào)。根據(jù)各種非電或電信號(hào)的特征,利用相應(yīng)的歸一化技術(shù),將其轉(zhuǎn)換為可真實(shí)反映事物特征的電信號(hào)后,經(jīng)A/D轉(zhuǎn)換器轉(zhuǎn)換為計(jì)算機(jī)可識(shí)別的有限長(zhǎng)二進(jìn)制數(shù)字編碼,以此作為研究自然科學(xué)和實(shí)現(xiàn)工業(yè)實(shí)時(shí)控制的重要依據(jù),實(shí)現(xiàn)對(duì)宏觀和微觀自然科學(xué)的量化認(rèn)識(shí),典型的數(shù)據(jù)采集系統(tǒng)組成如圖1所示。
在采集過(guò)程中,將傳感器獲取的參數(shù)通過(guò)A/D轉(zhuǎn)換送入內(nèi)存,然后由CPU對(duì)其進(jìn)行分析、運(yùn)算和處理,如數(shù)字濾波、量綱變換、誤差修正、數(shù)字顯示等。在本文中,嘗試通過(guò)利用MATLAB的數(shù)據(jù)采集工具箱對(duì)自主設(shè)計(jì)的數(shù)據(jù)采集系統(tǒng)[1]進(jìn)行模擬仿真,結(jié)果實(shí)現(xiàn)了對(duì)設(shè)計(jì)系統(tǒng)的模擬操作檢驗(yàn)與數(shù)據(jù)分析。為了滿足實(shí)時(shí)采集的要求,采用了Compilier編譯器[2],Compilier以M語(yǔ)言編制的程序?yàn)檩斎,可以根?jù)需要生成獨(dú)立運(yùn)行的應(yīng)用程序或可以被 C/C++程序調(diào)用的動(dòng)態(tài)鏈接庫(kù)文件[3]。它支持MATLAB所有的內(nèi)部函數(shù),可使程序變得簡(jiǎn)潔高效。
Figure 1 典型數(shù)據(jù)采集系統(tǒng)的組成
2、數(shù)據(jù)采集工具箱介紹
在MATLAB數(shù)據(jù)采集工具箱里集成了數(shù)據(jù)采集的M文件格式的函數(shù)和MEX文件格式的動(dòng)態(tài)鏈接庫(kù)。其主要特征[4][5]如下:
(1) 提供了將實(shí)時(shí)測(cè)量數(shù)據(jù)從數(shù)據(jù)采集硬件采集到MATLAB中的框架。
(2) 支持模擬量輸入(AI)、模擬量輸出(AO)以及數(shù)字量I/O子系統(tǒng),包括模擬量I/O實(shí)時(shí)變換。
(3) 支持PC聲卡和業(yè)界非常流行的數(shù)據(jù)采集設(shè)備如NI卡、并行口(LPT1-LPT3)、Keithley卡等。
(4) 采用事件驅(qū)動(dòng)模式進(jìn)行數(shù)據(jù)采集。數(shù)據(jù)采集工具箱由三部分組成:M文件格式的函數(shù)、數(shù)據(jù)采集引擎和硬件驅(qū)動(dòng),如圖2所示。這些組成部分使得MATLAB與數(shù)據(jù)采集硬件之間的信息傳遞成為可能。
Figure 2 數(shù)據(jù)采集引擎與硬件驅(qū)動(dòng)
3、數(shù)據(jù)采集過(guò)程
3.1 數(shù)據(jù)采集的基本步驟
(1)創(chuàng)建設(shè)備的一個(gè)對(duì)象。對(duì)象創(chuàng)建函數(shù)列表如下:
Table 1 對(duì)象創(chuàng)建函數(shù)列表
(2)添加通道或數(shù)據(jù)線。模擬量I/O對(duì)象中用應(yīng)添加通道,而數(shù)字量I/O對(duì)象中應(yīng)添加數(shù)據(jù)線,與添加通道或數(shù)據(jù)線有關(guān)的函數(shù)列表如下:
Table 2 與添加通道或數(shù)據(jù)線有關(guān)的函數(shù)列表
(3)配置屬性。屬性分為公共屬性和通道/數(shù)據(jù)線屬性,而兩者又再被分為基本屬性與設(shè)備特有屬性。其中公共屬性為返回設(shè)備對(duì)象的所有可配置的公共屬性名及其可能的屬性值,應(yīng)將對(duì)象作為Set函數(shù)的輸入?yún)?shù);要返回設(shè)備對(duì)象的所有公共屬性及其當(dāng)前值或?yàn)轱@示某個(gè)屬性的當(dāng)前值,應(yīng)將對(duì)象或?qū)傩悦鳛?Get函數(shù)的輸入?yún)?shù)。對(duì)于通道/數(shù)據(jù)線屬性,則使用Channel(Line)屬性。
(4)獲取或輸出數(shù)據(jù)。包括啟動(dòng)設(shè)備對(duì)象,記錄或發(fā)送數(shù)據(jù)及停止設(shè)備對(duì)象三個(gè)步驟。其中啟動(dòng)設(shè)備執(zhí)行Start函數(shù)、提取記錄數(shù)據(jù)使用 Getdata函數(shù)、發(fā)送數(shù)據(jù)前的數(shù)據(jù)排列使用Putdata函數(shù)、停止使用用Stop函數(shù);另外運(yùn)行狀態(tài)用Running屬性標(biāo)識(shí)、記錄狀態(tài)由 Logging屬性標(biāo)識(shí)、發(fā)送狀態(tài)由Sending屬性標(biāo)識(shí),其取值均為On或Off。對(duì)于數(shù)字量I/O對(duì)象,該部分處理有所不同。
(5)清除。當(dāng)不再需要設(shè)備對(duì)象時(shí),應(yīng)使用刪除函數(shù)Delete將設(shè)備對(duì)象從內(nèi)存中清除,并使用清除命令Clear將對(duì)象從MATLAB工作空間中清除。
來(lái)源:維庫(kù)開(kāi)發(fā)網(wǎng)