<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 測試測量 > 設計應用 > 無(wú)線(xiàn)傳感器網(wǎng)絡(luò )CSMA協(xié)議的設計

無(wú)線(xiàn)傳感器網(wǎng)絡(luò )CSMA協(xié)議的設計

作者: 時(shí)間:2012-03-15 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/259207.htm

④ 如果m次擴展采樣,依靠前兩個(gè)規則仍然不能判斷信道狀態(tài),且最后一次擴展采樣的結果仍然介于兩者之間,那就使用統計值extCSVal來(lái)輔助判斷。規則如下:如果extCSVal> = ((minSignal + noiseLevel)1),那么就判定信道忙;反之,則判定信道空閑。

⑤ 最后是最壞的一種情況:當擴展采樣的最后一次采樣發(fā)生錯誤,讀取RSSI值失敗時(shí),并不知道信道的實(shí)際狀況,但也不能一直擴展下去,所以判斷為信道繁忙以避免出錯。

通過(guò)基本規則和擴展規則已經(jīng)可以得出一個(gè)準確性較高的信道活動(dòng)狀態(tài)判定,擴展規則彌補了基本規則可能會(huì )出現的錯誤。在實(shí)際的測試中,如果兩個(gè)閾值的初值選擇得很合適,那么一般并不會(huì )進(jìn)入擴展采樣。若閾值初值選擇得不貼切,如mingSignal初值過(guò)大,則noiseLevel初值過(guò)小時(shí)都會(huì )導致進(jìn)入擴展采樣。

這里還需要說(shuō)明的是m的取值。本文中采樣定時(shí)器設置為1 ms,即1 ms采樣一次。擴展采樣次數m取值越大,準確性自然就越高,但是整個(gè)網(wǎng)絡(luò )性能有所下降(花去的額外時(shí)間過(guò)多)。m的值也不能過(guò)小,不然extCSVal統計值就不能發(fā)揮其作用。由于本文使用的初始閾值是經(jīng)過(guò)大量測試確定的精確值(參照信號強度閾值初值的選擇),因此使用該初始閾值進(jìn)行的測試結果顯示: 只有極少情況進(jìn)入擴展采樣(約5 000次監測進(jìn)入一次擴展采樣)。鑒于這種實(shí)際情況,m的取值不需要很大,本文取其值為3。如果初始閾值不能精確設定,那么可將m值放大。

3 信號強度閾值的選擇和更新維護

從信道監測的基本規則和擴展規則可以看出,信號強度的兩個(gè)閾值對信道狀態(tài)的判定十分重要,因此這兩個(gè)閾值的初始值選擇必須十分慎重;而且必須要根據當前信道狀態(tài)動(dòng)態(tài)更新閾值的機制。

3.1 信號強度閾值的更新機制

閾值的動(dòng)態(tài)更新必須使用大量的實(shí)時(shí)RSSI值作為統計值,且需要把RSSI值分為兩類(lèi): 一類(lèi)是信道繁忙時(shí)的RSSI,本文稱(chēng)為busyRSSI;另一類(lèi)是信道空閑時(shí)的RSSI值,本文稱(chēng)為noiseRSSI。這兩個(gè)值可以在物理層每接收到一個(gè)數據包時(shí)獲取,因為CC2420接收到一個(gè)數據包時(shí)將在數據包的倒數第二個(gè)字節(FCS域)自動(dòng)填充接收時(shí)的RSSI值,因此busyRSSI值就無(wú)條件地得到了;而在剛接收完數據包后信道一般都是空閑的,所以這時(shí)立即讀取當前的RSSI值,就可以得到noiseRSSI值。為避免例外,可將得到的noiseRSSI值與minSignal進(jìn)行比較,如果大于等于minSignal就丟棄。

在獲得busyRSSI和noiseRSSI后就對其進(jìn)行統計操作,為實(shí)現這個(gè)目的需要維護一個(gè)統計變量avgSignal,用來(lái)統計所有的busyRSSI值。avgSignal的初值等于minSignal的初值即初始閾值,并按1/4的權重進(jìn)行統計,即avgSignal = (avgSignal1) + ((avgSignal + busyRSSI)2)。noiseRSSI的值并不需要統計,這是因為讀出noiseRSSI的值很穩定幾乎不變。

noiseLevel閾值的更新相對簡(jiǎn)單,因為噪聲信號強度十分穩定,因此不必對noiseRSSI做統計,每次讀取noiseRSSI后可直接對noiseLevel進(jìn)行更新。更新規則也是采用1/4權重,即noiseLevel = (noiseLevel  1) + ((noiseLevel + noiseRSSI)  2)。

minSignal閾值需要針對兩種互補的情況來(lái)進(jìn)行更新調整。第一種情況是一段時(shí)間內的采樣結果全是信道空閑,說(shuō)明所有的采樣值都小于minSignal,因此有可能minSignal的值過(guò)高,應對其調整將其適當降低。該情況在監測信道結果為空閑時(shí)觸發(fā)更新,更新方法是直接利用當前的busyRSSI來(lái)更新;只要busyRSSI的值小于當前的minSignal值,那么就將busyRSSI的值作為最新的minSignal值。這樣做是因為在busyRSSI的信號強度下已經(jīng)能夠接收數據了,而busyRSSI又比當前的minSignal要小,所以更接近實(shí)際的閾值。

第二種情況是對第一種情況的補充。在做了第一種情況的修改后,如果長(cháng)時(shí)間內監測到的都是信道繁忙(如載波監聽(tīng)幾次回退后都返回繁忙),那么就可能是minSignal的值設置得太低,因此要適當調高該值,以避免使用第一種更新方式后由于設置的minSignal值太低而導致不能使用信道的情況。該情況提供一個(gè)接口由上層()來(lái)調用更新。更新需要借助統計量avgSignal,更新的偽代碼如下(其中initBusySingal指的是minSignal的最初值)://如果minSignal大于或等于初值,就說(shuō)明沒(méi)有進(jìn)行第一種更新,所以沒(méi)有進(jìn)行第二種更新的必要

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

if (avgSignal initBusySignal){

minSignal = (minSignal + avgSignal)  1;

}

else{

minSignal = (minSignal + initBusySignal)  1;

}

}

initBusySignal的選擇將在后面介紹,它的選擇對更新機制尤為重要。因為minSignal的更新機制建立的基礎就是initBusySignal非常接近實(shí)際臨界值。initBusySignal本身也是經(jīng)過(guò)大量測試后選擇的一個(gè)信道活動(dòng)最小強度值,而它肯定會(huì )大于(最小等于)實(shí)際的臨界值,所以minSignal更新后應該比initBusySignal小才對。

3.2 信號強度閾值初始值的選擇

信號強度閾值的初始值必須根據實(shí)際測試岀的大量強度值來(lái)設定,如果設置失誤,將導致信道狀態(tài)判斷不準確。本文假設兩個(gè)初值分別是initNoiseSignal和initBusySignal。下面給出部分測試強度的數據,如表1所列。測試時(shí)使用兩個(gè)節點(diǎn),且兩個(gè)節點(diǎn)都是使用新電池(即電源充沛)。表中,“阻隔”指的是一堵大約10 cm厚的墻。

表1 信號強度測試數據

在雙方節點(diǎn)能通信的前提下,本文測到的busyRSSI的最小值為0x54。根據上一小節的論述,initBusySignal的值可以略高,但因為該值是在電量充足且有阻隔的情況下測試岀的最小強調值,因此可以直接取為busyRSSI的最小值,即initBusySignal的值設置為0x54。對于initNoiseSignal的取值,從表1可以看出,檢測到的RSSI值非常穩定,信道空閑時(shí)噪聲強度幅度不大,因此取值比0x4D略大就可以了。本文中initNoiseSignal取值為0x4E。

3.3 本文實(shí)現的信道監測機制的優(yōu)點(diǎn)

本文實(shí)現的信道監測機制比較完善且十分靈活。完善是指信道活動(dòng)狀態(tài)判定規則十分完備,不僅有基本判定和擴展判定,而且還有閾值更新機制,進(jìn)一步確保了判定結果的正確性;靈活是指向調用方提供了采樣窗口數的設置,使得調用方可以在每次監測時(shí)使用不同的采樣窗口數,可以被LPL、BMAC等有特殊要求的基于競爭的MAC協(xié)議直接調用。

4 的實(shí)現

本文實(shí)現的CAMA協(xié)議是基于使用廣泛的非持續性的,即節點(diǎn)在發(fā)送數據包之前先監測信道,如果監測到信道空閑,則該節點(diǎn)就自己開(kāi)始發(fā)送數據包。反之,如果監測結果為信道繁忙,即信道已經(jīng)被鄰居節點(diǎn)占用,則該節點(diǎn)回退一段隨機時(shí)間后,再次開(kāi)始監測,重復上面的操作。

在具體實(shí)現時(shí),本文結合信道監測提供的接口對協(xié)議做了一些優(yōu)化調整。另外,由于網(wǎng)絡(luò )中節點(diǎn)間距離很短,一般忽略傳播延遲,因此具體的實(shí)現與標準的CSMA協(xié)議有些不同,但原理一致,其實(shí)現如下:

如果節點(diǎn)要發(fā)送數據包,需要先進(jìn)行載波監聽(tīng),首先隨機選擇一個(gè)采樣窗口數(即信道采樣次數),該采樣數屬于某一個(gè)范圍,本文選擇為8~32。采樣數隨機選擇的目的是減少沖突,舉例說(shuō)明:假設信道目前空閑,A、B、C三個(gè)節點(diǎn)都是鄰居節點(diǎn),且A、B節點(diǎn)有數據包要發(fā)送給節點(diǎn)C;A、B兩個(gè)鄰居節點(diǎn)同時(shí)開(kāi)始監測,如果采樣窗口數固定,根據信道監測的規則,信道空閑必須等到采樣數用完才能下結論,那么A、B節點(diǎn)都在用完所有的采樣數后得岀信道空閑的結論,然后都發(fā)送數據包,這樣數據在節點(diǎn)C處就發(fā)生了沖突,最后A、B兩節點(diǎn)就必須依靠隨機回退一段時(shí)間后再次監測信道。采用隨機的采樣窗口數可以降低上面情況的發(fā)生率。因為采樣窗口數小的節點(diǎn)(假設為節點(diǎn)A)先得出信道空閑的結論并發(fā)送數據包,采樣窗口數大的節點(diǎn)B在后面的采樣中發(fā)現信道繁忙(因為節點(diǎn)A已經(jīng)占用了信道)就回退,避免了發(fā)生沖突。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>