无线传感器网络实验报告Word格式.docx
《无线传感器网络实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《无线传感器网络实验报告Word格式.docx(11页珍藏版)》请在冰点文库上搜索。
X-MAC原理图如图3所示:
ContikiMAC协议
一.ContikiMAC协议中使用的主要机制:
1.时间划分
2.快速睡眠
3.锁时优化
ContikiMAC只使用了异步的机制,没有标识信息也没有附加的消息头,它的数据也都就是普通的链路层消息。
时间划分:
ContikiMAC协议具有一个基于传输过程中精确时间度量的、能量高效的唤醒技术。
的唤醒技术利用一种价格低廉的CCA(空闲信道检测)机制来实现这种机制使用无线电收发器的RSSI(接收信号强度指示值)来判断指定信道的状态。
ContikiMAC中的时间划分必须满足一系列的限制。
如图4:
图4ContikiMAC中的时间划分
要求:
ta+td<
ti<
tc<
tc+2tr<
ts
ti:
每次数据传输之间的时间间隔
tr:
进行一次稳定的RSSI指示所需要的时间
tc:
两次CCA检测之间的时间间隔
ta:
手段数据包与发送ACK消息的时间间隔
td:
从接收节点那里成功检测到一个ACK消息所需的时间
在IEEE802、15、4标准下,不等式中一些变量被固化,如IEEE802、15、4标准定义的ta值为12个时间点我,在802、15、4中,一个时间单位就是4/250ms、然后td=40/250,tr就是由cc2420无线收发器的特性决定的,tr=0、192ms,不等式变为:
0、352<
tc+0、384<
给出了ts的下限,0、736ms(0、352+0、384),这也为我们的能传输的最小报文长度设了限制。
对其它参数,contiki系统中使用时间参数配置为:
ti=0、4mstc=0、5msts=0、884ms
快速睡眠:
contikiMAC中的并不实质性地检测数据传输,而只就是检测无线信道的信号强度就是否在特定的门限值之上。
如果一个邻居节点在向当前的接收节点发送数据,接收节点应该保持唤醒状态来保证接收到完整的数据包,然后需要发送一个回执。
检测到该数据包的其它节点则可以快速切换回睡眠状态。
然而,潜在的接收节点并不能立即回去睡眠,因为它们必须保证接收到完整的数据包。
在检测之后,最安全的保持唤醒状态的时间就是tl+ti+tl这里表示最长数据包所需的传输时间。
当由于检测到错误的无线噪声而唤醒时,的快速睡眠机制使潜在的接收节点可以早些进入休眠状态。
这种优化机制利用了中的特定传输模式。
1.若CCA检测到活动,但信道活动状态的时间比tl还要长,说明CCA检测到的就是噪声,节点返回睡眠
2.如果信道活动状态过程之后有一段比ti更长的静止,则返回睡眠。
若活动状态后有一段正确的静止长度,但接收节点检测不到任何数据报文头,返回睡眠。
快速睡眠如图5所示:
图5快速睡眠
锁时优化(phase-lock):
该机制类似于Wise-MAC,假设传感器网络中的每个接收节点都有一个周期的、稳定的唤醒时间间隔,则发送节点可利用接收节点的唤醒时间来优化传输过程,这就就是锁时优化机制。
当发送节点检测到从接收节点返回的回执消息时,它会记录下检测到的时间,并以此判断出接收节点的唤醒时间。
由于接收节点必须保持唤醒状态来保证完整地接收报文,则发送节点可假设收到消息意味着发送节点在接收节点唤醒状态的时间窗内成功向其发送了一个数据包,由此发送节点便可以知道其唤醒时间。
在发送节点了解其唤醒时间之后,发送节点便可以在接收节点应该就是唤醒状态的时候向其传输数据包。
Cooja仿真实验
1.我分别测试4、8、12、16个节点时,contikimac与xmac在能量消耗与丢包率两方面的特点。
2.以下就是4个节点时的截图:
Contiki
Xmac
3.以下就是八个节点的截图:
xmac
4.以下就是12个节点时的截图:
Xmac
5.以下就是16个节点时的截图:
contiki
6.将文件中的数据导出,然后用下列程序分析:
1.
(void)setDownloadProgressBlock:
(void
(^)(NSUInteger
bytesRead,
long
totalBytesRead,
totalBytesExpectedToRead))block;
方法,在block中计算数目。
[html]
viewplain
copy
1.在计算sending与got数目需要自己写一个downTask类,负责记录。
downTask主要代码来源网<
a
target=_blank
href="
"
>
点击打开链接<
/a>
或
1.<
span
style="
font-family:
Arial,
Helvetica,
sans-serif;
connectionOperation
=
[[AFURLConnectionOperation
alloc]
initWithRequest:
request];
<
/span>
[connectionOperation
setDownloadProgressBlock:
^(NSUInteger
totalBytesExpectedToRead)
{
2.//
NSLog(@"
bytesRead:
%zi"
bytesRead);
3.//
totalBytesRead:
totalBytesRead);
4.//
totalBytesExpectedToRead:
totalBytesExpectedToRead);
5.
6.
weakSelf、downTask、totalReadPeriod
+=
bytesRead;
7.
weakSelf、downTask、totalRead
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:
animation:
YES];
13.
NSString
*unit
nil;
14.
(speed
RATIO)
15.
unit
@"
M"
;
16.
/
RATIO;
17.
}
18.
else
19.
KB"
20.
speed;
21.
22.
current
speed:
%f
%@"
speed,
unit);
23.
weakSelf、labSpeed、text
[NSString
stringWithFormat:
%、2f
unit];
24.
//NSLog(@"
25.
26.
27.
}];
7.之后我发现其实不用程序直接用记事本计数就可,并且还有很多简便方法。
8、实验得到的结果数据如下:
9、能量消耗部分截图、
10、总结
实验描述了无线传感器网络协议的ContikiMAC与xmac的区别。
本次试验表明,Sink节点的能量消耗比其她的节点的要大,平均消耗并没有很大变化;
随着节点的增多,两个协议的丢包率都增高,表现优于contiki似乎要优于xmac,所以细节与实验论证MATLAB绘图有些许瑕疵,但就是实验的大体与步骤都做了一遍,实验锻炼了动手能力,感觉这门课有趣。