a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

關 閉

新聞中心

EEPW首頁 > 工控自動化 > 設計應用 > 無線傳感器網絡CSMA協議的設計與實現

無線傳感器網絡CSMA協議的設計與實現

作者: 時間:2011-07-31 來源:網絡 收藏

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

  閾值的動態更新必須使用大量的實時RSSI值作為統計值,且需要把RSSI值分為兩類: 一類是信道繁忙時的RSSI,本文稱為busyRSSI;另一類是信道空閑時的RSSI值,本文稱為noiseRSSI。這兩個值可以在物理層每接收到一個數據包時獲取,因為CC2420接收到一個數據包時將在數據包的倒數第二個字節(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的實現

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

  在具體實現協議時,本文結合信道監測提供的接口對協議做了一些優化調整。另外,由于中節點間距離很短,一般忽略傳播延遲,因此具體的實現與標準的CSMA協議有些不同,但原理一致,其實現如下:

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

  回退時間的選擇也是值得推敲的一個參數。CC2420是以數據包為單位發送的射頻芯片,其最大數據包的長度為128字節,加上同步頭5字節,總共是133字節。CC2420的發送速率是250 kb/s,即發送一個字節的時間為32 μs,因此發送一個最大數據包的時間為133×32=4 256 μs。根據信道采樣規則,只要一采樣到信道占用,就可以結束本次監測并得出信道繁忙的結論,因此回退時間應該要大于數據包的發送時間。又因為采樣窗口數已經采用了隨機選取,所以回退時間可以使用固定值。因此可以將回退時間固定為4.5 ms,回退功能的具體實現只需要一個定時器輔助就可以了。

  最后,要處理信道強度閾值更新的問題。如果MAC層連續對信道監測的結果都是繁忙,且累計超過一個預設的閾值Y,就必須要調用MAC層提供的接口來對minSignal閾值進行更新,參照上節信號強度閾值的更新機制。根據實際的測試分析,Y的取值一般為30~60。

結語

  本文靈活利用CC2420射頻芯片的特點,并實現了一整套從物理層到MAC層的CSMA協議的實現;并詳細闡述了協議中信道監測使用的所有判定規則及各關鍵閾值參數的選擇。經過實際的多節點通信測試,該CSMA協議可以正確、穩定地進行信道活動監測,并實時動態地調整閾值;并且該CSMA協議的可以完全嵌入應用到其他MAC層協議中,輔助其他協議完成信道競爭或信道檢測。


上一頁 1 2 3 下一頁

評論


相關推薦

技術專區

關閉