基于MATLAB的实时数据采集与分析研究

发布者:chaohuangmeitao最新更新时间:2009-06-12 来源: 电子测量技术关键字:数据采集工具箱  实时  串口通信  系统仿真 手机看文章 扫描二维码
随时随地手机看文章

  1、引言

   数据采集系统涉及多学科,所研究的对象是物理或生物等各种非电或电信号。根据各种非电或电信号的特征,利用相应的归一化技术,将其转换为可真实反映事物特征的电信号后,经A/D转换器转换为计算机可识别的有限长二进制数字编码,以此作为研究自然科学和实现工业实时控制的重要依据,实现对宏观和微观自然科学的量化认识,典型的数据采集系统组成如图1所示。

   在采集过程中,将传感器获取的参数通过A/D转换送入内存,然后由CPU对其进行分析、运算和处理,如数字滤波、量纲变换、误差修正、数字显示等。在本文中,尝试通过利用MATLAB的数据采集工具箱对自主设计的数据采集系统[1]进行模拟仿真,结果实现了对设计系统的模拟操作检验与数据分析。为了满足实时采集的要求,采用了Compilier编译器[2],Compilier以M语言编制的程序为输入,可以根据需要生成独立运行的应用程序或可以被C/C++程序调用的动态链接库文件[3]。它支持MATLAB所有的内部函数,可使程序变得简洁高效。

基于MATLAB的实时数据采集与分析研究

  Figure 1 典型数据采集系统的组成

  2、数据采集工具箱介绍

   在MATLAB数据采集工具箱里集成了数据采集的M文件格式的函数和MEX文件格式的动态链接库。其主要特征[4][5]如下:

  (1) 提供了将实时测量数据从数据采集硬件采集到MATLAB中的框架。

  (2) 支持模拟量输入(AI)、模拟量输出(AO)以及数字量I/O子系统,包括模拟量I/O实时变换。

  (3) 支持PC声卡和业界非常流行的数据采集设备如NI卡、并行口(LPT1-LPT3)、Keithley卡等。

  (4) 采用事件驱动模式进行数据采集。数据采集工具箱由三部分组成:M文件格式的函数、数据采集引擎和硬件驱动,如图2所示。这些组成部分使得MATLAB与数据采集硬件之间的信息传递成为可能。

基于MATLAB的实时数据采集与分析研究

  Figure 2 数据采集引擎与硬件驱动

  3、数据采集过程

  3.1 数据采集的基本步骤

  (1)创建设备的一个对象。对象创建函数列表如下:

基于MATLAB的实时数据采集与分析研究

Table 1 对象创建函数列表

  (2)添加通道或数据线。模拟量I/O对象中用应添加通道,而数字量I/O对象中应添加数据线,与添加通道或数据线有关的函数列表如下:

基于MATLAB的实时数据采集与分析研究

  Table 2 与添加通道或数据线有关的函数列表

  (3)配置属性。属性分为公共属性和通道/数据线属性,而两者又再被分为基本属性与设备特有属性。其中公共属性为返回设备对象的所有可配置的公共属性名及其可能的属性值,应将对象作为Set函数的输入参数;要返回设备对象的所有公共属性及其当前值或为显示某个属性的当前值,应将对象或属性名作为Get函数的输入参数。对于通道/数据线属性,则使用Channel(Line)属性。

  (4)获取或输出数据。包括启动设备对象,记录或发送数据及停止设备对象三个步骤。其中启动设备执行Start函数、提取记录数据使用Getdata函数、发送数据前的数据排列使用Putdata函数、停止使用用Stop函数;另外运行状态用Running属性标识、记录状态由Logging属性标识、发送状态由Sending属性标识,其取值均为On或Off。对于数字量I/O对象,该部分处理有所不同。

  (5)清除。当不再需要设备对象时,应使用删除函数Delete将设备对象从内存中清除,并使用清除命令Clear将对象从MATLAB工作空间中清除。

  3.2 应用实例与分析

  3.2.1 MATLAB对RS232 的串口通信设计

   MATLAB是一个跨平台软件,而此处使用的是自主设计的数据采集卡,因此不具备直接访问的能力。但MATLAB的面向对象技术,已用一个对象把计算机串口封装起来,只要用Serial函数创建串口对象即可[6]。关键语句为:s=serial(‘COM1’,‘BaudRate’,9600)。MATLAB封装的串口对象支持对串口的异步读写操作,通过对异步读写设置,PC在执行读写串口函数时能立即返回,不必等待串口把数据串输完毕。当指定数据传输结束时就触发事件,执行事件回调函数,对事件回调函数编程,进行数据处理,这样可以大大提高数据处理的效率。

   MEX是MATLAB的可执行程序,是MATLAB调用其它语言编写的程序或算法的接口,在Windows环境下是扩展名为DLL的动态链接库。对MEX编译器进行配置的方法是:在MATLAB命令窗口中运行mex-setup,选择VC6.0++作为编译器。用C语言编写端口读、写的操作程序,程序包含有头文件mex.h和mexFunction函数,mexFunction函数中nelhs表示输出变量的个数,plhs包含指向输出变量指针的数组,nrhs表示输入变量的个数,prhs包含指向输入变量指针的数组。接口编形成的MEX文件与参考文献[7][8]类似,在此不再累述。

  3.2.2 数据采集与分析

  (1)数据读取的MATLAB实现

  主要代码为:

  %读取通道数及总数据量

  fid=fopen(‘cardiogram.add’,‘r’);

  Status=fseek(fid,56,‘bof’);

  nDataChNum=fread(fid,1,‘long’);

  status=fseek(fid,204, ‘bof’);

  nAllDataLength=fread(fid,1, ‘long’);

  %按通道数循环读出各通道起始地址

  status=fseek(fid,76, ‘bof’);%

  for i=1: nDataChNum

  pChannelAdr(i)=fread(fid,1, ‘long’)

  end

  %按通道数循环读出各通道数据

  for i=1:nDataChNum

  status=fseek(fid,pChannelAdr(i)+360, ‘bof’)

  nSegNum=fread(fid,1, ‘log’)

  status=fseek(fid,pChannelAdr(i)+160*nSegNum+1024, ‘bof’);

  data=fread(fid,nAllDataLength, ‘short’);

  end

  sta=fclose(fid);

  (2)数据处理与图形绘制

   利用MATLAB的图形用户接口,通过编程可以很方便地构建数据采集与分析的用户交互界面。将数据采集系统采集的实际心电图信号,用RS232导入到PC中。在MATLAB环境下,运行以上已经编好的程序,即可得到如下的模拟实验结果。不过要说明的是,此处使用的数据采集系统是八通道同步采集,而仿真时仅使用的是其中一个通道进行的操作。

基于MATLAB的实时数据采集与分析研究

  figure 3 实际心电图信号的采集与处理效果图

  4、结语

   使用自主开发的数据采集系统,通过合理运用串口及MTLAB强大的数值计算和分析功能,实现了基于MATLAB的实时数据处理和分析。通过模拟实验表明,该方法对于其它类似采集卡依然实用,具有一定的应用价值和发展前景。

关键字:数据采集工具箱  实时  串口通信  系统仿真 引用地址:基于MATLAB的实时数据采集与分析研究

上一篇:合众达推出SEED-DEC137/6747工业应用模板
下一篇:连接一切可连接的,TI DSP新增SATA与uPP

推荐阅读最新更新时间:2024-03-30 21:28

实时操作系统软件调度器/硬件调度器的设计与实现
引言 实时操作系统(RTOS),在整个嵌入式系统中扮演着十分重要的角色,它就像人的大脑支配人的行为一样,控制着整个系统的工作与运转,一个RTOS性能的优劣将对整个系统的性能产生直接的影响。衡量一个RTOS的好坏有多种标准,实时性则为一个关键指标,并且随着实时操作系统实际运用的加深及拓广,对RTOS提出了更加严格的要求。在系统限定时间内响应处理外部事件已经成为了对RTOS的一个基本要求。 任务调度,是RTOS的核心所在,任务间的通信、外部事件的处理以及中断处理等都离不开任务调度的参与。而且随着系统功能的完善与增强,任务间的关系变得更加复杂,需要与更多的外围设备打交道,这就需要任务调度不断地参与其中,从而导致系统性能的急剧下降、对事件实
[嵌入式]
实时频谱分析仪测试的工作原理
1.1 FFT的基本原理 FFT方法是通过傅里叶运算将被测信号分解成分立的频率分量,达到与传统频谱分析仪同样的效果。它采用数字方法直接由模拟/数字转换器(ADC)对输入信号取样,再经FFT处理后获得频谱分布。 FFT方式进行频谱分析的原理 离散傅立叶变换X(k)可看成是z变换在单位圆上的等距离采样值,同样,X(k)也可看作是序列傅氏变换X(ejω)的采样,采样间隔为ωN=2π/N。因此,离散傅立叶变换实质上是其频谱的离散频域采样,对频率具有选择性(ωk=2πk/N),在这些点上反映了信号的频谱。 根据采样定律,一个频带有限的信号可以对它进行时域采样而不丢失任何信息,FFT变换则说明对时间有限的信号(有限长序列)也可以进行频
[测试测量]
ATmega128学习(MOdbus串口通信
//ATmega128 AU USART1,波特率9600,modbus协议,单速,1停止位,CRC校验 //编译器 :ICC7.22 //晶振:11.0592MHZ,,外部高频石英震荡器,启动时间4.1ms //熔丝:扩展位:0xff, 0x19af,加密位:0xff //*********************************************************************** // 初始化去,参数定义区 //*********************************************************************** #include #inclu
[单片机]
用EZ-USB实现TMS320C6X与主机数据传输
DSP主要应用于实时和大数据量的信号处理系统,当它与主机进行通信时,数据交换速度和接口的复杂度是系统的一个关键性能指标,因此迫切需要一种能满足高速、简洁要求的通信方式,通用串行总线USB以其高速和内置电源两个特性,对提高设备的性能、降低成本和系统小型化具有很大的实际意义,本系统采用高速DSP(TMS320C6713),配合嵌入USB2.0协议的芯片CY7C68013,实现小规模主从式系统中主机与DSP间的高速通信。经实际验证,系统运行可靠,是一种比较好的高速数据传输与处理的解决方案。 1 USB控制芯片 Cypress公司的EZ-USB FX2系列芯片是最早符合USB2.0协议的微控制器之一。它集成了收发器(transceiv
[嵌入式]
S3C2440 实时时钟RTC
实时时钟(RTC)单元可以在当系统电源关闭后通过备用电池工作。RTC可以通过使用STRB/LDRB ARM操 作发送8位二-十进制交换码(BCD)值数据给CPU。这些数据包括年、月、日、星期、时、分和秒的时间信息。 RTC 单元工作在外部32.768kHz晶振并且可以执行闹钟功能。 RTC操作比较简单,寄存器的设置在数据手册上写的很详细,就不写了,贴一个RTC代码,该程序参考了天翔的RTC程序代码,主要是他写的比较好,都模块化了,我修改了他的代码,有闹钟(利用蜂鸣器),在TQ2440 板子上能运行,程序功能:串口每秒显示一次时间并且LED1闪一次,在闹钟设置中,秒为20时,显示闹钟时间并蜂鸣器发声几秒钟。
[单片机]
S3C2440 <font color='red'>实时</font>时钟RTC
S3C2440串口通信基本功能的代码(注释+学习)
功能:将通过串口接收到的内容再发送出去,在PC机上看到的现象就是在串口通信软件中输入什么就会实时地显示什么。 主文件:serial.c 1 //最常用的寄存器是ULCON、UCON、UBRDIV、UTRSTAT、UTXH、URXH这六个寄存器 2 #define ULCON0 (*(volatile unsigned *)0X50000000) //UART线控制寄存器 3 #define UCON0 (*(volatile unsigned *)0X50000004) //UART控制寄存器 4 #define UFCON0 (*(volatile unsigned *)0X5000
[单片机]
基于MATLAB模糊逻辑工具箱的模糊控制系统仿真
     摘 要: 介绍了用MATLAB5.1模糊逻辑工具箱设计模糊控制器,并用SIMULINK进行仿真的一般方法。该方法具有简便、直观、高效的特点。最后给出仿真结果。     关键词: MATLAB软件 模糊控制 计算机仿真     1964年美国的L.A.Zadeh教授创立了模糊集合理论,1974年英国的E.HMamdani研制出第一个模糊控制器。模糊控制不需要了解对象的精确数学模型,根据专家知识进行控制,近十年来得到了广泛的应用。     模糊控制器的设计参数主要有:各输入、输出变量模糊子集的隶属度函数,模糊控制规则,输入输出变量的比例变换因子等。要依据设计者的经验和反复调试才能设计出一个比较好的模糊控制
[传感技术]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新工业控制文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved