前言
MATLAB 被广泛的使用在工程学和科学的领域, 从数据采集和分析到应用程序开发。MATLAB 环境集合了数学计算, 图形化输出, 和强有力的计算机程序语言。内建的接口让使用者可以从仪器、档案、和外部数据库和程序中读取数据。另外, MATLAB 应用程序还可以整合使用其它著名的计算机语言所开发出来的函式库如C 、C++ 、FORTRAN, 和Java。
本文主要将会介绍MATLAB数据采集工具箱的内部结构, 和外部的使用接口, 熟悉数据采集工具箱的使用方法将会了解如何使用同一组指令去操作各种不同硬件的数据采集卡以进行模拟输入(AI), 模拟输出(AO), 数字输出入(DIO)的各种操作. 对于MATLAB的使用者而言将是一项有力的工具。
何谓MATLAB数据采集工具箱(Data Acquisition Toolbox)
数据采集工具箱是一组M-File 函式集和MEX-File 等动态链接链接库所组成的, 专门使用在数据采集方面的一组函式库. 它提供了以下主要的功能
1. 以相同的指令操作 模拟输入(AI), 模拟输出(AO), 数字输出入(DIO)和同步模拟输出入转换各式功能, 不会因不同硬件而产生不同的指令.
2. 一个及时数据采集环境, 被测量的数据不需经由转换可直接进入MATLAB 直接进行分析.
3. 支持主要的数据采集卡的厂商, 如:凌华, Agilent, ComputerBoards 和 National Instruments.
4. 支持事件驱动(Event-driven)的数据采集.
MATLAB数据采集工具箱的内部结构
数据采集工具箱包括三个模块分别为: M-File 函式集, 数据采集引擎(Data Acquisition Engine), 和硬件转接驱动程序(Hardware Driver Adaptors)。如下图所示, 这些模块允许使用者在MATLAB 内和使用者的数据采集硬件之间交换数据。
图一: 数据采集工具箱的三大模块和数据流动的关系
属性和事件是内部沟通的方式, 数据是主要传送的标的, 分述如下:
属性(Property values)
使用者能经由属性的改变而改变使用者的数据采集行为, 经由数据采集工具箱属性的改变将会影响到硬件驱动程序的行为, 使硬件的工作符合使用者的实际需要。
资料(Data)
使用者能从感应器获取数据并存放它在MATLAB内, 或从MATLAB 输出数据到作动器。 此外使用者能在数字(1和0)和数字的输出入(DIO)之间进行数据转换。
事件(Events)
事件发生在当某个特定的情况符合之后, 通常在使用者设定属性后使用者可以指定一个或更多的回呼函数(Callback function)去处理不同的事件。使用者能使用事件的一些方式包括预先决定相当数量的数据被采集之后立刻进行分析, 或当硬件驱动程序有错误发生时显示一个错误讯息到MATLAB的工作区。
开始进行数据采集
或许最有效学习数据采集工具箱的方式为, 连接使用者的硬设备然后开始使用数据采集工具箱实际的进行数据采集的工作. 实际进行如何输入或输出数据。这个部分提供使用者一个简单的例子说明怎么从实际的硬件上采集数据(AI), 又如何从MATLAB中产生数据并输出到实际的硬件(AO), 另一种常见的数据采集是使用数字I/O(DIO)。
以上均为典型的数据采集范例并且会对个范例作说明。使用者应该记住这些步骤并修改成为自己的数据采集应用。
注意模拟输入和模拟输出范例使用一张凌华 DAQ2010的数据采集卡, 如果使用者使用一种另外支持的硬件装置, 使用者应该修改硬件转接驱动程序的名称(Hardware Driver Adaptor Name.)和设备识别码(Hardware Device Identifier)。
如果使用者想要所有函数的相关说明, 可以参考MATLAB的函数说明。
如果使用者想要其它的属性相关说明, 可以参考MATLAB的基本属性说明。
如果使用者已经安装好凌华 DAQ2010的数据采集卡, 安装好硬件驱动程序. 就可在光盘中或是到凌华科技网站.凌华 中 寻找D2K-MTLB的DAQ2000系列的硬件转接驱动程序, 安装D2K-MTLB后就算完成了准备动作.
模拟输入(AI)范例
这个范例将会使用数据采集工具箱对真实的数据采集卡进行设定, 操作, 采集数据, 并以图表显示出来.,只要稍为修改设定属性值, 即可使用在真实的应用中.
1.宣告一个装置对象 – 宣告一个可以代表DAQ2010的模拟输入对象(ai)
ai = analoginput('凌华',1);
2.增加输入信道(Add channels) – 增加一个硬件信道到ai
chan = addchannel(ai, 0);
3.设定属性值 – 设定取样频率和触发来源和条件
set(ai,'SampleRate',2000)
set(ai,'TriggerType', 'Immediate')
set(ai,'TriggerChannel', chan) %不一定要执行此指令因为会需要Trigger讯号
set(ai,'TriggerConditionValue', 2.0) %不一定要执行此指令因为会需要Trigger讯号
4.开始采集数据 – 当数据采集结束时, ai会自动停止数据采集并传回数据.此时亦可使用图表将数据显示.
. start(ai)
data = getdata(ai);
plot(data)
[DividePage:NextPage]
5.清除宣告的对象变量 – 当使用者不再需要使用ai 装置对象变量时, 使用者必需清除并释放ai 所占用的内存.
delete(chan)
clear chan
delete(ai)
clear ai
图二: 数据采集模拟输入(AI)范例的执行结果
模拟输出(AO)范例
这个范例将会使用数据采集工具箱对真实的数据采集卡进行设定, 操作, 输出数据, 并以图表显示准备要输出的波形.,只要稍为修改设定属性值, 即可使用在真实的应用中.
1.宣告一个装置对象 – 宣告一个可以代表DAQ2010的模拟输出对象(ao)
ao = analogoutput ('凌华',1);
2.增加输出通道(Add channels) – 增加一个或二个硬件信道到ao
chan = addchannel(ao, 0); %或 addchannel(ao,0:1);
3.设定属性值 – 设定更新频率
set(ao,'SampleRate',2000)
4.开始输出资料 – 首先先在MATLAB内产生所要输出的波形, 然后可以把波形数据写入ao, 一次可以写入一个通道或是写入二个通道.
data = 10*sin(linspace(0,2*pi*10,8000)');
plot(data)
putdata(ao, data) %或 putdata(ao,[data data])
5.清除宣告的对象变量 – 当使用者不再需要使用ao 装置对象变量时, 使用者必需清除并释放ao 所占用的内存.
stop(ao)
delete(chan)
clear chan
delete(ao)
clear ao
图三: 数据模拟输出(AO)范例的输出波形
数字输出入(DIO)范例
这个范例将会使用数据采集工具箱对真实的数据采集卡进行数字的输出, 同时读回那些值.
1.宣告一个装置对象 – 宣告一个可以代表DAQ2010的数字输出入对象(dio)
dio = digitalio ('凌华',1);
2.增加数字讯号线(Add lines) – 增加八个数字讯号线到dio, 同时将数字讯号线设定为”输出”
addline(dio,0:7,'out');
3.读和写数值 – 产生一个数值的数组, 并将它送到dio装置对象, 注意读和写数字讯号线通常不必再对其输出入的方向重新设定.
pval = [1 1 1 1 0 1 0 1];
putvalue(dio,pval)
gval = getvalue(dio);
plot(gval)
5.清除宣告的对象变量 – 当使用者不再需要使用dio 装置对象变量时, 使用者必需清除并释放dio 所占用的内存.
delete(dio)
clear dio
结论
在此简单的介绍MATLAB数据采集工具箱的内部结构和使用方法,使用此种方式在MATLAB内控制数据采集卡是最直接的方式,同时可以完全和MATLAB整合并进行实时的数据存取和实时的分析,使用资料采集工具箱再加上一片可以在工具箱内使用的数据采集卡是所有需要作数据采集的工程师必备的工具。
(转载)