基于无线传感器的振动检测毕业论文.doc_第1页
基于无线传感器的振动检测毕业论文.doc_第2页
基于无线传感器的振动检测毕业论文.doc_第3页
基于无线传感器的振动检测毕业论文.doc_第4页
基于无线传感器的振动检测毕业论文.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于无线传感器的振动检测毕业论文目 录摘 要IAbstractII目 录III1 绪论11.1 选题意义11.2 技术背景21.3 本文工作22 系统设计42.1 需求分析42.2 硬件结构52.3 软件结构82.4 功能流程163 关键技术173.1 振动数据采集173.2 XMesh网络协议193.3 数据处理223.4 数据格式转换234 测试255 结论27致谢28参考文献291 绪论1.1 选题意义当代社会的工业生产中,设备的机械化,自动化,信息化,智能化程度都日新月异的发展和进步着。设备规模越来越大,结构越来越复杂,功能越来越多,性能越来越高;这极大地提高了生产效率,改变了人们的生活方式。同时这些设备一旦产生故障也将造成重大的经济损失,有时还会带来人员伤亡和严重的环境污染。传统的维护方式是出了故障再修理或者定期检修,但是现代工业体系中的设备往往具备大型化,连续化,高速化,自动化的特性1。一旦产生故障就会使整条生产线停顿,甚至对生产设备造成严重损伤,由此带来的经济损失将是不可承受的。而传统的定期检测需要大量技术娴熟经验丰富的技术员,但是此种方式往往带来检修过剩及生产线的不必要停顿。这将给企业带来额外的损失和经济负担,同时此种方法并不能及时发现机械故障。因此基于传感器的即时监测技术应运而生,这种系统可以随时监测系统运行状态。出现故障前兆立刻报警,大大减少了不必要的检修并提供有效的故障预测信息,使得预测性维护成为可能。然而早期的在线监测系统非常昂贵,需要铺设大量的线路和专业的操作人员。而这些对于中小型企业和对故障检测及时性要求不是那么高的系统来说性能过剩,同时其昂贵的成本将许多用户挡在门外。随着电子信息产业和硬件制造技术的发展基于无线传感器网络的振动监测系统成为了可能。基于无线传感器网络的监测系统不需要铺设大量的线路,因此可以以较低的成本组建起一个监测网络,同时在性能与成本之间达到一个均衡。振动监测对于许多现代工业设备有重要意义,各种设备中的电机及轴承在正常运转时拥有稳定的振动周期。当轴承出现磨损时便会在其振动信号中表现出异常,通过对采集到的振动信号进行时域及频域分析可以建立对应的故障信号数据库。可以在磨损出现时快速鉴别分析是何种故障,为预测性维护提供了可靠的信息。同时无线传感器节点可以在严酷的环境内长时间稳定工作,此项技术已经应用于发电机组,船舶动力舱,生产线上的机械设备以及对建筑的振动监测。同时通过精心设计的电源管理协议,基站端定时唤醒节点进行数据采集。采集完成后立刻睡眠,使得节点上的5号电池可以在高能耗电源模式下维持数月,在低能耗模式下维持1-2年。解决了无线传感器的电力供给问题,不必频繁的更换电池。综上所述,基于无线传感器网络的振动监测系统有着广阔的应用场景,而随着半导体加工技术的飞速进步及处理器速度的提升。无线传感器网络的节点处理能力将会随之提高,无线传感器网络将具有更高的性能和智能化处理能力。1.2 技术背景本文所用的硬件平台是美国Crossbow公司开发的无线振动监测套件,此套件可以应用于建筑物和机床的健康监测,用智能的无线技术代替传统的人工检查,监测数据可以传输到服务器、终端PC或者手持设备PDA,实现传统排查不可及的实时监控。CXL10GP3加速度传感器通过套件中的MDA320数据采集板连接到Crossbow的无线传感器网络平台上,实现了低功耗、多跳的无线传输监测数据。此套系统之前已有过成功的应用案例在英国BP石油公司的一艘运行在北海的万吨运油船Loch Rannoch。此项BP 的计划是建立一套预测维护系统用来监视如马达、泵之类具有强烈振动的机器。这些机器被放置于Loch Ronnach 油船的引擎室内。通过振动信息来监测系统的工作状态,当磨损或撕裂现象出现时则通过无线通信发送警告。相似的例子还有发电站的机房及高压输电线路。由于无线传感器的良好性能,节点都可以部署在苛刻的环境中。例如高空高压电网和船舶动力舱室,节点能够长期高效采集有效数据,从而免去人工检查的繁琐工程和维护次数,并且减少有线监控的高额成本。BP公司的项目最终验证了这套系统的现实可行性2。在为期数月的实验期间,振动监测系统在船舶动力室27-38的高温及来自动力机组的强烈振动中忠实的完成了其所被赋予的任务。国家电力建设研究所目前已将克尔斯博公司的无线传感器网络产品用于监测大跨距输电线路的应力、温度和振动等参数。每个传感器节点部署在高压输电线上,而网关固定在高压输电塔上。此项目克服了超高压大电流环境中无线监测装置的电磁屏蔽、工频干扰、电晕干扰、无线监测装置的长期供电等技术难题;解决了导地线微风振动传感技术、无线数据传输、多参数信息监测与集成等关键技术问题。验证了基于无线传感器的振动监测网络在实际工业环境中部署的可能性,及其广阔的市场前景。1.3 本文工作本文使用无线振动监测套件中的基本组成部分来完成监测网络的组网,数据采集,数据传送及数据显示。实验中需要用到基本硬件颗粒:IRISCrossbow 2007年推出的一款增强版无线传感器网络节点,相对于原有的MicaZ节点,该节点可达到更远的通信距离(300500米,三倍于MicaZ节点),同时仅消耗原有功耗的一半。采用此款Mote可以降低Mesh网络多跳造成的延迟,增强网络的稳定性与可靠性,在相同节点数目的条件下可以覆盖更大的监测范围。MDA320Crossbow推出的MDA320是一款16位的ADC数据采集板,提供8通道16/12位ADC采样,同时提供标准的5v,2.5v基准电压输出。可以非常方便的与加速度计连接。16位的采样精度可以保证数据采集的精确度。CXL10GP3Crossbow公司出产的CXL10GP3加速度传感器是一款测量范围为10g的3轴加速度传感器,前置的100HZ低通滤波器可以有效滤除干扰噪声。内置的信号调理电路可以保证输出信号的可信性。其功耗低至5mA每轴非常适合集成进低功耗无线传感器网络,进行长期建筑健康程度监测3。其中我编写的采集程序将运行在MDA320及网关主板MIB520上,由MIB520发送控制信号管理数据的采集和传输。收集到的数据传送到Crossbow公司的软件平台XServe上,经过数据解析后形成XML格式数据流通过HTTP协议传送至远程计算机的网页上显示。2 系统设计本章内容是关于系统总体框架和设计的,这一章的开头部分我们首先论述了工业生产对基于无线传感器网络的振动监测系统的需求分析。随后说明了我们所使用的硬件节点的型号附带简要的产品介绍。随后按照无线传感器网络由根节点到叶节点的顺序展示了相应的硬件芯片图片及其基本性能。然后简要介绍了我们使用的Crossbow公司的开发平台和应用软件,(对于所使用的平台及TinyOS将在第3章详细的介绍)以及我们整个系统的软件架构,最后是整个系统的流程图和传感器采集数据的流程图。2.1 需求分析现代工业设施的许多地方都需要使用振动监测来评估设备的健康状况,例如各种电机,发动机及转轴上使用的轴承。这些设备稳定转动时发出规律的振动信号,当机械部分出现磨损时,损伤处就会因碰撞产生对应的独特噪音信号。通过对这些信号的监测便可以知道设备是否出现磨损,出现了那种类型的磨损,由此便可以将故障排除在发生之前4。由于无线传感器网络工作的环境往往比较恶劣,机房环境往往温度较高,噪音、振动、及复杂的电磁环境都会影响传感器及无线电的工作。并且需要监测的设备运行时长时间处于振动状态,因此需要将加速计牢固的依附在机械表面。本文所使用的硬件节点是Crossbow公司最新的增强版无线传感器网络节点,相比之前版本的产品拥有更远的通讯距离和更强的抗干扰性。同时所使用的CXL10GP3加速计本身带有两个螺栓孔,可以紧密的固定在机械表面。网络通信方面使用Crossbow公司的XMesh进行振动网络的组建和管理。通过XMesh的网络协议,振动节点和网关之间可以形成星型网络,蜂窝网络或者星形-蜂窝混合网络如图2.1。本文使用的是Mesh星形网络,节点与网关之间通过网络协议进行自组网。并且根据节点之间的连接状况进行重组,同时系统出错时可以进行快速的重启使网络恢复正常。本文中使用CXL10GP3与MDA320连接在一起形成数据采集节点,由一块使用USB连接到计算机的MIB520芯片担任网关节点。网络运行时,由计算机终端通过XServe发送采集命令到网关节点,再由网关节点转发到传感器节点进行数据采集。 图2.1 XMesh的三种网络结构2.2 硬件结构本节我们将简要介绍实验所使用的硬件芯片及他们之间的结构关系,我们将按照自顶向下的顺序由根节点到叶子节点逐一介绍这些芯片,首先是网关节点MIB520芯片。2.2.1 网关节点MIB520MIB520板的外观如图2.2所示,MIB520芯片为IRIS系列节点提供通信和编程的USB接口,通过USB总线为设备供电。同时板上带有一个嵌入式处理器Atmega 16L对节点进行编程。代码将先通过USB下载到Atmega 16L随后处理器将代码烧入节点。使用MIB520对节点编程需要在计算机端使用MoteWorks指定MIB520的两个端口号,两个端口是独立的,分别负责编程和数据传输。本文中我们设置的两个端口号为COM3和COM4。同时MIB520芯片还有一个reset开关可以重置在板子及节点上运行的程序,其同样也会重置在计算机端运行的软件。2.2.2 处理器/无线电板 XM2110芯片XM2110属于IRIS系列芯片如图2.3,是Crossbow公司的最新产品。自身带有一定的计算能力,其使用一个兼容IEEE 802.15.4协议的无线电收发机作为通讯方式。无线电装置上包括一个DSSS(数字直接序列扩频)基带调制解调器,图 2.2 MIB520网关节点提供9dB的扩频增益和250kbps的有效数据速率。天线频率可在IEEE 802.15.4的频道号11(2.405GHz)到26(2.480GHz)之间以5MHz的分辨率调整。图 2.3 XM2110芯片 无线电的射频传输电源可以在3dBm(毫瓦分贝)至17.2dBm之间调整,更低的传输功率可以通过减少电磁干扰降低无线电功率实现。XM2110节点是整个无线传感器网络的主要组成芯片,所有的传感器节点、网关节点都将与这样一个芯片相连。并通过这块芯片进行节点之间的通信、广播命令、上传数据等操作。2.2.3 数据采集板 MDA320CAMDA320CA是一款高性能数据采集板如图2.4,具有多达8通道16位模拟输入。与MDA300数据采集板相比,其结构精简却具有相同的功能。MDA320CA是为低成本要求精确采集和分析数据类应用设计的。MDA320CA具有改进的微型连接方式,和快速便捷的接口连接外部传感器。应用Crossbow的MoteView可实现数据记录和显示功能。图2.4 数据采集板 MDA320也是无线传感器网络使用最多的芯片之一,每个传感器都将通过电缆与MDA320连接,通过其板载的模数转换器将传感器采集的模拟信号转换为数字信号。同时MDA320通过其板上的插口与XM2110连接,转换出来的数字信号经过无线电发送至网关节点。2.2.4 CXL10GP3加速计CXL10GP3加速计是本文所使用的唯一一款传感器如图2.5,采用MEMs(微机电系统)工艺制造而成。内置包括放大和滤波在内的信号调理电路。直接输出05V标准信号。出厂前经过标准测试,提供可信的振动信号输出。图2.5 加速计安装时加速计通过电线与数据采集板相连,数据采集板通过插口和XM2110无线电板相连。电池也安装在无线电板的背面,从而构成一个最基本的数据采集单元。该单元通过无线电与网关节点上的无线电双向传输信息,从而接受命令收集数据并将数据送至计算机上的XServe软件。2.3 软件结构2.3.1 软件结构总揽MoteWorks是Crossbow公司的软件开发平台,提供了nesC程序的一整套开发环境及附属软件包。本文的主要工作都在这个平台上进行。MoteWorks软件包主要内容为:Cygwin:Windows环境下模拟POSIX环境NCC:nesC语言编辑器PN:Progrmmer Note,代码编辑器Uisp:程序下载器XServe:无线传感器网络服务器中间件Moteview:无线传感器网络客户端管理和监控软件PostreSQL:数据库与硬件层次相对应的是相应的软件层次结构,TinyOS下的nesC语言应用程序运行在硬件体系的叶子节点上。专为嵌入式网络系统设计的TinyOS和nesc语言拥有代码量小、耗能少、并发性高、健壮性好的特点,能够很好的适应无线传感器网络节点的硬件环境。(对TinyOS和nesc的进一步介绍将在本节的后面部分展开)同时在计算机端运行着Crossbow公司开发的服务软件XServe,其负责监听网关的串口捕获节点上传的数据并对其进行解析。通过键入相应的命令可以使数据显示,存储或者转发到指定端口。本文中XServe的数据将被转发到实验室一位师兄编写的网站上,并在其网页上即时的显示出来。当然这个网站就是我们软件结构的客户端部分。软件系统整体的结构图如图2.6所示:接下来我们将按照由传感器节点到网关,由节点层到服务器层最终到客户端的顺序来说明软件层次中每一部分的结构和功能。首先从无线传感器网络开始。2.3.2 TinyOS受限于有限硬件资源,无线传感器网络节点操作系统设计应满足如下的要求:图 2.6 系统整体结图1. 小代码量由于节点的内存有限, 因此运行在其上的操作系统核心代码量必须较小, 使其可以在有限的空间中具备高效管理硬件的能力。2. 模块化无线传感器网络设计的趋势是针对特定的应用而不是普遍的应用, 不同的应用所需要的硬件平台是不相同的。随着无线传感器网络的广泛应用, 节点构成的变化是巨大的。在特定的硬件平台上, 根据不同的应用快速便利地结合软件模块实现应用是非常重要的。3. 低功耗WSN 的大多数节点采用电池供电。由于节点数量众多以及节点被散布的环境使频繁更换节点的电池是不可行的, 甚至是不可能的, 因此低功耗的操作将延长整个网络的生命周期, 是操作系统设计必须满足的条件。4. 并发操作性在传感器网络的节点上存在着大量的并发操作, 如数据采样、数据处理、数据转发可能同时进行。操作系统需要具备支持严格并发操作的能力。5. 健壮性WSN 节点数量众多以及运行环境特殊, 要求运行在单个节点上的操作系统不但健壮, 而且应该便利地适应于可靠的分布式应用的发展。TinyOS(TinyMicro Threading Operating System)是一个开源的嵌入式操作系统, 它由加州大学伯克利分校开发,主要应用于无线传感器网络方面。目前在世界范围内,有超过500个研究小组或者公司正在Berkeley / Crossbow的节点上使用TinyOS5。 . TinyOS 的特点和体系结构伯克利大学开发的TinyOS 采用了组件的结构, 它是一个基于事件的系统。其设计的主要目标是代码量小、耗能少、并发性高、健壮性好, 可以适应不同的应用。TinyOS 系统、库及应用程序都是用nesC 语言写的语言写的,这时一种新的用于编写结构化的基于组件的应用程序的语言。nesC 语言主要用于诸如传感器网络等嵌入式系统。nesC具有类似于C 语言的语法,但支持TinyOS 的并发模型,同时具有结构化机制、命名机制,能够与其他软组件连接在一起从而形成一个健壮的网络嵌入式系统。其主要目标是帮助应用程序设计者建立可易于组合成完整、并发式系统的组件,并能够在编译时执行广泛的检查。TinyOS 定义了许多在nesC 中所表达的重要概念。首先,nesC 应用程序要建立在定义良好、具有双向接口的组件之上。其次,nesC 定义了并发模型,该模型是基于任务(tast)及硬件事件句柄(hardware event handler)的,在编译时会检测数据竞争(data race)。. TinyOS的并发模型(Concurrency Model)TinyOS 一次仅执行一个程序。组成程序的组件来自于两个方面,一部分是系统提供的组件,另一部分是为特定应用用户自定义的组件。程序运行时,有两个执行线程:一个称为作业(task),另一个称为硬件事件句柄(hardware event handler)。作业是被延期执行的函数,它们一旦被调度,就会运行直至结束,并且在运行过程中不准相互抢占。硬件事件句柄是用来处理相应硬件中断的,虽然也要运行完毕,但它们可能会抢占任务或其他硬件事件句柄的执行。命令和事件要作为硬件事件句柄的一部分而执行必须使用关键字async 来声明。因为任务和硬件事件句柄可能被其他异步代码所抢占,所以nesC 程序易于受到特定竞争条件的影响,导致产生不一致或不正确的数据。避免竞争的办法通常是在任务内排他地访问共享数据,或访问所有数据都使用原子语句。nesC 编译器会在编译时向程序员报告潜在的数据竞争,这里面可能包含事实上并不可能发生的冲突。如果程序员确实可以担保对某个数据的访问不会导致麻烦,可以将该变量使用关键字norace 来声明。但使用这个关键字一定要格外小心。. TinyOS 的调度机制TinyOS 提供作业加事件的两级调度。作业一般用于对时间要求不高的应用中, 它实际上是一种延迟计算机制。作业之间互相平等, 没有优先级之分, 所以作业的调度采用简单的FIFO。作业间互不抢占, 而事件( 大多数情况下是中断) 可抢占。即作业一旦运行, 就必须执行至结束, 当作业主动放弃CPU 使用权时才能运行下一个作业, 所以TinyOS 实际上是一种不可剥夺型内核。内核主要负责管理各个作业, 并决定何时执行哪个作业。作业事件的调度过程如图2.7所示。TinyOS 的作业队列如果为空, 则进入极低功耗的Sleep 模式。当被事件触发后, 在TinyOS 中发出信号的事件关联的所有作业被迅速处理当这个事件和所有作业被处理完成, 未被使用的CPU 被置于睡眠状态而不是积极寻找下一个活跃的事件6。由前所述, TinyOS 调度机制有以下特点:1. 作业单线程运行到结束, 只分配单个作业栈,这对内存受限的系统很有利;2. 没有进程管理的概念, 对作业按简单的FIFO 队列进行调度。对资源采取 图 2.7 TinyOS作业调度过程预先分配, 且目前这个队列里最多只能有7 个待运行的作业;FIFO 的作业调度策略是电源敏感的。当作业队列为空时, 处理器休眠, 随后由外部事件唤醒CPU 进行作业调度;3. 两级的调度结构可以实现优先执行少量同事件相关的处理, 同时打断长时间运行的作业;4. 基于事件的调度策略, 只需少量空间就可获得并发性, 并允许独立的组件共享单个执行上下文。同事件相关的作业集合可以很快被处理, 不允许阻塞, 具有高度并发性;5. 作业之间互相平等, 没有优先级的概念。2.3.3 nesc语言TinyOS最初是用汇编和C 语言编写的。但是C 语言不能有效、方便地支持面向无线传感器网络的应用和操作系统开发。为此科研人员经过研究对C 语言进行了一定的扩展, 提出了支持组件化编程的nesC 语言。. Nesc的特点1. nesC是c 语言的一个扩展: C 语言可以为所有在传感器网络中可能被用到的目标微控制器生成高效代码。C 为硬件访问提供了所有必要的底层功能部件, 并且简化了和现存C 代码的交互过程, 而且许多程序开发人员都熟悉C 语言。但是, C 语言也有许多的不足之处: C 语言的安全性和程序结构化方面做的工作很不够。NesC通过控制表达能力来提供安全性, 通过组件来实现结构化设计。2. 整体程序分析:节点的应用程序的大小都是很有限, 这使得整个程序分析成为现实。NesC 的编译器要求对用nesC 编写的程序进行整体程序分析( 为安全性考虑) 和整体程序优化。3. NesC 是一个“静态语言”:nesC 的组件模型和参数化的接口减少了许多动态内存分配的要求。用nesC 编写的程序里不存在动态内存分配, 而且在编译期间就可以确定函数调用流程。这些限制使得程序分析和优化操作得以简化, 同时操作也更加精确。4. nesC 支持和反映基于事件的并发控制模型: 基于组件概念的nesC 直接支持基于事件的并发控制模型。此外 nesC 要设计应对共享数据访问的策略。. Nesc概念简介1. 组件nesC的应用程序都是由组件(component)构成,他们装配到一起(配线)构成完整程序。nesC组件类分为模块和配置两种:. 模块:提供,使用,实现接口,包含类C代码。. 配置:一系列通过配线语法连接在一起的组件,不使用类C代码,也可以提供和使用接口。之所以设置模块和配置两种组件就是为了使程序开发者能够使用预建的模块快速的装配新的应用程序而不需要额外的编程。例如一个程序员可以简单的通过一个配置文件配线已有的组件来生成一个应用程序。这样就可以构建一个库使得程序员可以方便的调用已有的模块。2. 接口接口定义了模块和配置文件相互作用的边界,同时也定义了公共的方法供组件使用。接口使用关键字Provides和Uses来界定方法。a. Provides = 向其他组件提供方法b. Uses = 需要其他组件实现方法 接口有双向性: 它们叙述一组接口供给者 (指令)提供的函数和一组被接口的使用者(事件)实现的函数。这允许一个单一的接口能够表现组件之间复杂的交互作用 (举例来说.,当某一事件在一个回调之前发生时,对一些事件的兴趣登记)。 这是危险的,因为 TinyOS 中所有的长指令 (举例来说. 发送包)是非中断的; 他们的完成由一个事件( 发送完成)标志。 通过叙述接口,一个组件不能调用发送指令除非它提供 sendDone 事件的实现。通常指令向下调用,比如, 从应用组件到那些比较靠近硬件的调用,而事件则向上调用。特定的原始事件与硬件中断是关联的(引用)接口实质上是一系列事件(event)和命令(command)的集合,接口的使用者必须实现接口中声明的的事件,而接口的提供者必须实现接口中声明的命令。3. 配线由上所述nesC语言主要是依靠配置文件与已有的组件连接而快速形成应用程序。连接的关键就是配线语法,通过配线语法将配置文件中的方法与已有库中的连接起来。举例说明:我们总能在nesC的配置中看到类似下面的代码:Main.StdControl -XXXX.StdControl;其作用时将 Main 组件的接口StdControl 与XXXX中的StdControl 接口导通起来。XXXX.StdControl.init()将被Main.StdControl.init()调用。同样的规则也适用于start()命令及stop()命令。至于“被使用”的接口,其子组件的初始化函数必须被使用组件显式地调用。如:XXXX 模块使用接口YYYY,于是YYYY.init()命令要再XXXX.init()中被显式地调用。nesC 使用箭头(-)来指示和标识接口间的关系,其意义为“绑定”,即左边的接口绑定到右边的实现上。换言之,使用接口的组件在左边,提供接口的组件在右边,右边的组件中将包含所使用函数的代码实现。最后简要介绍下nesC程序的编译,由于本文主要工作都在Crossbow公司开发的平台MoteWorks上进行。在MoteWorks框架内所有应用程序目录中都至少包含5个文件:1. Makefile2. Makefile.Component3. 使用nesC编写的应用程序配置文件4. 使用nesC编写的模块5. 说明文档 。Make 工具最主要也是最基本的功能就是通过makefile 文件来描述源程序之间的相互关系并自动维护编译工作。而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。在顶层配置文件中则描述了各组件之间的连接情况,模块中则是函数的具体实。最后在MoteWorks的shell中输入 make re|install, ,Platform = mica2, ormicaz, mica2dot, or IRISProgrammer = mib510, ormib520, oreprb (= mib600)根据所使用硬件的不同选择不同的平台和网关板,本文使用IRIS节点和MIB520网关板。MIB520的COM端口可以手动指定,本文中端口号为3、4。2.3.4 节点层当数据采集流程开始时,首先由网关节点接收来自服务器端的命令参数。收到参数后网关节点进行初始化。随后网关节点对整个无线传感器网络广播唤醒消息。收到唤醒消息的节点将开启传感器电源,进行采样,收集到的数据将存入节点上的RAM。随后采集完毕的节点会向网关节点发送采集完成消息,随后网关节点发送上传数据命令收集数据。数据上传完毕后节点关闭传感器电源并进入休眠状态。节点上的程序由VibrationBase和VibrationEnd构成,分别运行在基站和终端节点。VibrationBase部分包含CXL10GP3的驱动程序,运行在XM2110节点上并管理数据采集和对采集到的数据加时间戳。随后将采集到的数据发送至网关节点也就是VibrationBase运行的地方。Base部分主要负责接受数据采集的命令及参数,收到命令后网关节点将逐一唤醒传感器节点并进行时间同步(即使用网关时钟时间刷新节点时钟)。同步完成后发送采集命令,当收到采集完成消息时逐一收集节点数据。收集完数据后传感器节点将再次进入睡眠状态,网关节点随后将收集到的数据通过USB串口送至计算机终端。(关于采集部分的技术将在第3章详细论述)2.3.5 中间层中间层的程序主要是Crossbow公司的XServe软件,我们主要通过XServe的命令窗口输入运行命令及参数。XServe主要功能如下:1. 支持文件、数据库、XML的数据解析和转发2. 三种数据转发方式 转发串行数据流 浏览器接口 网络接口3. 报警功能4. 空中编程接口5. 健康诊断功能本文将使用其XML数据解析和转发的功能,运行XServe时通过键入命令 xserve s=/dev/ttyS5 b=115200 xmlc xmlport=9005 c 使得获得的数据以XML数据流的形式写入9005端口。我们将监听此端口并将捕获的数据转换为json格式并使用HTTP协议传输至网页显示。2.3.6 客户端客户端网站是由实验室学长开发的一套收集传感器节点数据并进行分析和深入挖掘的系统Sensor information web。Sensor information web有三大主要功能:1. 为用户提供传感器网络数据收集、存储、共享、可视化以及传感器节点的控制。 2. 提供restful webservice api,允许用户查询、操作系统中的数据。用户在注册时,系统会为其分配一个授权码,基于该授权码,用户可以注册自己的传感器节点、上传传感器收集的数据、在电子地图上查看以图表的方式显示的数据等。3. 系统在web界面上提供简单的交互界面,允许用户通过相关命令来控制传感器。系统和传感器之间采用webservice 的方式通信,这样可以屏蔽底层的差异,不用关心底层的通信细节;同时只要传感器网络通信的格式满足系统制定的标准,用户也可以很容易的将其集成到系统中。我的工作就是将采集到的数据封装在HTTP数据报中发送到该网站以供使用。 2.4 功能流程程序开始运行时由XServe端启动网关节点,然后由网关节点发送唤醒信号及命令参数启动感应器节点采集数据。程序流程图见图2.8: 图2.8 数据采集流程图 3 关键技术本章内容主要讲述节点层上的应用程序所使用到的技术,首先将详细的叙述振动数据采样部分的程序编写及其与基站模块的关系。随后将详细的介绍XMesh组网协议,XMesh是Crossbow公司开发的一套用来组建无线传感器网络的协议,其中包含了消息传递机制,应用程序ID等保证数据传输的关键概念,是对TinyOS系统原有功能的更改和增加,带有浓重的公司特色。最后是数据的处理部分,XServe收集上来的数据被我们转换为Json格式封装在http协议数据包中发送到Sensor information web中,其中格式转换使用了开源的模块。3.1 振动数据采集振动数据采集是本文的主要工作,要获得振动数据需要编写网关节点和传感器节点上的应用程序。其中难点是CXL10GP3加速计的驱动编写,因为之前没有接触过相关硬件驱动的编写,所以这部分内容完全没有头绪卡了很长时间才完成。3.1.1 加速计驱动CXL10GP3加速计是Crossbow公司生产的一种测量范围在10G的3轴加速计,采用微机电系统(MEMS)工艺加工而成。内置包括放大和滤波在内的信号调理电路,直接输出 05V的模拟信号。拥有5个针脚分别是power,gnd,x,y,z,使用时将power绑定到EXCITATION50接口。当定时器触发时call EXCITATION50.on()来打开加速计,对于x,y,z三个轴的数据采集则放在三个事件event result_t AccelX.dataReady(uint16_t data);event result_t AccelY.dataReady(uint16_t data);event result_t AccelZ.dataReady(uint16_t data),中实现。数据采集完成后,被写入XM2110的存储器中。XM2110节点将发送一条数据采集完成消息到网关节点,随后网关节点响应此消息并发送指令上传数据。3.1.2 数据采集模块及逻辑关系数据采集流程主要发生在基站节点与传感器节点之间,采集程序主要由三个组件通过配线而成。其中VibrationBase运行在基站上,VibrationEnd和SampleLogM运行在传感器节点上。VibrationBase模块负责传感器网络与中间层XServe的联系,主要负责接受XServe发送过来的命令参数然后对传感器节点发出相应的消息来控制数据采集。VibrationEnd模块在接到基站传来的参数以后,将对整个网络进行时间同步。同步完成后调用SampleLogM模块进行振动数据采样,SampleLogM模块中包含了CXL10GP3加速计需要用到的驱动。在接到Base模块的命令后对传感器加电,并按照接收到的参数定时采集指定数量的振动数据存储在节点的RAM中。采集完成后触发SensingDone()事件,这个事件将向基站发送消息告知数据采集完成。随后基站会发送命令由VibrationEnd模块将数据上传。模块间的关系如图3.1所示:图3.1 节点程序个模块关系图3.1.3 数据采集模块的技术要点我在编写数据采集部分的程序时花费了最多的时间和精力,这部分遇到的问题和难点也最多。首先是驱动编写的问题,由于之前从未接触过硬件驱动的编写。这部分工作一开始就进入了死胡同,面对一个加速计完全不知道从何着手。需要发送什么命令来启动它,怎么读数据,怎么控制它等等一系列问题。最后我向Crossbow公司的技术支持写信求助,他们给了我加速计的详细资料,解决了我大部分的疑问。使得我的工作可以继续进行下去。实际上根据已有的资料,我并不需要编写到汇编一级的代码。CXL10GP3自身就有调用的方法可以方便的获取其中的数据。其中power针有两个方法,分别是poweron( ),poweroff( )他们分别起到开启/关闭加速计电源的作用。对于其他的数据端口x,y,z分别有getdata( )方法可供调用。可以通过配置文件将这三个针脚分别绑定到模数转换板的对应针,当加速计开启时模拟信号将直接传送到对应的信号入口并转化为数字信号。其次是时间触发的问题,由前所述,nesC程序是基于事件驱动模式的程序。所以其中最重要的事件就是timer.fired( ),无线传感器网络由于电源有限的原因必须采用短期唤醒/长期睡眠的工作模式来保证更长的工作时间。所以在其上的应用程序都是随着时钟触发而执行的,如何合理的安排时钟到点时触发事件中的命令调用成为合理安排各接口中函数调用的关键。本文中时间触发的事件都安排在基站部分的程序中,当时钟触发时基站执行对应的操作如发起时间同步,发送采集数据命令等。而消息的发送则是放在各项操作的完成事件中,例如采样操作,当采样完毕时就会触发SensingDone( )事件,而在此状态下需要发送的消息就可以放在这个事件中执行。最后比较烦恼的问题就是Crossbow公司自定义的多种数据结构,例如TOS_Msg消息格式就是对TinyOS系统原有的消息结构进行了扩充后产生的。而在此数据格式基础上又衍生出许多种简化的变种。同时对于各种数据结构,Crossbow公司也有许多自定义的数据类型。这些类型都是用C语言的结构定义的,由于刚开始接触时不熟悉经常为了找一个数据的定义翻遍整个.h文件。这大大拖延了整个工作的进展速度。整个毕设过程中2/3的时间花在了学习Crossbow公司的各项技术手册,学习TinyOS/nesC语言和熟悉理解样例程序的过程中。3.2 XMesh网络协议3.2.1 XMesh简介XMesh 是美国Crossbow 公司为无线传感器网络开发的网络协议,它具有多跳、ad-hoc 和Mesh 网的全部特征。XMesh 网络可以使用传感器节点通过多跳技术将数据传送到网关节点位置。这种多跳技术可以有效地拓展无线通信距离并且减少传送消息时的功耗。Crossbow 公司将XMesh 协议封装成一个软件库,并且使用TinyOS 操作系统运行在嵌入式设备上。通过XMesh 的网络协议可以将数据路向上发送到基站,也可以向下发送到各个独立节点。在传送数据的同时还提供了两种QoS(Quality of Service)来保证数据传输的可靠性,第一种称为尽力交付(连接层的确认),第二种称为保证交付(端到端的确认).XMesh 的网络协议包含了许多功能,例如:低能耗监听数据、时间同步、睡眠模式、任何节点到基站节点和基站节点到任何节点的路由等。还有很多特点都是为传感器网络量身打造的。例如在低功耗模式时电流可降低至220A,网络时间同步可以精确到1ms8。3.2.2 XMesh中的消息结构XMesh中的消息机制之基于TinyOS建立的,在TinyOS消息的基础上增加了额外的信息,是TinyOS消息的扩展。其中定义了一种非常重要的数据结构即:TOS_Msg消息它里面包含了协议的各个字段和用来装载用户数据的区域,使用时只需要调用XMesh提供的接口即可方便的使用10。表3-1 TOS_Msg的数据结构类型名字描述unit16_t地址目的地地址unit8_t类型AM type;定义消息类型unit8_t群AM群unit8_t长度剩余消息部分的长度unit16_t发送地址发送这条数据的节点地址unit16_t源地址产生这条消息的节点地址unit16_t队列号消息队列号unit8_t套接字应用程序IDunit8_t数据负载unit16_tCRCCRC检验码3.2.3 XMesh 消息APIXMesh可以传送上传数据流(自节点到基站)和下行数据流(自基站到节点)。下行数据流使得在XMesh中自基站到节点的有效率的数据交换成为可能。下行数据流使用的路由路径必须与上传数据包中记录的上传路由路径完全一样,因此下行数据流只有在发生了一个上传数据流后才能使用。消息可以使用两种QOS(Quality of service)级别发送:1. 连接层确认:这种方式在发送者没有收到ACK消息时提供数据的重新发送。此方式并不保证一个多跳的消息能够成功由节点发送到基站,使用连接层确认的方式是必须在低耗能模式下工作并且并不需要100%的数据传递率的系统的最好选择。2. 端到端确认:这种机制将连接层确认和端到端确认结合在一起,对于上传流数据基站将返还一个ACK到源节点。对于下行数据流基站也将接到目的节点的ACK。XMesh允许用户检测消息是否需要重新发送,与连接层确认相比此种模式将消耗更多的能源和占用更多的无线电带宽。对于任何数据传输使用者都可以任选端到端确认或者连接层确认。XMesh同时提供了一系列的TinyOS数据和接口使得用户可以配线TinyOS组件并且在他们的应用程序中调用这些组件。3.2.4 Active Messaging和APP_IDTinyOS之前使用了一种AM参数来作为TOS消息的服务/应用程序识别ID。这使得用户可以在他们的应用程序中向不同的服务发送消息。而在XMesh中这个参数被封装使得用户不能使用这个参数。相应的XMesh使用App_ID来提供类似的服务,原有的AM参数在XMesh内部使用(无线电层,路由层,传输层)。APP_ID使得用户可以使用同一个AM参数向不同的服务发送消息。XMesh同时提供了MhopSend/receive接口来发送/接收消息,实际上用户只能在这个接口中使用APP_ID。APP_ID将作为这个发送/接收接口的参数来使用,其中1127号留给用户使用,128255号被Crossbow公司预留。当调用MhopSend接口发送数据时XMesh会根据调用时的模式参数决定AM类型,相应的AM类型被存在TOS消息头部的type中,APP_ID存在套接字中。在这里我们可以看到Crossbow公司已经抛弃了TinyOS原有的消息机制,取而代之的是封装起来的XMesh软件包。新的应用程序ID在本文的工作中起到了关键的作用,本文中无线传感器网络的数据都将通过XMesh来发送。使用XMesh提供的发送接口和接受接口,通过APP_ID来识别不同的应用程序消息在无线传感器网络的组网阶段和消息广播中起到关键性的作用。保证了不同层次不同群的节点可以有序的传送振动数据,使得无线传感器网络稳定有序的运行。3.3 数据处理传感器节点和网关节点上传的数据经过MIB520的COM串口上传至计算机。其中振动数据以二进制存储在消息中,XServe接收到消息后根据提供的XML格式文档解析数据。并将解析后的数据显示在cigwin中。本文定义的XML格式文档如下:XField name=amtype type=uint8 length=1 byteoffset=2/ 每个节点上传之前将先报告其节点id,所属群,端口号及返回数据类型,然后传送5组数据。在XServe端键入对应的命令即可选择将数据存入数据库,写入XML文档,或者发送到其他端口等。我们原打算将数据写入数据库然后再读取数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论