我(从大约一个星期开始)在omnet ++(5.0)下使用静脉(4.4)。
我当前的任务是让车辆根据特定情况调整其传输范围。我确实阅读了很多类似这些问题(以及其他主题/论坛):
How coverage distance and interference distance are affected by each other
how to set the transmission range of a node under Veins 2.0?
我的问题:
如何-真正-更改某些节点的传输范围?
从上面的链接中,我知道术语“传输范围”从技术上讲与接收功率,噪声,灵敏度阈值等有关,它定义了接收的可能性。
由于我不熟悉静脉(以及omnet ++),因此我进行了一些测试,并得出以下结论:
“ TraCIMobility”模块可以调整节点的参数(对于每个车辆,都有一个实例),例如ID,速度等。
我还可以实例化“ Mac1609_4”(针对每辆车),并在模拟运行时更改其某些参数,例如“ txPower”,但它对实际的通讯范围没有影响。
我无法实例化(因为它是全局的)“连接管理器”模块,它是唯一负责(并且确实覆盖了)有效通信范围的模块。可以在“ .ini”文件中配置该模块,但我希望使用不同的传输能力,最重要的是“可以在运行时进行更改”。
计算传输范围的公式在附加的链接中,我知道了,但是它必须是在一层中定义或更改这些参数的方法(即使它在phy层中,即,类似于附加的信号强度...)
再说一次,也许我说的有些错误的主意,我只想知道什么/如何改变这个传输范围。
最诚挚的问候,
答案 0 :(得分:1)
您正确地增加了mac1609_4.txPower
参数以使节点发送的功率更大(因此,信号可以在更远的地方解码)。但是请注意,(对于静脉4.4)您还需要增加connectionManager.pMax
,因为此值用于确定接收模拟模块将被告知的最大距离(距发射模拟模块的距离)持续的传输。距离较远的任何接收仿真模块都不会受到传输的影响(从某种意义上说,它是解码的候选者,但从某种意义上讲,它也会造成干扰)。
还请注意,(否则)完全空闲信道上的传输将比通常加载的信道上的传输远得多。如果要获得对传输距离的良好度量,请让某些节点(通过传输其自身的广播)产生干扰,然后查看帧传送速率(FDR)如何随着发送方和接收方之间距离的增加而下降。 / p>
最后,请注意,1)本底噪声和2)接收机的模拟模块尝试解码帧所需的最小功率水平都需要针对要模拟的WLAN卡进行校准。 Veins 4.4教程示例中选择的值对于说明Veins的概念非常有用,而values of more recent versions of Veins则更接近您在一些较新的现场测试中使用的“典型” WLAN卡的期望值。有关这些参数的详细讨论,请参见论文Bastian Bloessl and Aisling O'Driscoll, "A Case for Good Defaults: Pitfalls in VANET Physical Layer Simulations," Proceedings of IFIP Wireless Days Conference 2019, Manchester, UK, April 2019
。
答案 1 :(得分:1)
万一有人遇到我,我只是发表我的看法:
顺带一提(我使用的旧版本为4.4),“连接管理器”负责评估数据包的“潜在”交换,因此,其传输能力几乎始终设置为上限。
在更改车辆“ Mac1609_4”的传输功率和“图形化”后,我感到困惑,连接管理器仍向我显示,数据包是由某些远方节点接收的,实际上并非如此,它只是在评估是否正确接收(通过以上链接中讨论的公式)。
因此:在图形上更改每辆车的“ TxPower”确实有影响(消息未安装到上层)。
总而言之,要制定一种传输范围感知方案,必须执行以下操作:
在“ tracidemo11p.h”中添加->
#include "veins/modules/mac/ieee80211p/Mac1609_4.h"//added
#include "veins/base/utils/FindModule.h"//added
并作为同一“ .h”文件中“ tracidemo11p”类中的受保护变量->
Mac1609_4* mac;//added
在“ tracidemoemo11p.cc”中添加->
mac = FindModule<Mac1609_4*>::findSubModule(getParentModule());
现在您可以像在“ traci”中那样操作“ mac”,相应的方法在“ modules / mac / ieee80211p / Mac1609_4.cc&.h”中
对于我们的工作,方法将是:
mac->setTxPower(10);//for example
这将对每个节点实例的实时仿真产生影响。
它可能已经用基本概念进行了描述,因为我是omnet-veins的新手,这些操作在不到一周的时间内完成了(并且还将提供给新用户)。
我希望它会有所帮助(并且正确)