基于MATLAB实时串口数据采集与曲线显示Word文档下载推荐.docx
《基于MATLAB实时串口数据采集与曲线显示Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于MATLAB实时串口数据采集与曲线显示Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
年月日
摘要……………………………………………………………………………1
关键词…………………………………………………………………………1
1前言………………………………………………………………………………2
1.1Matlab实时串口数据采集研究现状及发展趋势……………………………2
1.2研究的目的和意义…………………………………………………………4
1.3论文的组织结构……………………………………………………………5
2Matlab下实时串口数据采集概要……………………………………………5
2.1Matlab的Serial类……………………………………………………………5
2.2数据采集…………………………………………………………………6
2.3曲线显示…………………………………………………………………7
3实时串口数据采集与曲线显示的实现……………………………………………8
3.1实时串口通信的实现………………………………………………………………8
3.2数据采集的实现……………………………………………………………9
3.3曲线显示GUI的实现……………………………………………………………10
4基于MATLAB的实时串口数据采集与曲线显示的具体做法……………………12
4.1数据采集的一般流程…………………………………………………12
4.1.1创建接口对象并设置属性……………………………………………………12
4.1.2打开串口设备对象…………………………………………………………12
4.1.3读写串口操作……………………………………………………………13
4.1.4关闭并清除设备对象……………………………………………………13
4.2基于Matlab中断方式的实时串行通信编程…………………………………13
4.3绘制采集数据的曲线波形和数据显示………………………………………14
4.3.1绘制曲线波形……………………………………………………………14
4.3.2数据显示………………………………………………………………15
4.3.3采集图像………………………………………………………………15
4.4扩展功能——发送数据……………………………………………………17
5结论………………………………………………………………………………17
参考文献………………………………………………………………………18
致谢………………………………………………………………………19
附录…………………………………………………………………………19
附录1………………………………………………………………………20
摘要:
数据采集是获取信息的基本手段,数据采集技术作为信息科学的一个重要分支,它研究信息数据的采集、存储、处理及控制等作业,具有很强的实用性,与传感器、信号测量与处理、微型计算机等技术为基础而形成的一门综合应用技术。
本设计是在MatlabR2008a版本中以串口通信实时接收目标系统数据,将采集的数据进行时间同步和字对齐处理,并在MATLAB的数据采集工具箱支持下,利用图形界面GUI的设计,直观的实时显示数据曲线。
设计得重点在于在Matlab上实现串口数据同步采集与处理,接收数据的时间同步和字对齐,同时扩展了发送数据的功能。
关键词:
MATLAB;
GUI;
实时串口;
数据采集;
曲线显示;
Real-timeSerialDataAcquisitionandFigureShowBasedonMatlab
Abstract:
Dataacquisitionisthebasicmeansofaccesstoinformation,thistechnologyasanimportantbranchofinformationscience,researchinformationdatacollection,storage,treatmentandcontroloperations,andhighlypractical.Dataacquisitiontechnologywithsensordataacquisition,signalmeasurementandprocessing,micro-computersandothertechnologyformedthebasisofacomprehensiveapplicationtechnology.ThisdesignversionuseMatlabR2008aserialcommunicationtothetargetsystemtoreceivereal-timedata,thedatawillbecollectedfortimesynchronizationandwordalignments,andMatlab’sDataAcquisitionToolboxinsupportofusingthegraphicaluserinterfaceGUIdesign,intuitivedisplayreal-timedatacurve.FocusdesignedtoachievetheMatlabserialdatasynchronizationacquisitionandprocessing,receivedatasynchronizationandwordalignment,expandingthefunctionofsendingdata.
.Keywords:
MATLAB;
GUI;
Real-timeserial;
Dataacquisition;
Figureshow;
1前言
1.1MATLAB实时串口数据采集研究现状及发展趋势
随着科学技术的发展,数据采集系统得到了越来越广泛得应用,同时人们对数据采集系统的各项技术指标,如:
采样率、线性度、精度、输入范围、控制方法以及抗干扰能力等提出了越来越高的要求,特别是精度和采样率更是使用者和设计者所共同关注的重要问题,于是,高速及超高速数据采集系统应运而生并且得到了快速发展。
今天,数据采集技术己经在雷达、水声、振动工程、无损监测、智能仪器、自动控制以及生物工程等众多领域得到广泛的应用并且收到了良好的效果。
高速数据采集系统在国防、航天、边缘科学研究中及国民经济的各个领域的成功的应用,进一步引起了各方的关注,推动了它的研制和发展。
随着科学技术的发展,数据采集系统得到了越来越广泛的应用。
目前,国外很多公司与厂商都投入巨资进行数据采集系统的研制开发与生产销售,其中比较著名的有NEFF,NI、HP,TEK等。
从数据采集系统产品来看,各大公司提供的系列产品都包括了完成数据采集的诸如信号放大、滤波、多路开关、模数转换和接口等各种模块。
现有的高速数据采集器件和开发的产品中,目前还没有完全实现高速、高分辨率。
在雷达、通信、谱分析、瞬态分析、等应用领域,为满足实时检测和高速采集的日益更新的需要,实现数据采集的高速、高分辨率已成为数据采集系统的一个发展方向。
现有的高速ADC器件和产品价格都比较昂贵,有些高速、高分辨率的器件本身还存在着不稳定性,因此,在数据采集系统向高速、高分辨率发展的同时,开发和研制的器件和产品应不断地提高可靠性,降低,提高性价比,以便使之得到更广泛的应用。
数据采集与分析一直是生产实践研究与应用领域的一个热点和难点。
随着微制造工艺水平的飞速提高及数据分析理论的进一步完善与成熟,目前国内外对数据采集系统的高性能方面的研究上取得了很大的成就。
就A/D转换的精度、速度和通道数来说,采样通道从单通道发展到双通道、多通道,采样频率、分辨率、精度逐步提高,为分析功能的加强提供了前提条件。
而在数据分析的微处理器上,最初的数据采集系统以8位单片机为核心,随着微电子技术的不断发展,新兴单片机的不断问世,十六位、三十二位单片机也为数据采集系统研制厂家所采用,近年来采用具有DSP功能的数据采集系统也己投入市场。
同时,通用PC机的CPU用于数据处理也较为常见。
总之,伴随着高性能微处理器的采用和用户技术要求的不断提高,数据采集系统的功能也越来越完善。
数据采集系统的发展主要体现在以下几个趋势:
首先,在专业测控方面,基于PC计算机的数据采集系统越来越成熟和智能化。
在过去的二十年中,开放式架构PC机的处理能力平均每十八个月就增强一倍。
为了充分利用处理器速度的发展,现代开放式测量平台结合了高速总线接口,如PCI和PXI/CompactPCI,以便获得性能的进一步提升。
计算机的性能提升和由此引起的基于计算机的测量技术的创新,正在持续不断地模糊传统仪器和基于计算机的测量仪器之间的界线。
其次,在通用测控方面,采用嵌入式微处理器的方案也由早期的采用A/D器件和标准单片机组成应用系统发展到在单芯片上实现完整的数据采集与分析,即目前极为热门的SOC(SystemOnChip)。
通常在一块芯片上会集成一个,可以采样多路模拟信号的A/D转换子系统和一个硬CPU核(比如增强型80_52内核),而且其CPU的运算处理速度和性能也较早期的标准CPU内核提高了数倍,而且有着极低的功耗。
这种单芯片解决方案降低了系统的成本和设计的复杂性。
此外,为了解决SOC方案中数据处理性能的不足,采用DSP作为数据采集系统的CPU的研究与应用目前也逐渐引起业内重视。
但是这类产品目前仅仅处于发展的初级阶段,在精度、速度或其它性能指标上并不能很好的满足要求。
因此,国内外以DSP作为数据采集系统的采样控制和分析运算的研究与应用正在展开。
近年来随着芯片技术、计算机技术和网络技术的发展,数据采集技术取得了许多新的技术成果,市场上推出了繁多的新产品。
高速数据采集技术的发展一方面是提高采集速率,另一方面不断向两端延伸。
一端是输入的信号调理,另一端是采集后的数字化信号的实时处理与事后处理。
20世纪90年代末,随着数字技术快速发展,数据采集技术已向着并行、高速、大量存储、实时分析处理、集成化等方向发展。
Matlab是Mathworks公司推出的一套高性能数值计算和可视化软件,是目前控制系统数据处理较为实用有效的工具。
它不仅能解决测试与控制系统中存在的大量的数值计算和矩阵运算,而且将图像与图形、显示及处理、图形界面设计集于一身。
同时,它还提供了强有力的工具箱支持,极大地方便了研究人员的学习与开发。
软件开发采用Matlab语言编程,利用Matlab中控制工具箱及仿真工具混合开发的方法,使其编写的程序更精练,软件功能更强大,开发周期更短,软件形式灵活、易于扩展,用户使用起来更容易、更方便。
因此,许多工程技术人员把Matlab软件作为数据离线处理的工具。
业内领先的工具箱极大的扩展了Matlab的应用领域,所以Matlab自推出以来就受到广泛的关注,数据采集工具箱就是其中之一。
它是为简化和加快数据采集工作而设计的,使用该工具箱更容易将实验测量得到的数据进行分析和可视化操作。
利用该数据采集工具箱可以方便地建立数据采集系统。
通过建立一个串口接口对象,可以使用Matlab命令直接和外部设备进行通信。
1.2研究的目的和意义
在近几十年来IC技术和技术的高速发展,为数据采集与分析提供了非常良好与可靠的科学技术基础,也提出了更高的要求和强有力的推动。
随着现代工业技术的迅猛发展,生产规模的不断壮大,生产过程和制作工艺的日趋复杂,对自动测试和各种信息集成的要求也就越来越高。
在当今社会各个领域,包括科研和实验研究,数据采集系统有着不可代替的作用,数据采集和处理进行得越及时,工作效率就越高,取得的经济效益就越大。
数据采集系统性能的好坏主要取决于它的精度和速度,在保证精度的条件下,还要尽可能地提高采样速度,以满足实时采集、实时处理和实时控制的要求。
数据采集系统的好坏将直接影响自动测试系统的可靠性和稳定性,为了满足不同的测试需求,以及减少对资源的浪费,在系统的设计上应该尽量满足通用性和可扩展性。
在高度发展的当今中,科学技术的突飞猛进和生产过程的高度自动化已成为人所共知的必然趋势,而它们的共同要求是必须建立在有着不断发展与提高的信息工业基础上。
人们只有从外界获取大量准确、可靠的信息经过一系列的科学分析、处理、加工与判断,进而认识和掌握自然界与科学技术中的各种现象与其相关的变化规律,并通过相应的系统和方法实现科学实验研究与生产过程的高度自动化。
换言之,生产过程的自动化面临的第一个问题就是必须根据从各种传感器得到的数据来检测、监视现场,以保证现场设备的正常工作。
所以对现场进行数据采集是重要的前期基础工作,然后再对现场数据进行传输和相应的处理工作,以满足不同的需要。
如果要对大量的实验数据利用Matlab的数据分析处理功能进行处理,则首先要将实验数据转换成Matlab的数据格式,这无疑是一件十分繁杂的任务。
若能直接从Matlab环境下采集实验数据,无疑对与实验分析和数据处理都是有益的。
Matlab(Version7.0)的数据采集箱DAQ(DataAcquisitionToolbox)为此提供一个实现直接数据采集的平台。
利用该工具箱配以适当的数据采集卡不仅可以进行实时数据采集,而且还可以进行实时显示和控制,由此还可以组建成为自动测试分析系统。
基于MATLAB实时串口数据采集,将采集的数据进行时间同步和字对齐处理,并在Matlab的工具箱支持下实时显示数据曲线,具有重要的意义。
1.3论文的组织结构
摘要。
阐述了此次设计的总思路,利用MATLAB接收目标系统串口通信实时数据,将采集的数据进行时间同步和字对齐处理,并在MATLAB的工具箱支持下实时显示数据曲线。
1.前言。
介绍了MATLAB实时串口数据采集的研究现状及发展趋势、研究的目的和意义,说明了此设计的实用价值。
2.MATLAB实时串口数据采集概要。
对此设计中的理论知识进行概述,是设计过程中所需要的理论和条件支撑,以便设计的顺利进行。
3.实时串口数据的采集与曲线显示的实现。
大致描述了该设计的设计与实现方法,是设计过程中所需要的实践环节。
4.基于MATLAB的实时串口数据采集与曲线显示的具体做法。
详细的给出了完成此次设计的思路和具体做法。
有了正确的过程,便会得出结论,结论部分即是对此次设计结果的一个说明。
本文总的来说是按照从抽象的概念描述到具体实现方法步骤的写作思路来完成的。
2Matlab实时串口数据采集概要
2.1Matlab的serial类
串行接口(SerialInterface)简称串口,也称串行通信接口(通常指COM接口),是采用串行通信方式的扩展接口。
串口的出现是在1980年前后,数据传输率是115kbps~230kbps。
串口出现的初期是为了实现连接计算机外设的目的,初期串口一般用来连接鼠标和外置Modem及老式摄像头和写字板等设备。
串口也可以应用于由于两台计算机(或设备)之间的互联及数据传输。
串行接口是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,并可以利用电话线,从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。
由于串口(COM)不支持热插拔及传输速率较低目前部分新主板和大部分便携电脑已开始取消该接口,目前串口多用于工控和测量设备以及部分通信设备中。
自Matlab6.0版本起,Mathworks公司在软件中增加了InstrumentControlToolbox,提供了对串口通信的正式支持。
利用该工具箱的serial及其相关函数,能可靠地进行串行通信。
仪器控制工具箱serial类的主要特点如下:
(1)支持基于GPIB总线(IEEE-488、HPIB标准)、VISA总线、串行接口(RS-232、RS-422、RS-485)的通信标准;
(2)支持二进制和文本(ASCII)两种数据的通信,文本方式支持(standardcommandsforprogrammableinstruments)语言;
(3)支持异步通信和同步通信;
(4)支持基于事件驱动的通信。
2.2数据采集
数据(Data)也称观测值,是实验、测量、观察、等的结果,常以数量的形式给出。
数据采集(DataAcquisition),又称数据获取,就是将被测对象(外部世界、现场)的各种参量(可以是量,也可以是化学量、生物量等)通过各种传感元件作适当转换后,再经信号调理、采样、量化、编码、传输等步骤,最后把系统需要的所有对象的原始数据收集、归类、整理、录入到系统当中去,是管理系统使用前的一个数据初始化过程。
数据采集技术广泛应用在信号检测、信号处理、仪器仪表等领域,比如摄像头,麦克风,都是数据采集工具,随着数字化技术的不断发展,数据采集技术也呈现出速度更高、通道更多、数据量更大的发展态势。
被采集数据是已被转换为电讯号的各种物理量,如温度、水位、风速、压力等,可以是模拟量,也可以是数字量。
采集一般是采样方式,即隔一定的时间(称采样周期)对同一点数据重复采集。
采集的数据大多是瞬时值,也可是某段时间内的一个特征值。
准确的数据测量是数据采集的基础。
数据测量方法有接触式和非接触式,检测元件多种多样。
不论哪种方法和元件,都以不影响被测对象状态和测量为前提,以保证数据的正确性。
数据采集含义很广,包括对连续物理量的采集。
在计算机辅助制图、测图、设计中,对图形或图像数字化过程也可称为数据采集,此时被采集的是几何量数据。
数据采集系统是一种应用极为广泛的模拟量测量设备,其基本任务是把信号送入计算机或相应的信号处理系统,根据不同的需要进行相应的计算和处理。
它将模拟量采集、转换成数字量后,再经过计算机处理得出所需的数据。
同时,还可以用计算机将得到的数据进行储存、显示和打印,以实现对某些物理量的监视,其中一部分数据还将被用作生产过程中的反馈控制量。
在数据采集中,一般将待测对象的信号通过传感器和A/D转换器或其它专业测试仪器(如TDS3000系列数字式示波器),把数据传到计算机。
编制计算机与测试仪器的接口程序可使用C++Builder、VB等编程语言。
数据采集到计算机后要进行各种处理。
如FFT、各种方法的滤波、系统辨识、小波变换等,由于Matlab提供功能强大的各种计算,使用几个简单语句就能实现,因此采用Matlab编程语言非常适合。
Matlab自带的数据采集工具箱DAQ能更容易地将实验测得的数据进行分析和可视化操作,包括了三个模块,其中M-File函数是Matlab中可直接调用的数据采集命令函数,通过M-file函数传输数据、参数和命令给数据采集引擎,并可从数据采集引擎中查看数据采集设备对象的状态、参数和抽取数据,所有的实时数据采集任务都通过这些函数的调用来实现。
数据采集引擎(DataAcquisitionEngine)是Matlab环境下进行实时数据采集的核心。
它执行M-flie函数所规定的功能,并监视和控制数据采集设备对象的状态,以及存储和管理所采集的数据。
一旦实时数据采集任务启动,它就类似于DOS环境下后台运行的监控程序,所有的数据采集任务就置于它的监控和管理之中。
硬件转接驱动程序(HardwareDriverAdaptors)建立采集卡驱动软件(driver)与数据采集引擎之间的数据、命令和参数的传输通道,对于不同的板卡,需要不同的驱动程序,可以是动态链接库文件(*.DLL),也可以是Matlab下的共享库文件(*.MEX)。
它提供了以下主要的功能:
1.以相同的指令操作模拟输入(AI)、模拟输出(AO)、数字输入输出(DIO)和同步模拟输入输出转换各式功能,不会因不同硬件而产生不同的指令。
2.一个及时数据采集环境,被测量的数据不需经由转换可直接进入MATLAB直接进行分析。
3.支持PC声卡和主要的数据采集卡的厂商,如:
凌华,Agilent,ComputerBoards和NationalInstruments。
4.支持事件驱动(Event-driven)的数据采集。
2.3曲线显示
Matlab具有强大的绘图功能,在Matlab中将采集到的数据实时显示出来,可以使用二维曲线绘图的方法。
Plot函数是Matlab中最常见的绘图函数,可以用来绘制单条或多条曲线,它是针对向量或矩阵的列来绘制曲线的。
也就是说使用plot函数之前,必须首先定义好曲线上每一点的X及Y坐标,常用的格式有:
plot(x,y)
以向量x、y为轴,绘制曲线。
其中x和y为坐标向量。
plot(x1,y1,x2,y2…)
绘制多条曲线(也可以用矩阵变量plot(x,y))。
plot(x,y1,x,y2,x,y3…)
其功能是以公共向量x为X轴,分别以y1,y2,y3…为Y轴,在同一幅图内绘制出多条曲线。
plot(x1,y1,LineSpec1,x2,y2,LineSpec2…)
将按顺序分别画出由三参数Xi,Yi,LineSpeci定义的线条。
其中参数LineSpeci指明了线条的类型,标记符号,和画线用的颜色。
xlabel(‘frequency(Hz)’);
%X轴名称为frequency(Hz)
ylabel(‘magnitude(dB)’);
%Y轴名称为magnitude(dB)
3实时串口数据采集与曲线显示的设计方法
3.1实时串口通信的实现
Matlab7.0支持面向对象技术,用一个对象把计算机串口封装起来。
创建串口对象后,对其的操作就是对串口操作,从而实现了对计算机串口操作的简化。
因此,使用Matlab7.0平台,通过计算机串口实现对专业测试仪器的控制以及测试数据的实时采集、传输、处理和结果显示。
是十分有效的实时数据采集与处理方法之一。
Matlab7.0封装的串口对象支持对串口的异步读写操作,计算机在读写串口时能同时进行其他处理工作,因而使计算机具有极高的执行效率。
Matlab7.0用多线程技术实现这种异步操作,通过异步读写设置,计算机在执行读写串口函数时能立即退回,不必等待串口把数据传输完毕。
当指定的数据传输结束时就触发事件,执行事件回调函数。
可以在事件回调函数中编程,进行数据处理,这样就不会造成因等待串口传输数据引起的机时浪费。
Matlab串行口对象属性。
使用serial函数创建串口对象后,通过对象句柄操