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

通信消耗的能量:

CPU消耗的能量:

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

最佳答案

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

  • tx - radio 处于传输模式的滴答数 (ENERGEST_TYPE_TRANSMIT)
  • rx - radio 处于接收模式的滴答数 (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),将 txrxcpucpu_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)将平均电流消耗乘以系统电压,例如,如果由一对 AA 电池供电,则为 3 伏:
    power = current * voltage
    

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

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

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

    关于contiki - 如何使用 Cooja 计算总能耗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45644277/

    10-10 14:56
    查看更多