如何使用 Cooja 计算总能耗

Posted

技术标签:

【中文标题】如何使用 Cooja 计算总能耗【英文标题】:How to calculate total energy consumption using Cooja 【发布时间】:2017-08-11 21:53:22 【问题描述】:

我正在与无线传感器网络负责人一起评估其在我的工作中的性能。我想测量延迟和总能耗以找到每个节点中的剩余能量。所以我的问题是我有一些tx rx cpu cpu_idle 的值,我不知道如何使用它们来计算我需要的值。我发现了一些计算规则,但我不明白如何在我的案例中应用它。

通信消耗的能量:

CPU消耗的能量:

32768是什么意思,我们为什么要用这个数字?是标准值吗?

【问题讨论】:

您在哪里找到该案例研究,请声明这些图片或论文的来源。一般来说,良好的能量计算没有任何规则。这取决于打开的外围设备、使用的处理器、速度等。 【参考方案1】:

powertrace 输出以计时器刻度打印。

tx - 无线电处于传输模式的滴答数 (ENERGEST_TYPE_TRANSMIT) rx - 收音机处于接收模式的滴答数 (ENERGEST_TYPE_LISTEN) cpu - CPU 处于活动模式的滴答数 (ENERGEST_TYPE_CPU) cpu_idle - CPU 处于空闲模式的滴答数 (ENERGEST_TYPE_LPM)

txrx 对的元素是互斥的,cpuidle 也是如此 - 系统永远不能同时处于两种模式。但是,其他组合也是可能的:例如,它可以同时位于cputx 中。 cpuidle 的总和是系统的总正常运行时间。

计时器一个滴答的持续时间取决于平台,并定义为RTIMER_ARCH_SECOND 常量。每秒 32768 滴答是这个常数的典型值——这就是方程中数字的来源。例如:

ticks_in_tx_mode = energest_type_time(ENERGEST_TYPE_TRANSMIT);
seconds_in_tx_mode = ticks_in_tx_mode / RTIMER_ARCH_SECOND;

要计算平均电流消耗(以 毫安mA 为单位),请将 txrx、@987654342 中的每一个相乘@, cpu_idle 分别在该模式下的电流消耗以 mA 为单位(从节点的数据表中获取值),将它们相加,然后除以 RTIMER_ARCH_SECOND

current = (tx * current_tx_mode + rx * current_rx_mode + \
          cpu * current_cpu + cpu_idle * current_idle) / RTIMER_ARCH_SECOND

要计算 电荷(单位为 毫库仑mC),请将平均电流消耗乘以测量持续时间(节点的正常运行时间)以秒为单位:

charge = current * (cpu + cpu_idle) / RTIMER_ARCH_SECOND

要计算 功率(单位为 毫瓦mW),将平均电流消耗乘以系统电压,例如,3如果由一对 AA 电池供电,则为伏特:

power = current * voltage

最后,计算能量消耗(单位为毫焦耳mJ),将功率乘以持续时间(以秒为单位)或乘以电荷与系统电压:

energy = charge * voltage

上面的第一个公式计算了通信的能量消耗;第二个:用于计算。

这个site 可能有助于分解数字。

【讨论】:

【参考方案2】:

32768 Hz 或 32、768 kHz 这是 MSP430F247 微控制器频率,具体为活动模式:32iuA @ 3 v / 1 MHz 或 1x10 6 Hz 和低功耗模式 = 1 uA @ 3V /32768 Hz

【讨论】:

以上是关于如何使用 Cooja 计算总能耗的主要内容,如果未能解决你的问题,请参考以下文章

Cooja Simulator拾遗

(22)如何优化内存使用

在Java中如何准确定位耗时长的方法

matlab中,如何加快数据运算速度?

数字孪生智慧园区能源管理系统

数字孪生智慧园区能源管理系统