Omnet++ Castalia 能源消耗
Posted
技术标签:
【中文标题】Omnet++ Castalia 能源消耗【英文标题】:Omnet++ Castalia Energy Consumption 【发布时间】:2018-04-24 15:16:29 【问题描述】:我做了这个 .ini 文件来尝试模拟放置在铁路中的线性 WSN 中消耗的能量,但是能量消耗不是我所期望的,我不明白,有人知道发生了什么吗?
我希望节点 0 成为连接器,节点 9 成为能够感知并将数据转发到节点 0 的节点
代码:
[General]
include ../Parameters/Castalia.ini
repeat = 2
sim-time-limit = 7000s
SN.numNodes = 10
SN.node[1].xCoor = 10
SN.node[2].xCoor = 20
SN.node[3].xCoor = 30
SN.node[4].xCoor = 40
SN.node[5].xCoor = 50
SN.node[6].xCoor = 60
SN.node[7].xCoor = 70
SN.node[8].xCoor = 80
SN.node[9].xCoor = 90
SN.node[0..9].ResourceManager.initialEnergy = 1000
SN.node[*].Communication.Radio.RadioParametersFile = "../Parameters/Radio/CC2420.txt"
SN.node[*].Communication.Radio.collectTraceInfo = false
SN.node[*].Communication.Radio.TxOutputPower = "-5dBm"
SN.node[*].Communication.MAC.collectTraceInfo = false
SN.node[*].Communication.Routing.collectTraceInfo = true
SN.node[*].Application.collectTraceInfo = false
SN.wirelessChannel.onlyStaticNodes = true
SN.wirelessChannel.sigma = 0
SN.wirelessChannel.bidirectionalSigma = 0
#amount of packets sent
SN.node[*].ApplicationName = "ThroughputTest"
SN.node[9].Application.packet_rate = 300
# Here i define the static routing
SN.node[9].Application.nextRecipient = "8"
SN.node[8].Application.nextRecipient = "7"
SN.node[7].Application.nextRecipient = "6"
SN.node[6].Application.nextRecipient = "5"
SN.node[5].Application.nextRecipient = "4"
SN.node[4].Application.nextRecipient = "3"
SN.node[3].Application.nextRecipient = "2"
SN.node[2].Application.nextRecipient = "1"
SN.node[1].Application.nextRecipient = "0"
SN.node[*].Communication.Radio.collisionModel = 2
SN.node[*].Communication.MACProtocolName = "Basic802154"
SN.node[0].Communication.MAC.isFFD = true
SN.node[0].Communication.MAC.isPANCoordinator = true
SN.node[*].Communication.MAC.phyDataRate = 30
SN.node[*].Communication.MAC.phyBitsPerSymbol = 4
结果如下: ./../../bin/CastaliaResults -i 180424-155036.txt -s 消耗 -n
资源管理器:消耗的能量 +---------+---------+--------+---------+---------+ --------+---------+---------+---------+---------+ |节点=0 |节点=1 |节点=2 |节点=3 |节点=4 |节点=5 |节点=6 |节点=7 |节点=8 |节点=9 | +---------+---------+--------+---------+---------+ --------+---------+---------+---------+---------+ | 475.988 | 158.176 | 162.13 | 475.997 | 475.999 |第476章475.998 | 475.998 | 475.997 | 475.999 | +---------+---------+--------+---------+---------+ --------+---------+---------+---------+---------+
这些结果是不正确的,因为节点 0 应该是迄今为止能源消耗较多的节点,因为它必须协调网络,并且能源消耗应该从 9 递增到 1,即 9 节点能源消耗较少消费。
对于我从 Castalia 获得的结果中看到的情况,似乎静态路由不起作用,因为节点 1 和 2 的能耗较低,因为在与节点 0 通信的范围内,而其他节点消耗最大值由于与协调器的距离而定义的能量量。
【问题讨论】:
您正在使用每秒 300 个数据包的数据包速率。我想节点根本没有时间睡觉和节省能源。例如,如果您的数据包速率为 1,会发生什么情况? 唯一正在传输的节点是节点 9,但任何节点正在接收传输,因为它正在尝试与协调器通信并且没有数据包转发。 “Basic802154”的实现似乎是一个mac问题 您在写“能耗不准确”,但您的意思似乎是能耗与您的预期不符。这是两个非常不同的东西。请编辑您的问题以明确说明。 你做对了 【参考方案1】:你得到的结果是准确的,只是不是你所期望的。
我注意到您的 ini 文件的第一件事是您将应用程序级静态路由与 802.15.4 MAC 一起使用。这两个不会一起工作。 802.15.4 MAC Castalia 实现仅允许协调器(在您的情况下为节点 0)和从节点之间的流量。从节点不能直接相互通信。因此,例如,您不能将数据包从节点 9 路由到节点 8。 Castalia User's manual 在第 4.3.3 节中明确说明
此外,您的网络似乎甚至没有按照您的预期形成(节点 0 是协调器,节点 1-9 是从属)。您的传输功率太低,因此来自节点 0 的信标无法到达很远。从能量输出来看,我认为可以安全地假设信标没有比节点 2 更远。只有节点 1 和 2 与协调器相关联。一旦关联,节点就会进入一个占空比(让无线电进入和关闭)。这就是为什么你看到他们消耗更少的能量。其余节点可能总是让他们的收音机一直在尝试收听信标。这就是为什么你会看到它们消耗更多的能量。
研究您要使用的协议,以便深入了解它们。阅读 Castalia 手册以了解 Castalia 如何实现这些协议的细节。打开不同模块(例如 MAC、App)的跟踪信息,以更好地了解它们在您的特定场景下正在做什么。
【讨论】:
感谢您的回答和您的提示。您是否知道是否有任何路由协议允许使用一个协调器和不同的从站进行静态路由,这些从站在它们之间转发流量以到达协调器?或者一种从一个节点按照特定路由发送随机流量到达另一个节点的方法?我检查了所有的 mac、路由和应用程序协议,但没有得到任何预期的结果以上是关于Omnet++ Castalia 能源消耗的主要内容,如果未能解决你的问题,请参考以下文章