UnetStack 中的睡眠模式和占空比,并将空闲侦听和睡眠模式消耗的能量添加到一个简单的能量模型中

Posted

技术标签:

【中文标题】UnetStack 中的睡眠模式和占空比,并将空闲侦听和睡眠模式消耗的能量添加到一个简单的能量模型中【英文标题】:Sleep mode and duty cycling in UnetStack, and adding energy consumed in idle listening, and sleeping modes into a simple energy model 【发布时间】:2021-02-04 15:28:05 【问题描述】:

我有两个问题:

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

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

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

    类 MyHalfDuplexModem 扩展 HalfDuplexModem

    浮动能量 = 1000

    @覆盖 布尔发送(消息 m) if (m instanceof TxFrameNtf) 能量 -= 10 if (m instanceof RxFrameNtf) 能量 -= 1 返回 super.send(m)

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

谢谢曼达尔。是的,SCHEDULER 服务看起来很简单,我想了解它是如何工作的,以及如何使用它的消息和睡眠时间等。但是,我试图扩展 HalfDuplexModem 以包含它的服务,但我找不到合适的方法来覆盖。例如:@Override Message processRequest(Message msg) 仅适用于请求数据报,不是吗?我尝试使用它,但它不适用于调度程序消息。看来我必须从头开始实现方法和参数?如果您建议扩展调制解调器的方法会很棒,我必须考虑哪些方法。非常感谢 对于 UnetAgents,每条具有执行性 REQUEST 的消息都会调用 processRequest()(因此应该为 AddScheduledSleepReqRemoveScheduledSleepReqGetSleepScheduleReq 调用)。执行性QUERY 调用processQuery(),对于所有其他消息,调用processMessage()

以上是关于UnetStack 中的睡眠模式和占空比,并将空闲侦听和睡眠模式消耗的能量添加到一个简单的能量模型中的主要内容,如果未能解决你的问题,请参考以下文章

STM-32:TIM输入捕获—输入捕获模式测频率/PWMI模式同时测量频率和占空比

pwm的频率和占空比之间的关系?

用verilog设计频率和占空比可调pwm

STM32中的PWM的频率和占空比的设置

Arduino利用TimerOne库产生固定频率和占空比的方波

什么是pwm占空比