NS-2中无线节点的信号传输范围修改

  在NS2中,如果选择使用Propagation/TwoRayGround作为无线信号传输模式,则默认的无线节点的传输范围 transmission range (TX_range)为250m载波侦听范围physical carrier sensing range (PCS_range)是550m
  通常,载波侦听范围是信号传输范围的2.2倍,如果自己设置的话最好也按照2.2倍来计算设置,比如说30m–>66m等等。

  进入到…\ns-allinone-2.29\ns-2.29\tcl\lib下,打开ns-default.tcl文件,查找"Phy/WirelessPhy"字符串,看到如下:

Phy/WirelessPhy set CPThresh_ 10.0 
Phy/WirelessPhy set CSThresh_ 1.559e-11 
Phy/WirelessPhy set RXThresh_ 3.652e-10 
Phy/WirelessPhy set bandwidth_ 2e6 
Phy/WirelessPhy set Pt_ 0.28183815 
Phy/WirelessPhy set freq_ 914e+6 
Phy/WirelessPhy set L_ 1.0 
Phy/WiredPhy set bandwidth_ 10e6

  其中,RXThresh_ 指的是receiving threshold (RTX),其值3.652e-10是由节点传输范围250m计算出来的。CSThresh_ 指的是carrier-sense threshold (CTX),它是由载波侦听范围550m计算出来的。因此,当我们想设定一个新的节点传输范围,只需要修改为对应的RXThresh_的值即可,那么如何求得一个节点传输范围对应的RXThresh_值呢?这就要用以下的方法:

  1. 打开 …\ns-allinone-2.34\ns-2.34\indep-utils\propagation 目录下的threshold.cc文件
  2. 将56行处 include<iostream.h> 改为 include ,并在下一行插入:
    using namespace std;,然后再添加一行 #include<string.h>
  3. 执行命令g++ -o hello threshold.cc,可以看到在propagation文件夹下生成了一个可执行文件hello.exe
  4. 执行./hello -m TwoRayGround -fr 2.4e+9 250,其中-m后的TwoRayGround为无线传传输模式,-fr后的2.4e+9为频率,250即为要修改到的节点传输范围,此处先用默认值试一下会运行出什么结果。可以得到:

    可以看到最后得到的RXThresh_的值3.652e-10即为ns-default.tcl中的默认值(可见NS-2中默认的无线节点的传输范围确实为250m)。
  5. 执行./hello -m TwoRayGround -fr 2.4e+9 550,可以得到:

    可以看到最后得到的RXThresh_的值1.55924e-11,这即为ns-default.tcl中CSThresh_的默认值。
  6. 假设要修改节点传输范围为20000m,则执行./hello -m TwoRayGround -fr 2.4e+9 20000,可以得到:

    可得RXThresh_应该设置为8.91754e-18;
    执行./hello -m TwoRayGround -fr 2.4e+9 44000,可得:
    在这里插入图片描述
    可得CSThresh_应该设置为3.80675e-19;
  7. 在自己的tcl脚本中,在$ns_ node-config set node_(1) [$ns_ node]之前加上:
Phy/WirelessPhy set CSThresh_ 3.80675e-19 
Phy/WirelessPhy set RXThresh_ 8.91754e-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值