视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
无线传感器网络实验报告
2025-10-04 09:49:07 责编:小OO
文档
无线传感器网络实验报告

Contiki mac协议与xmac协议的比较

1.简介

无线传感器网络(wireless sensor networks, WSN)节点由电池供电,其能力非常有限,同时由于工作环境恶劣以及其他各种因素,节点能源一般不可补充。因而降低能耗、延长节点使用寿命是所有无线传感器网络研究的重点。 

    WSN中的能量能耗主要包括通信能耗、感知能耗和计算能耗,其中通信能耗所占的比重最大,因此,减少通信能耗是延长网络生存时间的有效手段。同时,研究表明节点通信时Radio模块在数据收发和空闲侦听时的能耗几乎相同,所以要想节能就需要最大限度地减少Radio模块的侦听时间(收发时间不能减少),及减小占空比。 

    传统的无线网络中,主要考虑到问题是高吞吐量、低延时等,不需要考虑能量消耗,Radio模块不需要关闭,所以传统无线网络MAC协议无法直接应用于WSN,各种针对传感器网络特点的MAC协议相继提出。现有的WSN MAC协议按照不同的分类方式可以 

分成许多类型,其中根据信道访问策略的不同可以分为:

X-MAC协议

X-MAC协议也基于B-MAC协议的改进,改进了其前导序列过长的问题,将前导序列分割成许多频闪前导(strobed preamble),在每个频闪前导中嵌入目的地址信息,非接收节点尽早丢弃分组并睡眠。 

X-MAC在发送两个相邻的频闪序列之间插入一个侦听信道间隔,用以侦听接收节点的唤醒标识。接收节点利用频闪前导之间的时间间隔,向发送节点发送早期确认,发送节点收到早期确认后立即发送数据分组,避免发送节点过度前导和接收节点过度侦听。 

X-MAC还设计了一种自适应算法,根据网络流量变化动态调整节点的占空比,以减少单跳延时。 

优点: 

X-MAC最大的优点是不再需要发送一个完整长度的前导序列来唤醒接收节点,因而发送延时和收发能耗都比较小;节点只需监听一个频闪前导就能转入睡眠。 

缺点: 

节点每次醒来探测信道的时间有所增加,这使得协议在低负载网络中能耗性比较差。而且分组长度、数据发送速率等协议参数还需进一步确定 

X-MAC原理图如图3所示:

ContikiMAC协议

一.ContikiMAC协议中使用的主要机制:

1.时间划分

2.快速睡眠

3.锁时优化

ContikiMAC只使用了异步的机制,没有标识信息也没有附加的消息头,它的数据也都是普通的链路层消息。

时间划分: 

ContikiMAC协议具有一个基于传输过程中精确时间度量的、能量高效的唤醒技术。的唤醒技术利用一种价格低廉的CCA(空闲信道检测)机制来实现这种机制使用无线电收发器的RSSI(接收信号强度指示值)来判断指定信道的状态。 

ContikiMAC中的时间划分必须满足一系列的。如图4: 

 图4 ContikiMAC中的时间划分

要求:ta+td< ti< tc< tc+2tr< ts 

ti:每次数据传输之间的时间间隔 

tr:进行一次稳定的RSSI指示所需要的时间 

tc:两次CCA检测之间的时间间隔 

ta:手段数据包和发送ACK消息的时间间隔 

td:从接收节点那里成功检测到一个ACK消息所需的时间 

在IEEE 802.15.4标准下,不等式中一些变量被固化,如IEEE802.15.4标准定义的ta值为12个时间点我,在802.15.4中,一个时间单位是4/250ms.然后td=40/250,tr是由cc2420无线收发器的特性决定的,tr=0.192ms,不等式变为: 

0.352< ti< tc< tc+0.384 < ts 

给出了ts的下限,0.736ms(0.352+0.384),这也为我们的能传输的最小报文长度设了。对其它参数,contiki系统中使用时间参数配置为: 

ti=0.4ms tc=0.5ms ts=0.884ms

快速睡眠: 

contikiMAC中的并不实质性地检测数据传输,而只是检测无线信道的信号强度是否在特定的门限值之上。 

如果一个邻居节点在向当前的接收节点发送数据,接收节点应该保持唤醒状态来保证接收到完整的数据包,然后需要发送一个回执。检测到该数据包的其它节点则可以快速切换回睡眠状态。然而,潜在的接收节点并不能立即回去睡眠,因为它们必须保证接收到完整的数据包。在检测之后,最安全的保持唤醒状态的时间是tl+ti+tl这里表示最长数据包所需的传输时间。 

当由于检测到错误的无线噪声而唤醒时,的快速睡眠机制使潜在的接收节点可以早些进入休眠状态。这种优化机制利用了中的特定传输模式。

1.若CCA检测到活动,但信道活动状态的时间比tl还要长,说明CCA检测到的是噪声,节点返回睡眠

2.如果信道活动状态过程之后有一段比ti更长的静止,则返回睡眠。

3.

若活动状态后有一段正确的静止长度,但接收节点检测不到任何数据报文头,返回睡眠。 

快速睡眠如图5所示: 

 图5 快速睡眠

锁时优化(phase-lock): 

该机制类似于Wise-MAC,假设传感器网络中的每个接收节点都有一个周期的、稳定的唤醒时间间隔,则发送节点可利用接收节点的唤醒时间来优化传输过程,这就是锁时优化机制。 

当发送节点检测到从接收节点返回的回执消息时,它会记录下检测到的时间,并以此判断出接收节点的唤醒时间。由于接收节点必须保持唤醒状态来保证完整地接收报文,则发送节点可假设收到消息意味着发送节点在接收节点唤醒状态的时间窗内成功向其发送了一个数据包,由此发送节点便可以知道其唤醒时间。在发送节点了解其唤醒时间之后,发送节点便可以在接收节点应该是唤醒状态的时候向其传输数据包。 

Cooja仿真实验

1.我分别测试 4、8、12、16 个节点时, contikimac 和 xmac在能量消耗和丢包率两方面的特点。

2.以下是4个节点时的截图:

Contiki

 Xmac

3.以下是八个节点的截图:

Contiki

xmac

4.以下是12个节点时的截图:

Contiki

Xmac

5.以下是16个节点时的截图:

contiki

Xmac

6.将文件中的数据导出,然后用下列程序分析:

1. (void)setDownloadProgressBlock:(void (^)(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead))block;     方法,在block中计算数目。    

[html] view plain copy

1.在计算sending和got数目需要自己写一个downTask类,负责记录。downTask主要代码来源网点击打开链接 或 http://doc.okbase.net/conslee/archive/126370.html 

[html] view plain copy

1. style="font-family: Arial, Helvetica, sans-serif;">connectionOperation = [[AFURLConnectionOperation alloc] initWithRequest:request];  

[html] view plain copy

1.    [connectionOperation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {  

2.//        NSLog(@"bytesRead:%zi", bytesRead);  

3.//        NSLog(@"totalBytesRead:%zi", totalBytesRead);  

4.//        NSLog(@"totalBytesExpectedToRead:%zi", totalBytesExpectedToRead);  

5.          

6.        weakSelf.downTask.totalReadPeriod += bytesRead;  

7.        weakSelf.downTask.totalRead += bytesRead;  

8.        NSDate *currentDate = [NSDate date];  

9.        if ([currentDate timeIntervalSinceDate:weakSelf.downTask.oldDatePeriod] >= 1) {  

10.            double speed = [weakSelf.downTask getSpeedWithDate:currentDate];  

11.              

12.            [weakSelf.gaugeView setGaugeValue:speed animation:YES];  

13.            NSString *unit = nil;  

14.            if (speed > RATIO) {  

15.                unit = @"M";  

16.                speed = speed / RATIO;  

17.            }  

18.            else {  

19.                unit = @"KB";  

20.                speed = speed;  

21.            }  

22.            NSLog(@"current speed:%f %@", speed, unit);  

23.            weakSelf.labSpeed.text = [NSString stringWithFormat:@"%.2f %@", speed, unit];  

24.            //NSLog(@"totalBytesRead:%zi", totalBytesRead);  

25.        }  

26.          

27.    }];  

7.之后我发现其实不用程序直接用记事本计数就可,并且还有很多简便方法。

8.实验得到的结果数据如下:

9.能量消耗部分截图.

10. 总结

实验描述了无线传感器网络协议的ContikiMAC和xmac的区别。本次试验表明,Sink 节点的能量消耗比其他的节点的要大,平均消耗并没有很大变化;随着节点的增多,两个协议的丢包率都增高,表现优于 contiki似乎要优于xmac,所以细节和实验论证MATLAB绘图有些许瑕疵,但是实验的大体和步骤都做了一遍,实验锻炼了动手能力,感觉这门课有趣。下载本文

显示全文
专题