2

我有两个问题:

  1. 我们想在我们的水下传感器网络中考虑一个非常低的传输占空比,因为在实践中,监听和睡眠模式下的功耗将主导我们的网络生命周期。我注意到新版本的 UnetStack Simulator 3.2.0 中的调度程序命令,addsleep,showsleep 等,我下载了最新版本的模拟器,我尝试使用这些命令,但它不起作用,我试过了在 shell 和 groovy 脚本中工作,并尝试导入 org.arl.unet.scheduler,但调度程序命令都不起作用,并且不断收到错误。例如,我尝试使用:addsleep 20.s.later,但模拟器无法识别“later”,使用 import org.arl.unet.scheduler 也收到错误。

我想知道是否有人可以帮助我,例如如何使用addsleep 命令。

  1. 另一个问题:除了在传输和接收中消耗能量外,我们的调制解调器在侦听数据包开始时从 5V 电源汲取 2.5 mA 的电流,并且可以进入睡眠状态并从 5V 电源汲取约 0.24 mA 的电流,并能够唤醒并在可编程的时间段后返回收听模式。所以我的问题是,有没有办法在一个简单的能量模型中考虑空闲聆听和睡眠所消耗的能量?我们实现了一个非常简单的能量模型,如下所示(在 stackoverflow 中找到了这个示例):

    类 MyHalfDuplexModem 扩展 HalfDuplexModem {

    浮动能量 = 1000

    @Override boolean send(Message m) { if (m instanceof TxFrameNtf) energy -= 10
    if (m instanceof RxFrameNtf) energy -= 1
    return super.send(m) }

    }

如何将空闲收听和睡眠消耗的能量添加到上述代码中?我们是否需要使用 WakeFromSleepNtf () 之类的东西

谢谢,非常感谢任何帮助。马尔瓦

4

1 回答 1

1

调度程序服务通常依赖于硬件,因为它需要与特定的单板计算机 (SBC) 交互以使其进入睡眠状态并允许其被唤醒。在调制解调器上,这通常是调制解调器驱动程序代理。

模拟HalfDuplexModem调制解调器不提供此服务,因此无法开箱即用。由于HalfDuplexModem没有内置能量模型,因此“睡眠”对它没有多大意义。如果您想模拟节点在睡眠期间睡眠并消耗较少能量的网络,则可以扩展HalfDuplexModem以实现SCHEDULER 服务。该服务非常简单,只有 4 条消息(、AddScheduledSleepReqRemoveScheduledSleepReq)。您的实现可以跟踪每个节点使用的能量,基于它是在睡眠、收听还是传输,因为您可以跟踪睡眠时间表,从而知道节点已经唤醒/睡眠了多少时间。GetSleepScheduleReqWakeFromSleepNtf

Commandsaddsleepshowsleep只是 shell 扩展中的便捷快捷方式,它们使用上述 4 条消息来完成实际工作。它们通过加载在 shell 中启用SchedulerShellExt,您可以直接使用来自代理或模拟脚本的消息。

于 2021-02-08T04:31:49.267 回答