期末总结.docx
《期末总结.docx》由会员分享,可在线阅读,更多相关《期末总结.docx(19页珍藏版)》请在冰点文库上搜索。
期末总结
基于真实平台的无线传感器网络测量研究
(计算机技术1班,席望,S1210W117)
摘要:
无线传感器网络是目前网络的一个研究热点,在真实平台下的测量使得数据和实验更具备说服力,本文首先对无线传感器网络和真实平台进行了概述,然后对测量所用到的程序中关键部分进行了说明和分析,包括数据结构定义、包发送、接收和中转部分的算法阐述,再通过测试数据包的传输,对节点数据处理时序进行了测量,设计了数据碰撞实验、多跳变速率实验来对网络质量进行测量和研究,并得出结论。
关键词:
无线传感器网络;真实平台;网络测量;渐变多速率;
Abstract:
Wirelesssensornetworkisthenetworkofaresearchfocus,intherealplatformmakesthemeasurementdataandexperimentmoreconvincingenough,basedonwirelesssensornetworkandrealplatformarereviewed,thenthemeasurementusedintheprogramofthekeypartofthedescriptionandanalysis,includingthedatastructuredefinition,packetsending,receivingandtransferpartofthisalgorithm,andthroughthetestdatapackettransmission,thenodedataprocessingsequenceforthemeasurement,designthedatacollisionexperimentandjumpvariablerateexperimentstothenetworkqualitymeasurementandresearch,andconcluded.
Keywords:
WirelessSensorNetwork;RealPlatform;NetworkMeasurement;GradientMulti-rate;
1引言
1.1无线传感器网络概述
无线传感器网络研究始源于上世纪90年代,因对网络的自组织性,可扩展性,灵活性等提出了要求,因而衍生出了无线传感器网络WSN(WirelessSensorNetwork)。
它是微电子技术,无线通信技术,嵌入式技术发展结合的产物,是一个学科高度融合,知识高度集中的前沿研究领域。
无线传感器网络由具有感知、数据处理、无线通信功能的无线传感节点协同工作而形成[1]。
无线传感器网络中节点被随机或者固定地部署在监测区域内,以自组织方式组网,协作感知,采集网络数据。
网内节点可对数据进行压缩与汇集,通过多跳传输监测数据,最终传输到管理中心,协作完成特定任务。
无线传感器网络同Adhoc网络一样可不依赖于固定基础设施,能自组织成网,具有快速展开、抗毁性、实时性强等特点。
1.2真实平台概述
无线传感器网络节点硬件:
中央处理器为ATMEGA88,无线收发芯片为德州仪器CC系列中的CC1100芯片。
CC系列的芯片根据频段范围划分为两类,一类工作在1GHzISM频段附近,如芯片CC430,CC1100,CC1100E,CC1101,CC1111,CC1150。
一类是工作在2GHz频段,如CC25XX,CC24XX系列。
这些芯片主要在工作频率,内核方面如FLASH,ROM大小,是否集成MCU,是否支持ZIGBEE协议栈,接收灵敏度,功耗方面存在差异。
CC1100是CC系列的一种,最大的特点是低功耗、低成本、无线射程远、高灵敏度,它是工业级的芯片。
它可工作在多个ISM频段,如315/433/868和915MHz。
CC1100的RF收发器集成了一个高度可配置的调制解调器。
这个调制解调器支持不同的调制格式2FSK,GFSK,MSK,支持数据传输率最高可达500kbps。
CC1100为数据包处理、数据缓冲、突发数据传输、清除信道评估、连接质量指示和电磁波激发提供广泛的硬件支持。
微处理器ATMEGA88:
它是一种低功耗、高性能CMOS8-bit、基于单片机的AVR。
它有8K字节的系统内可编程Flash存储器,1K字节的片内SRAM,512K字节的EEPROM,EEPROM可写/擦除周期10,000闪光/100,000。
1.3本文研究内容
本实验需要通过程序实现数据收发,通过测量数据在两个多或多个节点之间的传输、转发和接收情况,对硬件进行实时测量,分析在不同参数和速率下链路的情况。
因此我们需要有一段数据并使其能够在节点间进行发送和接收来作为测试包,在节点工作时对相应参数进行测定,并采用不同情况下的链路来进行检测并进行分析。
我的实验内容和方法包括对硬件进行编程,使得atmega88+cc1100的节点平台能够成功发送和接收测试数据。
使用逻辑分析仪、示波器对真实无线传感器网络节点数据处理过程时序进行测量,对节点内部SPI总线数据传输,串口数据传输以及无线数据传输过程进行时序定位与分析;基于精确时序间隔,设计不同情况的数据碰撞实验,对碰撞数据进行了测量与特性分析。
设定不同速率、频率、包长等情况来进行检测和对比。
1.4本文结构安排
在本文的第1部分,先对题目进行了解析,概述了无线传感器网络和真实平台,然后阐述了本文的研究内容;在第2部分,为突出课程需要,将对程序的实现部分进行详细分析,特别对于数据结构与算法思想;文章的第3部分对实验进行了设计,最后在第4部分对全文进行了总结。
2实验程序部分
2.1数组定义部分
本实验重在测量部分,因此程序部分是作为一个辅助,在测量网络质量时,需要一段数据包来检测,我们就用最简单的数组来作为测试包。
在代码中数组部分如下:
数据需要经过发送、中转和接收。
在首字节写入了包长,开头和结尾设置了特殊值便于测量观察,主体部分为0xAA,以0xA5开头,以0xA3结束,可在图3.2(b)中看到部分效果。
INT8UTxBuf[30];//定义发送缓存区为30字节,如果需要更长的数据包,可自行设置;
INT8URxBuf[30];//接收缓存区;
voidtimer0_ovf_isr()//从中断进入程序发送部分;
{
TCNT0=0x5D;//配置发包率,4PPS1M;
TxBuf[0]=0x1E;//写入包长,发送30个字节数据;
TxBuf[1]=0xA5;//开头(方便识别);
TxBuf[2]=0xA5;
TxBuf[3]=0xAA;
TxBuf[4]=0xAA;
TxBuf[5]=0xAA;
TxBuf[6]=0xAA;
TxBuf[7]=0xAA;
TxBuf[8]=0xAA;
TxBuf[9]=0xAA;
…
TxBuf[26]=0xAA;
TxBuf[27]=0xAA;
TxBuf[28]=0xA3;//结尾(方便识别);
TxBuf[29]=count1;//在包头和包尾设置特殊数值便于测量观察;
count1++;//计数用于可限制发送总次数,比如在500次后停发;
LED0_ON;
LED1_ON;
halRfSendPacket(TxBuf,30);//调用发送程序发送30个字节;
delay_us(1000);
LED0_OFF;
LED1_OFF;//以灯的闪烁在直观表现发包,可体现程序运行位置;
2.2数据发送部分
算法描述:
根据单片机的工作原理,我们靠读取电平状态判定运行程序,向发送缓存区写入要发送的数据,进入发送模式后,轮询电平情况,当有低电平到来时,执行发送函数,即将上述数组发送,完成后清空发送缓存区,进入信道空闲模式,等待下一轮发送。
voidhalRfSendPacket(INT8U*txBuffer,INT8Usize)
{
unsignedcharvalue;
halSpiWriteReg(CCxxx0_TXFIFO,size);//将缓存区大小写入缓存区寄存器;
halSpiWriteBurstReg(CCxxx0_TXFIFO,txBuffer,size);//写入要发送的数据;
halSpiStrobe(CCxxx0_STX);//进入发送模式;
while(!
(READ_CC1100_GDO0));
while(READ_CC1100_GDO0);//等待低电平;
halSpiStrobe(CCxxx0_SFTX);//清空发送缓存区;
halSpiStrobe(CCxxx0_SIDLE);//进入信道空闲模式;
}
2.2数据接收部分
算法描述:
进入接收模式后,判定接收缓存区中是否有数据,若接收字节数不为0,即有数据,则读出第一个字节,此字节为该帧数据的长度,判定该长度,若该长度小于等于接收数剧包的长度,则读出接收到的数据。
INT8UhalRfReceivePacket(INT8U*rxBuffer,INT8U*length)
{
INT8Ustatus[2];
INT8Uvalue;
INT8UpacketLength;
INT8Ulengthr=0;//修改
INT8Uj=0;
INT8Ui=(*length)*4;//具体多少要根据datarate和length来决定
halSpiStrobe(CCxxx0_SRX);//进入接收模式,写命令函数,对寄存器写;
if((halSpiReadStatus(CCxxx0_RXBYTES)&BYTES_IN_RXFIFO))//如果接的字节数不为0
{
packetLength=halSpiReadReg(CCxxx0_RXFIFO);//读出第一个字节,此字节为该帧数据长度
if(packetLength<=*length)//如果所要的有效数据长度小于等于接收到的数据包的长度
{
halSpiReadBurstReg(CCxxx0_RXFIFO,rxBuffer,packetLength);//读出所有接收到的数据
return1;}
else{
*length=packetLength;//把接收数据长度的修改为当前数据的长度
halSpiStrobe(CCxxx0_SFRX);//清空缓存区
return0;
}
}
else
return0;
}
2.3数据转发部分
算法描述:
该部分算法与发送部分相似,为方便测量,中转节点在接收到数据后,将接收缓存区中的数据加1后存入发送缓存区的数组空间中,然后再次调用发送函数,将修改后的数组发送,由于在设置中配置了地址滤波,因此中转的数据只会被制定的下一个节点接收,我们可以在对应下一跳节点中对接收数据进行测量,来判定程序运行情况。
{
{
LED0_ON;
LED1_ON;
TxBuf[0]=0x05;//发送节点地址
TxBuf[1]=++RxBuf[1];//0xAA修改为0xAB
TxBuf[2]=++RxBuf[2];//0xAA
TxBuf[3]=++RxBuf[3];//0xAA
TxBuf[4]=++RxBuf[4];//0xAA
TxBuf[5]=++RxBuf[5];//0xAA
……
TxBuf[25]=++RxBuf[25];//0xAA
TxBuf[26]=++RxBuf[26];//0xAA
TxBuf[27]=++RxBuf[27];//0xAA
TxBuf[28]=0x02;//从机地址
TxBuf[29]=RxBuf[29]
}
halRfSendPacket(TxBuf,30);//发送
LED0_OFF;
LED1_OFF;
}
3实验设计与运行部分
3.1基于真实平台的网络测量
本文将借助有效的网络测量工具在基于真实平台上进行网络测量,主要包括两个方面:
使用逻辑分析仪、示波器对真实无线传感器网络节点数据处理过程时序进行测量,对节点内部SPI总线数据传输,串口数据传输以及无线数据传输过程进行时序定位与分析;基于精确时序间隔,设计不同情况的数据碰撞实验,对碰撞数据进行了测量与特性分析。
通过基于真实平台的测量与总结,为无线传感器网络的实际应用以及仿真研究提供依据和参考。
3.2真实传感节点数据处理时序测量
我们通过逻辑分析仪对MCU侧SPI接口电平进行测量,实物连接如图3.1所示:
图3.1逻辑分析仪信号线与节点引脚连接实物图
通过在PC上运行逻辑分析仪数据采集软件可显示硬件平台各引脚的电平变化信息如下图3.2所示。
图3.2所示左边“通道名称”处显示为逻辑分析仪信号线引脚与真实节点MCU侧SPI引脚相对应连接的命名,各路信号线组合成SPI数据总线,运行SPI总线协议。
图右侧反映总线各路信号电平变化信息。
下侧“解码的数据”为解码的数据信息,根据需要可选择特定的信号线进行解码。
根据“采样计数”与“采样频率”可直接较精确计算出SPI数据处理时间,包括命令与数据。
图3.2(a)逻辑分析仪数据采集软件界面示意图
图3.2(b)逻辑分析仪测量数据时发送数据时放大的效果
各节点数据处理过程:
发送节点处理包的过程包括MCU写入数据到CC1100以及无线部分数据传输;中转节点开启了地址滤波功能,只接收发给自己的数据。
在中转节点内部CC1100芯片将接收的数据通过SO传递到MCU,MCU对数据进行处理后通过PB3(MISO)引脚将数据传递给CC1100的SI,如图3.3所示。
待节点内部数据处理完毕并追加发送命令滤波0x35后,将开始无线部分数据的发送。
CC1100首先发送8字节的同步字节与前导数据,再继续发送发送缓存中数据(包括目的地址、数据长度、有效负载等)。
GDO0(PD3)在发送同步与前导间电平为低,待发送同步与前导发送完毕GDO0(PD2)由低变为高,发送发送缓存数据过程中GDO0(PD2)电平持续为高,直到数据发送完毕为止。
因此通过监视PD3引脚电平变化可间接观测无线数据的传输情况。
接收节点处理数据包过程包括接收数据,从CC1100接收缓存写入数据到MCU,以及串口传递数据。
图3.3CC1100与MCU(ATMEGA88)芯片引脚连接示意图
我们测量了不同长度数据包下各节点各部分数据处理过程的处理时间,如下表3.1与表3.2所示。
数据包总长度为40字节时,前导与同步码共8个字节,发送缓存共30字节,2字节的CRC信息。
数据包长度为72字节时,前导与同步码8个字节,发送缓存为62字节,2字节的CRC。
串口传输数据格式为每字节数据前后插入起始位、停止位各一位。
此处CC1100使用MCU提供的1MHz的内部时钟和4MHz外部时钟两种情况,无线数据传输速率为10kbit/s(kbps)。
表3.1发送节点数据处理实测与理论时间对比
处理长度
(byte)
处理数据过程
(1MHZ时钟)
采样计数
采样频率
(khz)
测量时间
(us)
理论时间
(us)
30
MOSI(MCU->CC1100)
1920
200
9600
—
8
发送前导与同步
1280
200
6400
6400
32
发送缓存数据与CRC
5300
200
26500
25600
表3.2接收节点数据处理实测与理论时间对比
处理长度
(byte)
处理数据过程
(4MHZ时钟)
采样计数
采样频率
(khz)
测量时间
(us)
理论时间
(us)
30
MISO(CC1100->MCU)
1473
800
1841
—
36
串口传输
3627
200
18135
18750
表3.2没有列出无线数据接收部分时间,同种数据传输速率下接收无线数据时间与发送数据时间相同。
通过同时监测发送节点与中转节点数据处理过程,发送节点无线数据发送与中转节点的无线数据接收几乎是同时进行的。
从上表3.1与表3.2得出通过逻辑分析仪捕获节点数据处理过程实测时间与理论计算时间基本匹配,误差较小。
同时得出:
对比表3.1与表3.2第一项所示,当节点选用内部时钟为1MHZ时,节点内部SPI总线数据处理时间在整个数据包处理时间占比例较大,如中转节点中比例值为21.3%,当选用4MHZ时钟时,可有效减少节点内部处理时间,中转节点中比例值降为5.3%。
3.3数据碰撞实验设计测量与分析
无线链路中数据包丢失有两种情况:
一种是由于无线链路时变性,信号衰落,信号在接收端处不能正确接收,第二种是数据碰撞。
对于冲突引起的数据包丢失,发送节点需采取退避算法,相应改变拥塞窗口大小等。
对于弱信号引起的数据包丢失,则可以降低数据传输速率、提高发送功率来增加传输的鲁棒性。
正确区分数据丢失的原因,协议上层才能作出正确的响应,有效避免网络性能下降。
如错误的把由于数据碰撞引起的数据丢失归因于弱信号,则会选择降低数据传输速率。
低的数据传输速率传输数据,占用无线链路时间增大,引发数据碰撞的概率增大,使得碰撞现象既得不到缓解,反而越发严重。
因此我们将基于真实平台对无线链路数据碰撞情况进行实验测量与分析。
通过前部分借助逻辑分析仪对数据处理时序进行的测量与分析,我们设计了基于真实平台精确时序间隔的数据碰撞实验,对碰撞中网络数据所表现的特性进行分析。
图3.4碰撞实验逻辑拓扑图
如上图3.4所示,我们设置了简单的碰撞实验。
node1节点为发送节点,中转节点1与中转节点2同时对node1的数据进行接收。
sink为接收节点,对两中转节点的数据进行接收。
中转节点与接收节点都开启地址滤波的功能。
我们将设置不同程度的数据碰撞实验,即通过改变两中转节点对同时接收的数据的转发时间差来实现。
通过逻辑分析仪,我们对设计的四种不同程度的数据碰撞情况进行了数据捕获。
下图3.5(a)至(c)所示,显示为数据包大小为40字节四种不同转发时序差情况下,两中转节点四线SPI接口以及PD3引脚电平变化时序跟踪图,在此省略了数据包长度为72字节情况四种情况的时序图。
图3.5(a)至(c)上半部分显示为中转节点2的数据,下半部分显示中转节点1的数据。
图3.5(a)为两节点数据完全碰撞实验,即两中转节点对同时收到的数据同时进行转发。
图3.5(b)至(c)为不完全碰撞实验即:
一中转节点先于另一中转节点进行数据转发,他们开始转发数据的时序差分三种:
相差发送同步与前导的时间,相差将近发送一数据包长度时间。
(a)同时数据转发时序跟踪图
(b)相差同步与前导时间数据转发时序图
(c)相差约一个数据包时间数据转发时序图
图3.5两中转节点数据处理时序跟踪图
我们对发送不同大小数据包以及不同程度数据碰撞sink接收端数据进行统计分析。
为分析数据包长度对实验结果的影响,实验中数据包长度分两种,40字节与72字节长度数据包。
每运行一次实验,发送节点总共发送500个包,发送节点数据包产生率为每秒4个数据包(4pps)。
对于同样包达到率4pps下,发送节点发送72字节长度数据包,当信道存在数据碰撞时出现某节点长期独占信道的时间长,sink接收节点处容易且经常发生缓存溢出现象,致使sink节点不能正常工作。
因此在网络中,尤其是数据碰撞严重情况不宜传输长的数据包,否则会严重影响网络的吞吐量。
因此我们进行了4pps下数据包长度为40字节与2pps下数据包长度为72字节的碰撞实验。
(1)两中转节点几乎同时发送数据,以4pps传输数据包大小为40字节时,1号中转节点与2号中转节点的包接收率分别为6.60%与67.6%。
以2pps传输数据包大小为72字节时,1号中转节点与2号中转节点的包接收率分别为29.6%与21.2%。
(2)1号中转节点与2号中转节点相差约发送同步与前导时间先后进行数据转发时1号中转节点的同步与前导、目标地址数据的传输会受到碰撞,接收节点不能接收到节点1的数据,只能接收2号中转节点发送的数据。
(3)1号中转节点与2号中转节点相差约发送一个数据包时间,先后进行数据转发,此种情况,数据重叠发送的时间短即数据碰撞的程度低,尽管两节点的包接收率都未达到90%,但较前几种数据碰撞情况网络吞吐量更高,两节点获得的信道带宽更均衡,网络公平性更好。
从以上不同程度的碰撞实验结果分析得出:
数据碰撞发生时并不是系统不能获得吞吐量,对于完全数据碰撞,节点随机获得网络带宽,网络获得的总吞吐量小。
而对于不完全碰撞情况,网络会出现不公平性特点,往往只有一个或者固定的一个节点占用网络带宽。
无线网络中存在隐藏终端与暴露终端问题,对于上述不同程度的数据碰撞情况更符合网络存在隐藏终端而引起的数据碰撞情况,我们可以通过退避、合理调度方法来有效避免数据碰撞,通过改变数据包长度来降低数据碰撞的概率,改善节点硬件如提供多无线收发通道以提高数据碰撞时的网络公平性。
3.4多跳变速率实验设计测量与分析
在以下实验中,我们设置节点工作频率为468Mhz,节点通信功率为-20dbm,无线传输数据包长度为40字节,串口通信数据包长度为40字节。
实验一:
单跳链路数据传输速率特性分析
在单跳链路源节点与sink构成的系统中,测试了不同数据传输速率随通信距离和负载变化下的包接收率情况。
从下图3.6与图3.7所示为不同负载情况下,各速率随节点通信距离变化时系统包接收率。
实验得出在离sink节点近距离处5m到10m范围内,各数据传输速率的包接收率基本相等且高于95.0%。
随着距离和负载变化,各速率下系统包接收率表现了一定的差异,值都有下降。
总体情况,在各传输距离下,10kbps速率系统包接收率要高于其他速率时值。
在2pps情况下,10kbps与38.5kbps随着距离的变化,包接收率基本。
当增大数据流负载为8pps时,各速率随着节点传输距离的增加包接收率较轻负载时都有所下降,在10m-18m距离处100kbps发挥自己快速处理包能力的优势,相对2pps时的包接收率没有更大变化,接近38.4kbit/s时的值,且要优于76.8kbit/s。
但随着距离的增加,到20m以及更远处38.4kbit/s、76.8kbit/s较100kbit/s发挥速率自身传输距离更远和抗干扰能力强的优势,较100kbit/s时的包接收率高。
图3.6负载为2pps各速率下系统包接收率
图3.7负载为8pps各速率下系统包接收率
因此并不是任何情况下越高数据传输速率包接收率和性能比低数据传输速率好。
在距离sink节点近,且负载比较大时,高数据传输速率可以发挥快速传输处理包能力的优势,包接收率较高。
当数据传输距离比较远,且负载比较轻时低速率数据传输能提供更加可靠和稳定的数据传输,包接收率要优于其他高数据传输速率。
由此在整个系统中选择全高或者全低数据速率传输并不是合理的,系统中速率的合理分配受节点与sink节点的距离、单跳传输距离以及节点干扰区域范围内负载的影响,综合考虑时更能发挥高低数据传输速率的优势。
实验二:
两跳实验性能分析
拓扑结构如下图3.8所示,由四个节点