0

我做了这个 .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 通信的范围内,而其他节点消耗的能量最大由于与协调器的距离而定义。

4

1 回答 1

1

你得到的结果是准确的,它们只是不是你所期望的。

我注意到您的 ini 文件的第一件事是您正在使用应用程序级静态路由和 802.15.4 MAC。这两个不会一起工作。802.15.4 MAC Castalia 实现仅允许协调器(在您的情况下为节点 0)和从节点之间的流量。从节点不能直接相互通信。因此,例如,您不能将数据包从节点 9 路由到节点 8。Castalia 用户手册在第 4.3.3 节中明确说明了这一点

此外,您的网络似乎甚至没有按照您想要的方式形成(节点 0 是协调器,节点 1-9 是从属)。您的传输功率太低,因此来自节点 0 的信标无法到达很远。从能量输出来看,我认为可以安全地假设信标没有比节点 2 更远。只有节点 1 和 2 与协调器相关联。一旦关联,节点就会进入一个占空比(让无线电进入和关闭)。这就是为什么你看到他们消耗更少的能量。其余节点可能总是让他们的收音机一直在尝试收听信标。这就是为什么你会看到它们消耗更多的能量。

研究您要使用的协议,以便深入了解它们。阅读 Castalia 手册以了解 Castalia 如何实现这些协议的细节。打开不同模块(例如 MAC、App)的跟踪信息,以更好地了解它们在您的特定场景下正在做什么。

于 2018-04-25T22:54:54.447 回答