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