1. 程式人生 > >NS2中無線通訊距離的計算

NS2中無線通訊距離的計算

ns2中無線網路的模擬支援不同的傳播模型,不同傳播模型對能量消耗是不一樣的,Ns2實現了最常見的兩種傳播模型:Tworay和Freespace(見Propagation.h/cc)。

而通訊距離與幾個因素有關,說來如下:

(1) Pt_: transmitted signal power (W),即發射功率;

(2) Pr_: Received signal power(W),即接收功率。

比如,節點A和B距離20m,那麼A給B傳送一個數據包,到底怎麼判斷B能夠接收得到呢? 首先我們假定知道節點A的發射功率,即Pt_,這個由節點硬體即傳送器的功能決定。接收結點B根據收到的Pt_,再結合相應的傳播模型,就可以計算出接收功率Pr_,這個計算方法可以用到下面提到的threshold工具。

Ns2目錄下有一個小程式,threshold可以用來計算Pr_。即~ns/indep-utils/propagation/threshold.cc。該程式

1.threshold作用

ns手冊上說:

在一些應用程式中,使用者希望指定無線節點的通訊範圍。Ns 中可以在網路介面中通過設定接收閾值來指定通訊範圍,比如:

Phy/WirelessPhy set RXThresh_ <value>

 threshold.cc這個程式適用於本章討論的所有傳播模型。 假定此程式已經編譯過得到一個可執行的檔案, 命名為 threshold。你可以按照如下方法來計算閾值:

threshold -m <propagation-model> [other-options] distance

<propagation-model>可以是 Freespace、TwoRayGound 或 Shadowing; distance 就是通訊範圍(單位:m) ;

[other-options]用來指定一些引數,                                          

有一個必要的引數即: <receive-rate>  -r 而不是預設的引數值。 對於 Shadowing 模型,這個引數指定了在 distance 距離下正確接收的速率。因為在 Shadowing 模型中,  通訊範圍不再是一個理想的環,   所以在[29]中採用反向 Q 函式(inverse Q-function)來計算接收閾值。舉例來說,如果希望在距離 50m 的地方能正確接收 95%的資料包,你可以按如下方法計算閾值:

    threshold -m Shadowing -r 0.95 50

    [other-options]中的其他值如下:

     -pl <path-loss-exponent 路徑損耗指數>

     -std <shadowing-deviation 陰影方差>

     -Pt <transmit-power 發射功率>

     -fr <frequency 頻率>

     -Gt <transmit-antenna-gain 發射天線增益>

     -Gr <receive-antenna-gain 接收天線增益>

     -L <system-loss 系統損耗>

     -ht <transmit-antenna-height 發射天線高度>

     -hr <receive-antenna-height 接收天線高度>

     -d0 <reference-distance 參考距離>

2.編譯threshold

直接g++ -o threshold threshold.cc會抱錯誤,需要修改原檔案的頭部宣告 修改如下: #include <math.h> 
#include <stdlib.h> #include <string.h> #include <iostream> using namespace std; 參考:http://findfunaax.com/2010/04/ns2%E7%BC%96%E8%AF%91threshold-cc.html