微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 传感器 > 一种无线传感器网络CSMA协议的设计与实现

一种无线传感器网络CSMA协议的设计与实现

时间:02-14 来源:3721RD 点击:

包的倒数第二个字节(FCS域)自动填充接收时的RSSI值,因此busyRSSI值就无条件地得到了;而在刚接收完数据包后信道一般都是空闲的,所以这时立即读取当前的RSSI值,就可以得到noiseRSSI值。为避免例外,可将得到的noiseRSSI值与minSignal进行比较,如果大于等于minSignal就丢弃。

在获得busyRSSI和noiseRSSI后就对其进行统计操作,为实现这个目的需要维护一个统计变量avgSignal,用来统计所有的busyRSSI值。avgSignal的初值等于minSignal的初值即初始阈值,并按1/4的权重进行统计,即avgSignal = (avgSignal1) + ((avgSignal + busyRSSI)2)。noiseRSSI的值并不需要统计,这是因为读出noiseRSSI的值很稳定几乎不变。

noiseLevel阈值的更新相对简单,因为噪声信号强度十分稳定,因此不必对noiseRSSI做统计,每次读取noiseRSSI后可直接对noiseLevel进行更新。更新规则也是采用1/4权重,即noiseLevel = (noiseLevel  1) + ((noiseLevel + noiseRSSI)  2)。

minSignal阈值需要针对两种互补的情况来进行更新调整。第一种情况是一段时间内的采样结果全是信道空闲,说明所有的采样值都小于minSignal,因此有可能minSignal的值过高,应对其调整将其适当降低。该情况在监测信道结果为空闲时触发更新,更新方法是直接利用当前的busyRSSI来更新;只要busyRSSI的值小于当前的minSignal值,那么就将busyRSSI的值作为最新的minSignal值。这样做是因为在busyRSSI的信号强度下已经能够接收数据了,而busyRSSI又比当前的minSignal要小,所以更接近实际的阈值。

第二种情况是对第一种情况的补充。在做了第一种情况的修改后,如果长时间内监测到的都是信道繁忙(如载波监听几次回退后都返回繁忙),那么就可能是minSignal的值设置得太低,因此要适当调高该值,以避免使用第一种更新方式后由于设置的minSignal值太低而导致不能使用信道的情况。该情况提供一个接口由上层(MAC层)来调用更新。更新需要借助统计量avgSignal,更新的伪代码如下(其中initBusySingal指的是minSignal的最初值)://如果minSignal大于或等于初值,就说明没有进行第一种更新,所以没有进行第二种更新的必要

if (minSignal < initBusySignal){//更合理地提高minSignal值,不能一下将minSignal大幅度提高,且要保证更新后minSignal比initBusySignal小

if (avgSignal < initBusySignal){

minSignal = (minSignal + avgSignal)  1;

}

else{

minSignal = (minSignal + initBusySignal)  1;

}

}

initBusySignal的选择将在后面介绍,它的选择对更新机制尤为重要。因为minSignal的更新机制建立的基础就是initBusySignal非常接近实际临界值。initBusySignal本身也是经过大量测试后选择的一个信道活动最小强度值,而它肯定会大于(最小等于)实际的临界值,所以minSignal更新后应该比initBusySignal小才对。

3.2 信号强度阈值初始值的选择

信号强度阈值的初始值必须根据实际测试岀的大量强度值来设定,如果设置失误,将导致信道状态判断不准确。本文假设两个初值分别是initNoiseSignal和initBusySignal。下面给出部分测试强度的数据,如表1所列。测试时使用两个节点,且两个节点都是使用新电池(即电源充沛)。表中,"阻隔"指的是一堵大约10 cm厚的墙。

表1 信号强度测试数据

在双方节点能通信的前提下,本文测到的busyRSSI的最小值为0x54。根据上一小节的论述,initBusySignal的值可以略高,但因为该值是在电量充足且有阻隔的情况下测试岀的最小强调值,因此可以直接取为busyRSSI的最小值,即initBusySignal的值设置为0x54。对于initNoiseSignal的取值,从表1可以看出,检测到的RSSI值非常稳定,信道空闲时噪声强度幅度不大,因此取值比0x4D略大就可以了。本文中initNoiseSignal取值为0x4E。

3.3 本文实现的信道监测机制的优点

本文实现的信道监测机制比较完善且十分灵活。完善是指信道活动状态判定规则十分完备,不仅有基本判定和扩展判定,而且还有阈值更新机制,进一步确保了判定结果的正确性;灵活是指向调用方提供了采样窗口数的设置,使得调用方可以在每次监测时使用不同的采样窗口数,可以被LPL、BMAC等有特殊要求的基于竞争的MAC协议直接调用。

4 CSMA协议的实现

本文实现的CAMA协议是基于使用广泛的非持续性CSMA协议的,即节点在发送数据包之前先监测信道,如果监测到信道空闲,则该节点就自己开始发送数据包。反之,如果监测结果为信道繁忙,即信道已经被邻居节点占用,则该节点回退一段随机时间后,再次开始监测,重

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top