set(ai,’SampleRate’,16920) get(myai,’SampleRate’) ans= 16920
由上面的例子可见,ai和myai返回相同的属性值是因为它们在数据采集引擎中映射的是同一个设备对象,如图1所示:
aiMATLAB备份myai数据采集引擎ai图1 数据采集引擎映射
当删除原始设备对象和备份时,设备对象的引擎将被删除。这时对象在工作空间中的任何备份将不再可用,因为它们不再映射到任何硬件。这样的设备对象称做“无效对象”
2.2 添加通道或数据线
通道和设计线是硬件设备的基本元素,数据采集系统通过它们来获取或输出数据。 创建好设备对象后,必须给对象添加通道或数据线。模拟量输入、输出对象需要添加通道,数字I/O对象需要添加数据线。添加到设备对象的通道形成工作组,相应的添加到对象的数据线形成数据组。
以下列出了添加通道或数据线有关函数:
addchannel:向一个模拟量输入、输出对象添加硬件通道。 addline:向一个数字量I/O对象添加硬件数据线。
addmuxchannel:使用AMUX-64T多路复用器时用于添加通道。 例1 使用addchannel函数向一声卡的模拟量输入对象添加两个通道。 ai=analoginput(‘winsound’) addchannel(ai,1:2) 输出如下:
6
Index: ChannelName: HwChannel: InputRange: SensorRange: UnitsRange: Units: 1 'Left' 1 [-1 1] [-1 1] [-1 1] 'Volts' 2 'Right' 2 [-1 1] [-1 1] [-1 1] 'Volts'
可以将设备对象看作通道或数据线的容器,该容器表示了一个特定对象的元素的共有功能。对象的共有功能适用于对象包含的所有通道或数据线。例如,模拟量输入对象的采样速率对所有的通道都适用。相应的包含于设备对象的通道或数据线反映了一个特定通道或数据线功能。例如,用户可以基于每个通道来配置输入范围。
图2给出了一个模拟量输入对象与它所包含的通道之间的关系。 图2同样适用于数字量I/O对象,只用将通道替换为数据线即可。
模拟输入对象通道1通道2通道3设备对象通道组通道n图2 设备对象与通道组
当向一个设备对象添加通道时,所产生的通道组由硬件通道ID号与MATLAB索引之间的映射组成。硬件通道ID号是硬件供应商定义的用于唯一标识一个通道的数值。对于NI公司的产品,其通道号均从“0”开始计算;对于安捷伦科技的硬件产品和声卡,通道号均从“1”开始计算.但用户在访问通道时,使用的是MATLAB索引而不是硬件ID号。值得注意的是MATLAB索引都是从1开始计算的。可以使用daqwinfo函数来返回产品供应商提供的硬件ID号。
假设创建了一个NI板卡的模拟输入对象ai,并且想为ai添加前3个通道,可用: ai=analoginput(‘nidaq’,1);
为返回硬件ID号,将设备对象作为daqewinfo 函数的输入参数,并调用输出参数的DifferentialIDs 字段即可。例如:
out=daqhwinfo(ai) out. DifferentialIDs
7
out=
AdaptorName: 'winsound'
Bits: 16
Coupling: {'AC Coupled'}
DeviceName: 'Realtek HD Audio Input' DifferentialIDs: [] Gains: [] ID: '0' InputRanges: [-1 1] MaxSampleRate: 96000 MinSampleRate: 5000 NativeDataType: 'int16' Polarity: {'Bipolar'}
SampleType: 'SimultaneousSample' SingleEndedIDs: [1 2] SubsystemType: 'AnalogInput' TotalChannels: 2
VendorDriverDescription: 'Windows Multimedia Driver' VendorDriverVersion: '5.10' ans =
[ 0 1 2 3 4 5 6 7]
由返回结果可知,前3个通道的ID号分别为0、1和2.
硬件通道所分配索引值取决于通道添加顺序。可以使用HwChannel属性来修改MATLAB索引值所对应的硬件通道。
ai.Channel(2).HwChannel=2; ai.Channel(3).HwChannel=1;
对于数字量I/O对象同样适用,只用将通道改为数据线即可。
8
2.3 配置并返回属性
定义和检验数据采集系统的工作都是通过设备对象的属性来实现的。定义数据采集特性需要使用set函数和圆点符号来给相应的属性赋值,而检验数据采集的配置和状态则是通过get函数和圆点符号来显示相应的属性值二实现的。 ⑴数据类型
数据采集工具箱的属性被划分为如下两类:
① 公共属性:公共属性适用于设备对象的每个通道或数据线
② 通道/数据线属性:通道/数据线属性用于配置单个的通道或数据线。
模拟量输入对象、通道以及属性之间的关系如图3所示。
模拟输入对象通道1通道2通道3通道属性公共属性通道n图3 属性
图3同样适用于数字量I/O对象,只用将图中的通道改为数据线即可。 公共属性和通道/数据线属性又被分为如下两种属性:
? 基本属性:基本属性适用于给定设备类型(如模拟量输入)的所有支持的硬件子系统。
例如,SampleRate属性就是模拟量输入对象的基本属性,它对任何供应商提供的硬件均适用。
? 设备特有属性:设备特有属性仅适用于特定的硬件设备。例如,BitsPerSample属性就
仅适用于声卡。注意基本属性也具有设备特有属性,例如InputType属性对于不同供应商提供的硬件将有不同的设定值。
? 公共属性、通道/数据线属性、基本属性以及设备特有属性之间的关系如图4 所示。
9
设备对象基本属性公共属性设备特有属性通道/数据线基本属性通道/数据线属性设备特有属性图4 属性之间的关系
⑵返回属性名和属性值
一旦设备对象被创建,就可以使用set函数将所有的可配置属性返回到一个变量中或返回到MATLAB命令行。此外,如果某个属性具有有限字符串值的集合,set函数同样可以返回这些值。可以使用get函数来将一个或多个属性及其当前属性值返回到一个变量或命令行。
下面通过一个示例来介绍返回公共属性和通道/数据线属性语法。 例2 为一声卡创建模拟量输入对象ai,并且对象ai包含两个通道。 ai=analoginput(‘winsound’) addchannel(ai,q:2) ① 公共属性:
为返回设备对象所有课配置的公共属性名及其可能的属性值,应将对象作为set函数的输入参数。
例3 下面的代码返回ai所有可配置的公共属性,并且首先列出的是基本属性,其次是设备特有属性。 >>set(ai)
BufferingConfig
BufferingMode: [ {Auto} | Manual ] Channel ChannelSkew
10