版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据采集及模拟滤波器介绍一、数据采集简介数据采集是通过数据采集系统实现的。在建立任何一个数据系统之前,应该明确需要测量的物理量、所测量物理量的特性、传感器的选取以及数据采集硬件设备的选取等。MATLAB数据采集工具箱提供了数据采集系统硬件交互的简便方法。1.1 数据采集系统数据采集系统可以看作是一种软件和硬件的集合,实现用户与物理世界的连接。一个典型的数据采集系统由下列几部分组成:数据采集硬件主要功能将模拟信号转变为数字信号,并将数字信号转变为模拟信号。传感器与变送器将输入某种形式能量转换为另一种形式能量输出的装置。信号调理器传感器的输出信号通常与数据采集设备部兼容,为克服不兼容性,传感器输出
2、信号必须进行调理。如:将输入信号进行放大或去除噪声频率成分。计算机在数据采集系统中计算机提供处理器、系统时钟、数据传输总线以及存储数据所需的内存和磁盘空间。软件数据采集硬件数据采集系统按其所属子系统进行分类,包括:l 模拟量输入l 模拟量输出l 数字量输入/输出l 定时/计数器1.2 数据采集工具箱简介数据采集工具箱集成了用于数据采集的M文件格式的函数及MEX文件格式的动态链接库。主要特征:提供了将实时测量数据从数据采集硬件采集到MATLAB中的框架支持模拟输入量输入(AI)、模拟量输出(AO)以及数字量I/O子系统,包括模拟量I/O实时转换。支持下列通用硬件设备l 基于研华(Advantec
3、h)设备管理器的研华工控板l 安捷伦科技EI432A/33A/34A VXI模件l 采用DriverLINX驱动的Keithley模块l 测量与处理模件l 使用NI-DAQ软件的美国国家仪器公司(NI)的模件l 计算机并行口LPT1-LPT3l 声卡采用事件驱动模式进行数据采集。数据采集工具箱由3部分组成:M文件格式的函数、数据采集引擎以及硬件驱动。这些组成部分使得MATLAB与数据采集硬件之间的信息传递成为可能。传递的信息主要有:属性值通过配置属性值可以控制数据采集过程,即用户可以把属性看成是可以按用户需求配置的工具箱或硬件驱动的特性。数据用户可以从与模拟量输入子系统相连的传感器中获取数据并
4、将之存储在MATLAB中。也可以将数据从MATLAB输出到与模拟量输出子系统相连的变换器中。此外,用户还可以在MATLAB与数字I/O子系统之间传递数字量信息。事件事件在满足某个条件时就会发生,并产生用户所设定的一个或多个响应。事件只有在用户对相关属性进行配置之后才能触发。用户可以利用事件来分析达到预定采集量的数据,或当某个错误发出时在MATLAB中显示出错信息。1、 M属性为完成任务用户必须在MATLAB环境下调用M函数。一般M函数可以让用户完成如下工作:创建设备对象,设备对象提供了硬件性能的控制方法,通过设备对象用户可以控制采集系统的行为。获取或输出数据配置属性参数评估采集状态和硬件资源2
5、、 数据采集引擎数据采集引擎是MEX动态链接库(DLL)文件,其作用如下:存储设备对象以及相应的用于控制数据采集过程的属性值控制事件的同步控制已获取或待发送数据的存储在MATLAB工作空间中,存储数据不会自动获取,用户必须使用获取数据函数从引擎中获取数据。采集数据操作主要由下列两步骤完成:从硬件获取数据并存储于引擎中从引擎中提取数据并存储于MATLAB中,或输出到磁盘文件中。3、 硬件驱动适配器硬件驱动适配器是数据采集引擎与硬件驱动之间的接口,其主要作用是在硬件驱动适配器与硬件设备之间通过驱动来传递信息。4、 访问硬件如何使用数据采集工具箱?最有效的学习方法就是组建好硬件系统,进行数据的输入或
6、输出。二 数据采集过程数据采集过程包括了数据采集或输出的所有步骤。创建设备的一个对象:用户可以使用模拟输入、模拟输出或数字输入/输出创建函数来创建一个设备对象。添加通道或数据线创建好设备对象后,必须向对象中添加通道或数据线。模拟量输入和模拟量输出对象中应添加通道,而数字量输入、输出对象中应添加数据线。通道和数据线是硬件设备的基本元素,用户通过它们可以获取或输出数据。配置属性:设定设备对象的行为。用户首先应设置函数属性为相应的值,也可以通过选择相应的值为设定属性的值。用户可以在任何时候对大多数属性进行设置,然而有些属性只有在设备对象没有运行的时候才能进行设置。也可以跳过本步骤而使用默认的属性值。
7、获取或输出数据:为获取或输出数据时,设备对象将按照用户先前所配置的属性值或默认值所设定的行为运行。当获取数据后,用户应使用获取数据函数从引擎中提取数据。在输出数据之前,应使用放置数据函数将数据在引擎中进行排队。清除:当不再需要设备对象时,应使用删除函数将设备对象从内存中清除,并使用清除命令将对象从MATLAB工作空间中清除。2.1 创建一个设备对象设备对象是用于访问硬件设备的工具箱组件,提供了硬件功能的控制通路,通过它可以控制数据采集应用系统的行为。每个设备对象都对应一个特定的硬件子系统。设备对象需要通过调用对象创建函数来创建,对象创建函数式采用MATLAB提供的面向对象编程功能来创建的。数据
8、采集工具箱中几个对象创建函数的名称及功能分别介绍如下:l analoginput:创建一个模拟量输入对象。l analogoutput:创建一个模拟量输出对象。l digitalio:创建一个数字量I/O对象。在创建对象之前,应对相关的硬件驱动适配器进行注册。一般适配器注册是自动进行的:如果由于某种原因适配器没有自动注册,可以使用daqregister函数手段注册。可以通过daqhwinfo函数的ObjectConstructorName属性来查看任何为一特定的硬件子系统创建设备对象。例如,为查看如何为NI硬件板卡创建一个模拟量输入对象,应将板卡的适配器名称作为daqhwinfo函数的输入参数
9、。创建一个设备对象数组在MATLAB中,可以将单个的变量整合在一起形成数组,对于设备对象此法也是适用的。假设分别为一声卡创建了模拟量输入对象ai,模拟量输出对象ao:ai=analoginput(winsound)ao= analogoutput(winsound)可以根据MATLAB语法创建由ai和ao元素组成行向量xx=ai ao输出如下:Index: Subsystem: Name:1 Analog Input winsound0-AI2 Analog Output winsound0-AO也可以创建列向量y:y=ai:ao输出同x=ai ao一样的结果。在应用程序中,可以将设备对象作为
10、函数的参数。仅通过调用一个set函数来同时配置ai和ao对象的相同属性的属性值。例如:Set(x,SampleRate,44100)设备对象的存在位置创建好的设备对象,在MATLAB工作空间和数据采集引擎中同时存在。假设创建了一个声卡的模拟输入设备对象ai,并定义了ai的一个备份myai:ai=analoginput(winsound);myai=ai;设备对象备份和原始对象ai是一样的。也就是说,如果对ai的某个属性设定相应的值,那么myai对象的相应属性也被赋予相应的属性值。例如: set(ai,SampleRate,16920)get(myai,SampleRate)ans= 16920
11、 由上面的例子可见,ai和myai返回相同的属性值是因为它们在数据采集引擎中映射的是同一个设备对象,如图1所示: 当删除原始设备对象和备份时,设备对象的引擎将被删除。这时对象在工作空间中的任何备份将不再可用,因为它们不再映射到任何硬件。这样的设备对象称做“无效对象”2.2 添加通道或数据线通道和设计线是硬件设备的基本元素,数据采集系统通过它们来获取或输出数据。创建好设备对象后,必须给对象添加通道或数据线。模拟量输入、输出对象需要添加通道,数字I/O对象需要添加数据线。添加到设备对象的通道形成工作组,相应的添加到对象的数据线形成数据组。以下列出了添加通道或数据线有关函数:addchannel:向
12、一个模拟量输入、输出对象添加硬件通道。addline:向一个数字量I/O对象添加硬件数据线。addmuxchannel:使用AMUX-64T多路复用器时用于添加通道。例1 使用addchannel函数向一声卡的模拟量输入对象添加两个通道。ai=analoginput(winsound)addchannel(ai,1:2)输出如下:Index: ChannelName: HwChannel: InputRange: SensorRange: UnitsRange: Units: 1 'Left' 1 -1 1 -1 1 -1 1 'Volts' 2 'Ri
13、ght' 2 -1 1 -1 1 -1 1 'Volts'可以将设备对象看作通道或数据线的容器,该容器表示了一个特定对象的元素的共有功能。对象的共有功能适用于对象包含的所有通道或数据线。例如,模拟量输入对象的采样速率对所有的通道都适用。相应的包含于设备对象的通道或数据线反映了一个特定通道或数据线功能。例如,用户可以基于每个通道来配置输入范围。图2给出了一个模拟量输入对象与它所包含的通道之间的关系。图2同样适用于数字量I/O对象,只用将通道替换为数据线即可。当向一个设备对象添加通道时,所产生的通道组由硬件通道ID号与MATLAB索引之间的映射组成。硬件通道ID号是硬件供应
14、商定义的用于唯一标识一个通道的数值。对于NI公司的产品,其通道号均从“0”开始计算;对于安捷伦科技的硬件产品和声卡,通道号均从“1”开始计算.但用户在访问通道时,使用的是MATLAB索引而不是硬件ID号。值得注意的是MATLAB索引都是从1开始计算的。可以使用daqwinfo函数来返回产品供应商提供的硬件ID号。假设创建了一个NI板卡的模拟输入对象ai,并且想为ai添加前3个通道,可用: ai=analoginput(nidaq,1);为返回硬件ID号,将设备对象作为daqewinfo 函数的输入参数,并调用输出参数的DifferentialIDs 字段即可。例如:out=daqhwinfo(
15、ai)out. DifferentialIDsout=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
16、9; 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属性来修改M
17、ATLAB索引值所对应的硬件通道。ai.Channel(2).HwChannel=2;ai.Channel(3).HwChannel=1;对于数字量I/O对象同样适用,只用将通道改为数据线即可。2.3 配置并返回属性定义和检验数据采集系统的工作都是通过设备对象的属性来实现的。定义数据采集特性需要使用set函数和圆点符号来给相应的属性赋值,而检验数据采集的配置和状态则是通过get函数和圆点符号来显示相应的属性值二实现的。数据类型数据采集工具箱的属性被划分为如下两类: 公共属性:公共属性适用于设备对象的每个通道或数据线 通道/数据线属性:通道/数据线属性用于配置单个的通道或数据线。模拟量输入对象、
18、通道以及属性之间的关系如图3所示。图3同样适用于数字量I/O对象,只用将图中的通道改为数据线即可。公共属性和通道/数据线属性又被分为如下两种属性:l 基本属性:基本属性适用于给定设备类型(如模拟量输入)的所有支持的硬件子系统。例如,SampleRate属性就是模拟量输入对象的基本属性,它对任何供应商提供的硬件均适用。l 设备特有属性:设备特有属性仅适用于特定的硬件设备。例如,BitsPerSample属性就仅适用于声卡。注意基本属性也具有设备特有属性,例如InputType属性对于不同供应商提供的硬件将有不同的设定值。l 公共属性、通道/数据线属性、基本属性以及设备特有属性之间的关系如图4 所
19、示。返回属性名和属性值一旦设备对象被创建,就可以使用set函数将所有的可配置属性返回到一个变量中或返回到MATLAB命令行。此外,如果某个属性具有有限字符串值的集合,set函数同样可以返回这些值。可以使用get函数来将一个或多个属性及其当前属性值返回到一个变量或命令行。下面通过一个示例来介绍返回公共属性和通道/数据线属性语法。例2 为一声卡创建模拟量输入对象ai,并且对象ai包含两个通道。ai=analoginput(winsound)addchannel(ai,q:2) 公共属性:为返回设备对象所有课配置的公共属性名及其可能的属性值,应将对象作为set函数的输入参数。例3 下面的代码返回ai
20、所有可配置的公共属性,并且首先列出的是基本属性,其次是设备特有属性。>>set(ai) BufferingConfig BufferingMode: Auto | Manual Channel ChannelSkew ChannelSkewMode: None ClockSource: Internal DataMissedFcn: string -or- function handle -or- cell array InputOverRangeFcn: string -or- function handle -or- cell array InputType: AC-Coupl
21、ed LogFileName LoggingMode: Disk | Memory | Disk&Memory LogToDiskMode: Overwrite | Index ManualTriggerHwOn: Start | Trigger Name RuntimeErrorFcn: string -or- function handle -or- cell array SampleRate SamplesAcquiredFcn: string -or- function handle -or- cell array SamplesAcquiredFcnCount Samples
22、PerTrigger StartFcn: string -or- function handle -or- cell array StopFcn: string -or- function handle -or- cell array Tag Timeout TimerFcn: string -or- function handle -or- cell array TimerPeriod TriggerChannel TriggerCondition: None TriggerConditionValue TriggerDelay TriggerDelayUnits: Seconds | Sa
23、mples TriggerFcn: string -or- function handle -or- cell array TriggerRepeat TriggerType: Manual | Immediate | Software UserData WINSOUND specific properties: BitsPerSample StandardSampleRates: Off | On 要返回设备对象的所有公共属性及其当前值,应将设备对象作为get函数的输入参数。例4 下面的代码列出了ai的所有公共属性,首先列出的是基本属性,其次是设备特有属性。>>get(ai)Bu
24、fferingConfig = 512 30 BufferingMode = Auto Channel = 2x1 aichannel ChannelSkew = 0 ChannelSkewMode = None ClockSource = Internal DataMissedFcn = daqcallback EventLog = 1x0 struct InitialTriggerTime = 0 0 0 0 0 0 InputOverRangeFcn = InputType = AC-Coupled LogFileName = logfile.daq Logging = Off Logg
25、ingMode = Memory LogToDiskMode = Overwrite ManualTriggerHwOn = Start Name = winsound0-AI Running = Off RuntimeErrorFcn = daqcallback SampleRate = 8000 SamplesAcquired = 0 SamplesAcquiredFcn = SamplesAcquiredFcnCount = 1024 SamplesAvailable = 0 SamplesPerTrigger = 8000 StartFcn = StopFcn = Tag = Time
26、out = 1 TimerFcn = TimerPeriod = 0.1 TriggerChannel = 1x0 aichannel TriggerCondition = None TriggerConditionValue = 0 TriggerDelay = 0 TriggerDelayUnits = Seconds TriggerFcn = TriggerRepeat = 0 TriggersExecuted = 0 TriggerType = Immediate Type = Analog Input UserData = WINSOUND specific properties:
27、BitsPerSample = 16 StandardSampleRates = Off为显示某个属性当前值,应将属性名作为get函数的输入参数。例5 显示SamplesRate 属性的当前值>>get(ai,'SamplesRate')ans = 8000例6 显示StandardSampleRates和Running属性的当前值。>> get(ai,'StandardSampleRates','Running')ans = 'Off' 'Off'也可以运行圆点运算符来显示单个属性的值。例
28、如:>> ai.TriggerTypeans =Immediate 通道/数据线属性:要返回设备对象的单个通道(或数据线)的所有课配置属性名及其可能值,应使用Channel(Line)属性。例7 下面的代码将显示模拟量输入对象ai的第一个通道的所有可配置的通道属性。>> set(ai.Channel(1) ChannelName HwChannel InputRange SensorRange Units UnitsRange例8下面的代码将显示ai的第一个通道的所有通道属性及其当前值。>> get(ai.Channel(1) ChannelName = L
29、eft HwChannel = 1 Index = 1 InputRange = -1 1 NativeOffset = 1.5259e-005 NativeScaling = 3.0518e-005 Parent = 1x1 analoginput SensorRange = -1 1 Type = Channel Units = Volts UnitsRange = -1 1与前文中论述的一样,可以利用get函数或圆点运算符来返回一定数量的通道属性的值。配置属性值可以使用set函数或圆点运算符来配置属性值。实际上,用户可以在设备对象存在的任何时候对对象的许多属性进行配置。但是,有些属性在对
30、象运行的时候不能配置。可以使用propinfo函数来查看某个可配置属性在何时可以进行配置的信息,也可以参考“基本属性参考”来获取相关信息。下面将以前面“返回属性名和属性值”一节中创建的模拟量输入对象ai为基础,介绍配置公共属性和通道/数据线属性的语法。 公共属性:可以用set函数或者圆点运算符对单个属性值进行配置。例如:set(ai,TriggerType,Manual);等价于ai.TriggerType=Manual;也可以将多个“属性名/属性值”对作为set函数的输入参数来同时配置多个属性的值。例如:set(ai,SampleRate,41236,Name,Test1-winsound)
31、 通道/数据线属性对设备对象某个或多个通道(或数据线)的通道/数据线属性进行属性值配置,应使用Channel/Line属性来完成。例如,用set函数或圆点运算符为ai对象的第一个通道的属性SensorRange配置属性值。set(ai.Channel(1),SensorRange,-2 2)或者ai.Channel(1).SensorRange=-2 2要同时配置多个通道/数据线属性的属性值,可以将多个“属性/属性值”对作为set函数的输入参数。例如:set(ai.Channel(1), SensorRange,-2 2,ChannelName,Chan1);也可以同时对多个通道的多个属性进行
32、属性值配置。例如:ch=ai.Channel(1:2);set(ch, SensorRange, ChannelName,-2 2, Chan1; 0 4, Chan2); 指定属性名在数据采集工具箱中,设备对象的属性名不分大小写,可以根据自己的喜好选择。此外,允许使用能唯一识别属性名的字母来指定属性名,也就是说对于大多数的属性名,可使用缩写名来指定属性名。例如,在配置SampleRate属性时,用户可以使用下列任何一种方式来指定属性名: set(ai,SampleRate,44100);set(ai,samplerate,44100);set(ai,sampler,44100);但是,当需要
33、在M文件中包含属性名时,应使用属性名的全称,从而避免今后数据采集工具箱扩充时,新增属性名而造成属性名的不唯一性。默认属性值当不明确为一个属性定义一个怎样的值时,可以使用属性的默认值。所有的可配置属性都有默认属性。但是,对于不同的硬件,给定属性的默认值可能不一致。此外,某些默认属性值有引擎计算而来并且与其他的属性设置有关。如果硬件驱动适配器为一属性指定了一个默认值,则该值将比工具箱本身提供的默认值优先级高。如果某个属性具有有限长度的字符串属性值,那么该属性的默认值将用“”括起来。例9 LoggingMode属性默认值是Memory:>>set(ai, LoggingMode) Dis
34、k | Memory | Disk&Memory 可以使用propinfo函数来查看任何属性的默认值。例如:>>out=propinfo(ai,'LoggingMode')out = Type: 'string' Constraint: 'enum' ConstraintValue: 'Disk' 'Memory' 'Disk&Memory' DefaultValue: 'Memory' ReadOnly: 'whileRunning' D
35、eviceSpecific: 0 2.4 获取或输出数据配置好设备对象后,就可以获取或输出数据了。获取或输出数据包括如下步骤:启动设备对象。记录或发送数据。停止设备对象。由于数据是在MATLAB和硬件之间传输的,所以可以把设备对象看出工作于某种特定的状态。在数据采集工具箱中定义了两种工作状态:l 运行状态:对于模拟量输入对象,运行状态是指从模拟量输入子系统中获取数据的状态,但是获取的数据并不一定要存入内存和磁盘文件中。对于模拟量输出对象,运行状态是指数据引擎中的数据队列已准备好输出到模拟量输出子系统中。对于模拟量输入、输出对象,运行状态均由Running属性来标识,Running属性的取值为O
36、n或Off。l 记录或发送状态:对于模拟量输入对象,记录状态是指从模拟量输入子系统中获取的数据存储到引擎或磁盘文件中,记录状态由Logging属性来标识,Logging属性取值为On或Off;对于模拟量输出对象,发送状态是指数据引擎中的数据队列被输出到模拟量输出子系统中,发送状态由Sending属性标识,Sending属性的取值为On或Off。Running、Logging和Sending属性都是只读属性,由数据引擎自动赋值On或Off。当Running属性为Off时,Logging和Sending属性必定为Off,当Running属性为On时,Logging和Sending属性只在触发时设置
37、为On。注意:数字量I/O对象也具有运行状态。但是,由于数字量I/O对象不用在数据引擎中存储数据,所以只反映记录和发送状态。启动设备对象可以使用start函数来启动一个设备对象。例10 启动模拟量输入对象ai。ai=analoginput(winsound);addchannel(ai,1:2);start(ai)当执行start函数后,Runningsx的属性值被自动设置为On,并且设备对象和硬件设备在此时会根据所配置或默认的属性值运行。在使用模拟量输入对象进行数据采集的过程中,可以使用peekdata函数来预览数据。peckdata函数返回的仅是最新数据的映射,而不会讲数据从数据引擎中移除
38、。例11 要预览模拟量输入对象ai中每个通道所获取的最近499个采样样本,代码如下。data=peekdata(ai,499);因为预览数据通常是一个优先级的任务,所以peekdata函数不能确保返回所有期望的数据。在设备对象运行的任何时刻均可以预览数据。记录或发送数据在设备对象运行的过程中,可以:l 将从模拟输入子系统中获取的数据记录到数据引擎(内存)或磁盘文件中。l 将数据引擎中的数据队列输出到模拟量输出子系统中。 但是,在记录或发送数据之前,必须有触发发生。配置模拟量输入、输出触发要用到TriggerType属性。在本章中所有示例其TriggerType属性值采用的都是默认值Immedi
39、ate,表示在start函数开始运行时触发立即开始。提取记录数据当模拟量输入对象的触发发生时,Logging属性自动被设置为On,同时由硬件获取的数据被记录到数据引擎或磁盘文件中。可以使用getdata函数来提取记录到引擎中的数据。例如,从ai的每个通道提取499个样本的代码如下:data=getdata(ai,499)getdata函数将锁定MATLAB命令行,直至所有需要的数据返回到MATLAB工作空间为止。在触发执行后的任何时刻均可以提前数据。发送数据队列对于模拟量输出对象,在数据输出到硬件之前,必须使用putdata函数在数据引擎中对数据进行排列。例12 在数据中为模拟量输出对象ao的
40、每个通道排列8000个样本:ao=analogoutput(winsound);addchannel(ao,1:2);data=cos(linspace(0,2*pi*500,8000);putdata(ao,data data)start(ao) %在数据队列可以输出之前,应运行模拟量输出对象 当触发发生时,Sending属性自动被设置为On,同时数据队列被发送到硬件中。停止设备对象在下列条件中的任何一个条件下均可停止模拟量输入、输出对象:l 执行stop函数l 所需数量的样本已被获取或发送。l 发生了硬件run-time错误。l 超时错误 当设备对象停止时,属性Running、Loggin
41、g和Sending自动被设置为Off。这时,可以对设备对象进行重新配置,或者使用当前配置来再次运行设备对象。清除当不再需要设备对象的时候,应该将其从数据引擎(内存)以及MATLAB工作空间中清除。这时结束数据采集过程的最后步骤。可以使用delete函数将设备对象从内存中清除。例如,要清除前文中创建的模拟量输入对象ai:delete(ai)被从数据引擎(内存)删除的设备对象将不再可用(即不再与硬件连接),所以应该使用clear命令将对象从MATLAB工作空间中清除。clear ai如果使用clear命令来删除一个与硬件保持连接的设备对象,该对象将从工作空间中移除但还保持与硬件的连接。可以使用de
42、qfind函数将已删除的sbdx恢复到MATLAB工作空间。例13 本示例展示了如何配置声卡的音频信号采集。采集频率设置为44.1KHz,采集的数据满足大于或等于0.2V并且具有上升沿时,该数据就被存储在数据引擎中,最后从数据引擎中提取一部分数据。代码如下:%为声卡创建一个模拟量输入对象AIVoiceAIVoice= analoginput(winsound);%VIVoice=analoginput(nidaq,1);% VIVoice=analoginput(mcc,1);%为AIVoice添加一个硬件通道ch=addchannel(AIVoice,1);% ch=addchannel(A
43、IVoice,0);%For NI and MCC%定义一个2秒的采样,采用软件触发。触发源为ch并且当有幅值至少为0.2V的上升%沿跳变时执行触发duration=2;%two second acquisitionset(AIVoice,SampleRate,44100);ActualRate=get(AIVoice,SampleRate);set(AIVoice,SamplePerTrigger,ActualRate*duration)set(AIVoice,TriggerChannel,ch)set(AIVoice,TriggerType,Software)set(AIVoice,Tri
44、ggerCondition,Rising)set(AIVoice,TriggerConditionValue,0.2)%执行AIVoice,获取指定数量的采样样本,并从数据引擎中提取1000个样本。%用图形显示引擎中剩余的样本start(AIVoice)data,time=getdata(AIVoice,1000);remsamp=num2str(AIVoice.SamplesAvailable);disp(Number of samples remaining in engine:remsamp)plot all extracted data.plot(time,data)drawnowxl
45、abel(Time(sec.);ylabel(Signal Level(Volts);grid on注意:当使用软件触发时,必须在指定属性TriggerCondition的值之前,指定属性TriggerType。例14 由MATLAB产生的余弦波数据通过声卡的D/A转换器输出到扬声器。代码如下:%为声卡创建一个模拟量输出对象aoao=analogoutput(winsound);%为ao添加一个通道ch=addchannel(ao,1);%定义输出时间4s,为基本安装属性分配值,排列产生的数据%并调用一次putdata函数将数据排列到对象aoduration=4;set(ao,SampleRa
46、te,8000)set(ao, TriggerType,Manual)ActualRate=get(ao,SampleRate);Len= ActualRate* durationData=cos(linspace(0,2*pi*500,len);putdata(ao,data);%执行ao,触发触发器,等待设备对象停止运行start(ao);trigger(ao);waittilstop(ao,5);%不再需要ao时,应将它从内存和MATLAB工作空间中清除delete(ao);clear ao;三、保存和加载过程3.1 保存和加载对象可用下列两种格式来保存设备对象信息l 使用obj2mfi
47、le函数保存一个M文件l 使用保存命令保存一个MAT文件 保存设备文件到M文件可以使用obj2mfile函数将设备对象编程到M文件。Obj2mfile函数提供了如下选择:l 保存所有的属性值,或仅保存那些与默认值不同的属性值。只读属性值不会被保存,因此在加载设备对象时,只读属性使用的是默认值。可以使用propinfo函数来确定某个属性是否为只读。l 使用set语法。圆点运算符或命名参考来保存属性值例15 假定声卡创建了模拟输入对象ai,添加两个通道并配置几个相关的属性值。ai=analoginput(winsound);addchannel(ai,1:2,Temp1;Temp2);time=n
48、owset(ai,SampleRate,11025,TriggerRepeat,4);set(ai,TrggerFcn,mycallback,time);start(ai)要将ai及其属性值保存到文件myqi.m中,代码如下。obj2mfile(ai,myai.m);要从M文件中加载设备对象到MARLAB空间中,可以直接在命令行中输入M文件名。要从M文件myai.m中加载ai,代码如下:ai=myai;注意:加载后只读属性如SampleAcquired 和SampleAvailable将被设置为默认值。>>get(ai, SampleAcquired,SampleAvailable
49、)Ans=0 0保存设备对象到MAT文件设备对象可以像普通的变量一样使用保存命令来保存到MAT文件中。将模拟量输入对象ai和普通变量time保存到myail.mat文件的格式如下:save myail ai time只读属性不会被保存,因此在导入设备对象时,只读属性使用默认属性。可以使用propinfo函数来查看某个属性是否为只读。可以使用load命令将设备对象从MAT文件加载到MATLAB工作空间。从MAT文件myail.mat加载ai和time变量的代码如下:load myail3.2 记录信息在模拟量输入对象运行时,可以将下列信息记录到磁盘中。l 已获取的数据l 事件信息l 设备对象和通
50、道信息l 硬件信息在数据采集过程中,可以持续进行信息记录,此方式对数据采集应用调试非常方便。与记录信息相关的属性如下:l LogFileName:指定记录信息的磁盘文件名l Logging:表示是否数据正在被记录l LoggingMode:指定已获取数据的目标文件l LogToDiskMode:指定数据、设备对象信息以及硬件信息是否被存储到一个磁盘文件还是多个磁盘文件可以将属性LoggingMode设置为Disk或Disk&Memory来启动信息记录。在每次执行start函数时都将创建一个新的记录,并且每个模拟量输入对象必须单独对应一个记录文件。使用LogToDiskMode属性可以选
51、择某个记录文件是否被覆盖,或者是否创建多个记录文件,如果LogToDiskMode为Overwrite则记录文件被覆盖;如果LogToDiskMode为Index,则将创建新的文件,所创建的新文件将在LogFileName属性值得基础上加上一个索引值名。指定文件名可以使用LogFileName属性来指定记录文件的文件名。属性LogFileName的值可以是操作系统所在的任何值(包括路径名)。此外,如果属性LogToDiskMode为Index,则记录文件名也遵循如下规则。l 索引文件名由索引值来区分,索引值置于扩展文件名前,并且其增量为1.l 如果第一个记录文件没有索引值,则此序列的第一个文件
52、就是没有索引值的那个文件。例如,如果LogFileName为myfile.daq,则myfile.daq就是第一个记录文件的文件名,myfile01.daq则是第二个记录文件,依次类推。l 在写记录文件后,属性LogFileName将被更新l 如果指定的记录文件名已经存在,则该文件将被覆盖。返回记录信息可以使用daqread函数来返回记录信息。调用daqread函数可以返回记录信息的任何部分,但是daqread函数一般用于如下用途:l 返回数据和时间休息l 返回事件、设备对象、通道及硬件信息在记录文件中可以使用样本数和采样时间来标识记录的数据。例16 本例展示了如何将信息记录到磁盘文件,以及如何使用daqread函数来返回记录信息。假定声卡被配置为立体声采集模式,数据同时被记录在磁盘文件和内存中,执行了4个触发,并且每次触发以8kHz的采样速率记录2秒钟的数据。%为声卡创建一个模拟输入量对象aiai=analoginput(winsound);% ai=analoginput(nidaq,1);% ai=analoginput(mc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年金融分析师招聘面试题库及参考答案
- 2025年分析化学专家招聘面试题库及参考答案
- 2025年文案策划招聘面试题库及参考答案
- 2025年运动生理学家招聘面试参考题库及答案
- 2025年创新产品设计师招聘面试题库及参考答案
- 2025年数据信息管理专员招聘面试参考题库及答案
- 2025年社会媒体策略师招聘面试参考题库及答案
- 河南自考会计题库及答案
- 2025年公共关系专员招聘面试题库及参考答案
- 社区医院卫生考试题库及答案
- 合伙人合同协议书范文小规模个体户
- 体育-初中七年级田径大单元教学计划表及立定跳远教学设计、教案
- 【九牧卫浴公司考评制度问题及完善对策(6000字论文)】
- 科研伦理与学术规范课后习题
- 危险废物库房建设项目竣工环保验收监测调查报告
- (高立牌)SC型施工升降机说明书
- 中医基础理论-初级课件
- 失智失能老年人的睡眠照护(失智失能老人健康照护课件)
- (高清版)DZT 0342-2020 矿坑涌水量预测计算规程
- 中医经络养生拍打
- 人教新版英语五年级上册《UNIT4第二十二课》课件
评论
0/150
提交评论