2017-08-11 3 views
0

Ich arbeite mit Wireless-Sensor-Netzwerk führen, um seine Leistung in meiner Arbeit zu bewerten. Ich möchte die Latenz und den Gesamtenergieverbrauch messen, um die verbleibende Energie in jedem Knoten zu finden. Also mein Problem ist, dass ich einige Werte von tx rx cpu cpu_idle habe und ich nicht, wie man sie benutzt, um zu berechnen, was ich brauche. Ich habe einige Regeln gefunden, die die Berechnung übernehmen, aber ich verstehe nicht genau, wie ich es in meinem Fall anwenden soll.So berechnen Sie den Gesamtenergieverbrauch mit Cooja

Energie in Kommunikation verbraucht:

Energie von der CPU verbraucht:

Was ist die Bedeutung von 32768, und warum nutzen wir diese Zahl? Ist es ein Standardwert?

+0

Wo haben Sie diese Fallstudie gefunden, erklären Sie bitte die Quelle dieser Bilder oder Papier. Im Allgemeinen gibt es keine Regeln für eine gute Energieberechnung. Es hängt von den eingeschalteten Peripheriegeräten, dem verwendeten Prozessor, der Geschwindigkeit usw. ab. –

Antwort

0

Der PowerTrace-Ausgang wird in Timer-Ticks gedruckt.

  • tx - die Anzahl der Ticks das Funkgerät im Sendemodus gewesen ist (ENERGEST_TYPE_TRANSMIT)
  • rx - die Anzahl der Ticks das Funk wurde im Empfangsmodus (ENERGEST_TYPE_LISTEN)
  • cpu - die Anzahl der Ticks die CPU hat im aktiven Modus gewesen (ENERGEST_TYPE_CPU)
  • cpu_idle - die Anzahl der Ticks die CPU im Leerlaufmodus (ENERGEST_TYPE_LPM)
012 wurden

Die Elemente des Paars tx und rx sind exklusiv, ebenso wie cpu und idle - das System kann niemals gleichzeitig in beiden Modi sein. Es sind jedoch auch andere Kombinationen möglich, zum Beispiel gleichzeitig cpu und tx. Die Summe von cpu und idle ist die Gesamtbetriebszeit des Systems.

Die Dauer des Timers eines Ticks ist plattformabhängig und definiert als RTIMER_ARCH_SECOND Konstante. 32768 Ticks pro Sekunde sind ein typischer Wert dieser Konstante - daher kommt die Zahl in Ihrer Gleichung.Zum Beispiel:

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

Um den durchschnittlichen Stromverbrauch (in Milliampère, mA) zu berechnen, multiplizieren jeweils tx, rx, cpu, cpu_idle mit dem jeweiligen Stromverbrauch in diesem Modus in mA (erhalten die Werte aus dem Datenblatt des Knotens), summieren sie und dividieren durch RTIMER_ARCH_SECOND:

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

Um die Ladung (in millicoulumbs, mC) zu berechnen, multiplizieren den durchschnittlichen Stromverbrauch mit der Dauer der Messung (Knotens Betriebszeit) in Sekunden:

charge = current * (cpu + cpu_idle)/RTIMER_ARCH_SECOND 

Zur Berechnung des Stromes (in Milliwatt, mW) multiplizieren Sie den durchschnittlichen Stromverbrauch mit der Spannung des Systems, zum Beispiel 3 Volt, wenn aus einem Paar AA-Batterien:

power = current * voltage 

schließlich den Energieverbrauch (in Millijoules, mJ) zu berechnen, die Leistung mit der Dauer in Sekunden multiplizieren oder die Ladung mit der Spannung des Systems multiplizieren:

energy = charge * voltage 

Die erste Formel oben berechnet den Energieverbrauch für die Kommunikation; der zweite: für die Berechnung.

Diese site könnte hilfreich sein, um die Zahlen zu brechen.