關 閉

        新聞中心

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

        CSMA協議在無線傳感器網絡中的實現

        作者: 時間:2011-08-05 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/161636.htm

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

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

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

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

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

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

          在獲得busyRSSI和noiseRSSI后就對其進行統計操作,為這個目的需要維護一個統計變量avgSignal,用來統計所有的busyRSSI值。avgSignal的初值等于min2Signal的初值即初始閾值,并按1/4的權重進行統計,即avgSignal=(avgSignalm1)+((avgSignal+busyRSSI)m2)。noiseRSSI的值并不需要統計,這是因為讀出nois2eRSSI的值很穩定幾乎不變。

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

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

          第二種情況是對第一種情況的補充。在做了第一種情況的修改后,如果長時間內監測到的都是信道繁忙(如載波監聽幾次回退后都返回繁忙),那么就可能是minSig2nal的值設置得太低,因此要適當調高該值,以避免使用第一種更新方式后由于設置的minSignal值太低而導致不能使用信道的情況。該情況提供一個接口由上層(MAC層)來調用更新。更新需要借助統計量avgSignal,更新的偽代碼如下(其中initBusySingal指的是minSignal的最初值):

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


        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 日照市| 繁峙县| 黎川县| 西峡县| 克山县| 儋州市| 西宁市| 全南县| 宁南县| 英吉沙县| 呼伦贝尔市| 卓尼县| 八宿县| 长白| 维西| 西丰县| 任丘市| 高尔夫| 银川市| 营山县| 永修县| 溧水县| 五寨县| 巴青县| 夏邑县| 离岛区| 措美县| 安图县| 马公市| 宁德市| 沙湾县| 诸城市| 阿克| 安义县| 嵩明县| 澎湖县| 大冶市| 资兴市| 博白县| 江孜县| 玉溪市|