https://www.zhihu.com/question/24549780/answer/66061998
官方文檔有一句很概括的話:節點100米以內,要能夠通信;200米外不能工作。
目的節點的收包過程:
當節點接收到數據包的第一比特時,檢測接收能量,如果小於wifiphy的能量檢測門限EnergyDetectionThreshold,就會被丟棄。
能量達到相應的閾值,ns3 最終依據 SNIR (信號與干擾加噪聲比)來決定 BER 和 PER 的,即最終決定數據包是否接收成功。這里涉及到一個errorrate model,估計出錯的概率,來決定最終決定數據包是否接收成功。
ns3::YansWifiPhy類可以設置的屬性:
EnergyDetectionThreshold:能量檢測門限,默認為-96dbm
CcaMode1Threshold:確定為CCA busy狀態的門限,默認為-99dbm
TxGain:傳輸增益,默認為1db
RxGain:接收增益,默認為1db
TxPowerLevels:能量的等級數,默認為1.
TxPowerEnd:最大傳輸水平,默認為16.0206dbm
TxPowerStart:最小傳輸水平,默認為16.0206dbm
RxNoiseFigure:默認為7db
ChannelWidth:5MHz, 10MHz, 20MHz, 22MHz, 40MHz,80 MHz or 160 MHz.默認20MHz
發射功率=TxPowerStart + txPower *(TxPowerEnd - TxPowerStart)/ TxPowerLevels
txPower 供外部程序調用的接口,比如 MacLow,指定傳輸采用的功率級數
所以綜合來講,,來調大距離,可以增大發射功率,發送增益,接受增益。。默認的通信范圍取決於傳播損耗模型和衰落模型以及一些初始值。。。當然上面只是理論,,你可以通過實踐的方法,用ns3建立兩個無線節點,,從100開始,慢慢增大距離,看看是多少的時候開始連不上就可以了。
=================================================================
利用移動模型mobility model的setpositionallocator方法,設置出來就可以用做范圍(看到github上一大牛的寫法),雖然感覺只是節點之間的距離。
=================================================================
將信道衰落模型(PropagationLossModel)設置為RangePropagationLossModel,然后它有個屬性是“MaxRange”,設置它就幾乎是直接設置了通信范圍。
原理是:這個衰落模型是一個很理想化的模型,其核心思想就是小於通信半徑(MaxRange)時返回接收增益為0db,大於通信半徑時返回接收增益為-1000db,所以就會造成上述效果。
了解其原理之后題主就可以根據自己的需要選擇合適的方法了:如果你的仿真對這一塊要求不高,可以用這個方法,否則還請參照1樓的普適方法。
希望可以幫到你。