前言
MATLAB 被廣泛的使用在工程學(xué)和科學(xué)的領(lǐng)域, 從數據采集和分析到應用程序開(kāi)發(fā)。MATLAB
環(huán)境集合了數學(xué)計算, 圖形化輸出, 和強有力的計算機程序語(yǔ)言。內建的接口讓使用者可以從儀器、檔案、和外部數據庫和程序中讀取數據。另外,
MATLAB 應用程序還可以整合使用其它著(zhù)名的計算機語(yǔ)言所開(kāi)發(fā)出來(lái)的函式庫如C 、C++ 、FORTRAN,
和Java。
本文主要將會(huì )介紹MATLAB數據采集工具箱的內部結構,
和外部的使用接口, 熟悉數據采集工具箱的使用方法將會(huì )了解如何使用同一組指令去操作各種不同硬件的數據采集卡以進(jìn)行模擬輸入(AI),
模擬輸出(AO), 數字輸出入(DIO)的各種操作. 對于MATLAB的使用者而言將是一項有力的工具。
何謂MATLAB數據采集工具箱(Data
Acquisition Toolbox)
數據采集工具箱是一組M-File 函式集和MEX-File 等動(dòng)態(tài)鏈接鏈接庫所組成的, 專(zhuān)門(mén)使用在數據采集方面的一組函式庫.
它提供了以下主要的功能
1. 以相同的指令操作 模擬輸入(AI), 模擬輸出(AO), 數字輸出入(DIO)和同步模擬輸出入轉換各式功能,
不會(huì )因不同硬件而產(chǎn)生不同的指令.
2. 一個(gè)及時(shí)數據采集環(huán)境, 被測量的數據不需經(jīng)由轉換可直接進(jìn)入MATLAB 直接進(jìn)行分析.
3. 支持主要的數據采集卡的廠(chǎng)商, 如:凌華, Agilent, ComputerBoards
和 National Instruments.
4. 支持事件驅動(dòng)(Event-driven)的數據采集.
MATLAB數據采集工具箱的內部結構
數據采集工具箱包括三個(gè)模塊分別為: M-File 函式集, 數據采集引擎(Data Acquisition
Engine), 和硬件轉接驅動(dòng)程序(Hardware Driver Adaptors)。如下圖所示,
這些模塊允許使用者在MATLAB 內和使用者的數據采集硬件之間交換數據。
 |
圖一:
數據采集工具箱的三大模塊和數據流動(dòng)的關(guān)系 |
屬性和事件是內部溝通的方式, 數據是主要傳送的標的, 分述如下: 屬性(Property
values)
使用者能經(jīng)由屬性的改變而改變使用者的數據采集行為, 經(jīng)由數據采集工具箱屬性的改變將會(huì )影響到硬件驅動(dòng)程序的行為,
使硬件的工作符合使用者的實(shí)際需要。
資料(Data)
使用者能從感應器獲取數據并存放它在MATLAB內, 或從MATLAB 輸出數據到作動(dòng)器。 此外使用者能在數字(1和0)和數字的輸出入(DIO)之間進(jìn)行數據轉換。
事件(Events)
事件發(fā)生在當某個(gè)特定的情況符合之后, 通常在使用者設定屬性后使用者可以指定一個(gè)或更多的回呼函數(Callback
function)去處理不同的事件。使用者能使用事件的一些方式包括預先決定相當數量的數據被采集之后立刻進(jìn)行分析,
或當硬件驅動(dòng)程序有錯誤發(fā)生時(shí)顯示一個(gè)錯誤訊息到MATLAB的工作區。
開(kāi)始進(jìn)行數據采集
或許最有效學(xué)習數據采集工具箱的方式為, 連接使用者的硬設備然后開(kāi)始使用數據采集工具箱實(shí)際的進(jìn)行數據采集的工作.
實(shí)際進(jìn)行如何輸入或輸出數據。這個(gè)部分提供使用者一個(gè)簡(jiǎn)單的例子說(shuō)明怎么從實(shí)際的硬件上采集數據(AI),
又如何從MATLAB中產(chǎn)生數據并輸出到實(shí)際的硬件(AO), 另一種常見(jiàn)的數據采集是使用數字I/O(DIO)。
以上均為典型的數據采集范例并且會(huì )對個(gè)范例作說(shuō)明。使用者應該記住這些步驟并修改成為自己的數據采集應用。
注意模擬輸入和模擬輸出范例使用一張凌華 DAQ2010的數據采集卡,
如果使用者使用一種另外支持的硬件裝置, 使用者應該修改硬件轉接驅動(dòng)程序的名稱(chēng)(Hardware
Driver Adaptor Name.)和設備識別碼(Hardware Device Identifier)。
如果使用者想要所有函數的相關(guān)說(shuō)明, 可以參考MATLAB的函數說(shuō)明。 如果使用者想要其它的屬性相關(guān)說(shuō)明,
可以參考MATLAB的基本屬性說(shuō)明。
如果使用者已經(jīng)安裝好凌華 DAQ2010的數據采集卡,
安裝好硬件驅動(dòng)程序. 就可在光盤(pán)中或是到凌華科技網(wǎng)站http://www.凌華tech.com
中 尋找D2K-MTLB的DAQ2000系列的硬件轉接驅動(dòng)程序, 安裝D2K-MTLB后就算完成了準備動(dòng)作.
模擬輸入(AI)范例
這個(gè)范例將會(huì )使用數據采集工具箱對真實(shí)的數據采集卡進(jìn)行設定, 操作, 采集數據, 并以圖表顯示出來(lái).,只要稍為修改設定屬性值,
即可使用在真實(shí)的應用中.
1.宣告一個(gè)裝置對象 – 宣告一個(gè)可以代表DAQ2010的模擬輸入對象(ai)
ai = analoginput('凌華',1);
2.增加輸入信道(Add channels) –
增加一個(gè)硬件信道到ai
chan = addchannel(ai, 0);
3.設定屬性值 – 設定取樣頻率和觸發(fā)來(lái)源和條件
set(ai,'SampleRate',2000)
set(ai,'TriggerType', 'Immediate')
set(ai,'TriggerChannel', chan) %不一定要執行此指令因為會(huì )需要Trigger訊號
set(ai,'TriggerConditionValue', 2.0) %不一定要執行此指令因為會(huì )需要Trigger訊號
4.開(kāi)始采集數據 – 當數據采集結束時(shí), ai會(huì )自動(dòng)停止數據采集并傳回數據.此時(shí)亦可使用圖表將數據顯示.
. start(ai)
data = getdata(ai);
plot(data)
5.清除宣告的對象變量 – 當使用者不再需要使用ai
裝置對象變量時(shí), 使用者必需清除并釋放ai 所占用的內存.
delete(chan)
clear chan
delete(ai)
clear ai
 |
圖二:
數據采集模擬輸入(AI)范例的執行結果 |
模擬輸出(AO)范例
這個(gè)范例將會(huì )使用數據采集工具箱對真實(shí)的數據采集卡進(jìn)行設定, 操作, 輸出數據, 并以圖表顯示準備要輸出的波形.,只要稍為修改設定屬性值,
即可使用在真實(shí)的應用中.
1.宣告一個(gè)裝置對象 – 宣告一個(gè)可以代表DAQ2010的模擬輸出對象(ao)
ao = analogoutput ('凌華',1);
2.增加輸出通道(Add channels) –
增加一個(gè)或二個(gè)硬件信道到ao
chan = addchannel(ao, 0); %或 addchannel(ao,0:1);
3.設定屬性值 – 設定更新頻率
set(ao,'SampleRate',2000)
4.開(kāi)始輸出資料 – 首先先在MATLAB內產(chǎn)生所要輸出的波形,
然后可以把波形數據寫(xiě)入ao, 一次可以寫(xiě)入一個(gè)通道或是寫(xiě)入二個(gè)通道.
data = 10*sin(linspace(0,2*pi*10,8000)');
plot(data)
putdata(ao, data) %或 putdata(ao,[data data])
5.清除宣告的對象變量 – 當使用者不再需要使用ao
裝置對象變量時(shí), 使用者必需清除并釋放ao 所占用的內存.
stop(ao)
delete(chan)
clear chan
delete(ao)
clear ao
 |
圖三:
數據模擬輸出(AO)范例的輸出波形 |
數字輸出入(DIO)范例
這個(gè)范例將會(huì )使用數據采集工具箱對真實(shí)的數據采集卡進(jìn)行數字的輸出, 同時(shí)讀回那些值.
1.宣告一個(gè)裝置對象 – 宣告一個(gè)可以代表DAQ2010的數字輸出入對象(dio)
dio = digitalio ('凌華',1);
2.增加數字訊號線(xiàn)(Add lines) – 增加八個(gè)數字訊號線(xiàn)到dio,
同時(shí)將數字訊號線(xiàn)設定為”輸出”
addline(dio,0:7,'out');
3.讀和寫(xiě)數值 – 產(chǎn)生一個(gè)數值的數組, 并將它送到dio裝置對象,
注意讀和寫(xiě)數字訊號線(xiàn)通常不必再對其輸出入的方向重新設定.
pval = [1 1 1 1 0 1 0 1];
putvalue(dio,pval)
gval = getvalue(dio);
plot(gval)
5.清除宣告的對象變量 – 當使用者不再需要使用dio
裝置對象變量時(shí), 使用者必需清除并釋放dio 所占用的內存.
delete(dio)
clear dio
結論
在此簡(jiǎn)單的介紹MATLAB數據采集工具箱的內部結構和使用方法,使用此種方式在MATLAB內控制數據采集卡是最直接的方式,同時(shí)可以完全和MATLAB整合并進(jìn)行實(shí)時(shí)的數據存取和實(shí)時(shí)的分析,使用資料采集工具箱再加上一片可以在工具箱內使用的數據采集卡是所有需要作數據采集的工程師必備的工具。
|