Difference between revisions of "Energy model"

From Nsnam
Jump to: navigation, search
(Usage)
(Usage)
Line 58: Line 58:
  
 
The following code snippet installs an energy source (BasicEnergySource) and a radio energy model (BasicRadioEnergyModel) onto a node.
 
The following code snippet installs an energy source (BasicEnergySource) and a radio energy model (BasicRadioEnergyModel) onto a node.
 
+
 
 +
  /* create some nodes */
 +
  NodeContainer c;
 +
  c.Create(5);
 +
 
 
   /* energy source */
 
   /* energy source */
 
   BasicEnergySourceHelper basicSourceHelper;
 
   BasicEnergySourceHelper basicSourceHelper;

Revision as of 02:39, 4 May 2010

Background

Energy modeling is a key element in wireless network simulation. In several simulation scenarios, the energy consumption at a particular node, or at a particular component of a node, is of interest. Further, energy consumption is an important metric for evaluating the performance of wireless network protocols. Also, if a protocol is energy-aware, i.e. its operation depends on the energy level, it cannot be effectively simulated without an energy model. An energy model has been implemented in ns2 (ns2 energy model) but is yet to be implemented in ns3.

Project Goals

In this project, we aim to provide the basic structures for modeling energy sources and energy consumption of various devices on the node. The energy source class will enable the modeling of batteries, discharging models, etc. while the energy consumption models are used to represent the energy consumed by various components of a node. The energy model will provide the following components:

  • Energy source model.
    • Battery.
    • etc.
  • Device energy consumption model.
    • Radio.
    • etc.

Energy Model Hierarchy

Energy model information flow

The energy model consists of 2 major components:

  • Energy source.
  • Device energy model.

Only a single energy source will exist on a node, representing the total energy reserve at the node. Multiple device energy models can exist on a single node, representing different devices. Each device energy model will notify the energy source of the energy consumed by that device, and thus update the remaining energy of the source. When energy is completely drained, the energy source will notify all device energy models connected to it.

Energy Source

Energy source class structure. Classes in dotted boxes are not included in initial release.

This is an abstract base class that provides interfaces for for updating/recording total energy consumption on the node. It also issues a notification when the remaining energy goes to zero.

Child classes of the energy source class implement a specific type of energy source, eg. a battery. Some typical child classes are:

  • Basic energy source.
    • Provides basic functionalities such as keeping track of remaining energy, decrease remaining energy, notify device energy models on complete depletion of energy.
  • Battery energy source (Not included in initial release).
    • Models the effect of energy consumption on the battery voltage, provides optional interfaces to provide recharging functionality, etc.

Device Energy Consumption Model

Device energy model class structure. Classes in dotted boxes are not included in initial release.

This is a base class and its main function is to monitor the state of a device, and accordingly calculate its energy consumption. It provides interfaces for updating remaining energy in the energy source and handles the notification from the energy source when node energy is depleted. It also maintains a record of the total energy consumption of the device.

Child classes of the device energy consumption class implement energy consumption schemes of specific devices, eg. a radio device. Multiple device models can exist on a node, representing energy consumption due to its different components. Further, multiple objects of the same device model class can also be used in a node. eg. a node could have multiple radios, and hence will have multiple radio energy consumption models.

A typical child implementation of this class is the radio energy model class.

Radio Energy Model

This class represents energy model for radio devices. It is a base class for implementing other radio energy models. The radio energy model defines the typical operating states of a radio:

  • Idle
  • Tx
  • Rx
  • Sleep

Behaviors of switching between different modes are implemented by radio energy model's child class. Note that multiple radio energy model can exist on the same node.

Usage

The following code snippet installs an energy source (BasicEnergySource) and a radio energy model (BasicRadioEnergyModel) onto a node.

 /* create some nodes */ 
 NodeContainer c;
 c.Create(5);
 
 /* energy source */
 BasicEnergySourceHelper basicSourceHelper;
 // configure energy source
 basicSourceHelper.Set ("BasicEnergySourceInitialEnergyJ", DoubleValue (0.1));
 
 /* device energy model */
 RadioEnergyHelper radioEnergyHelper;
 // configure radio energy model (optional, radio energy model is configured with parameters of CC2420).
 radioEnergyHelper.Set ("TxPowerW", DoubleValue (0.0435));
 radioEnergyHelper.Set ("RxPowerW", DoubleValue (0.047));
 radioEnergyHelper.Set ("IdlePowerW", DoubleValue (0.001065));
 radioEnergyHelper.Set ("SleepPowerW", DoubleValue (0.00005));
 
 /* energy model helper */
 EnergyModelHelper energyHelper;
 // install on all nodes
 energyHelper.Install (basicSourceHelper, radioEnergyHelper, c);

The radio energy model keeps track of the current radio state (Tx, Rx, Idle, Sleep). It has to be notified (with the destination state) whenever the radio switches state. Modification to a PHY layer class is needed so that the radio energy model can record energy consumption correctly. The following code snippet shows how to modify existing PHY object to make use of the energy model (using YansWifiPhy class as an example):

 #include "ns3/radio-energy-model.h"
 #include "ns3/energy-source.h"
 
 /* obtain pointer to energy source */
 Ptr<EnergySource> energySource = m_nodePtr->GetObject<EnergySource> ();
 
 /* obtain list of RadioEnergyModel objects installed from the energy source */
 EnergySource::DeviceEnergyModelList modelList = energySource->FindDeviceEnergyModels ("ns3::RadioEnergyModel");
 
 /* obtain a pointer from the list */
 if (!modelList.empty ())
   {
     Ptr<RadioEnergyModel>m_energyPtr = DynamicCast<RadioEnergyModel> (modelList[0]);
   }
 
 /* update energy state for TX, insert at SendPacket */
 m_energyPtr->UpdateRemainingEnergy (RadioEnergyModel::TX);
 // wait/schedule till end of TX
 m_energyPtr->UpdateRemainingEnergy (RadioEnergyModel::IDLE);
 
 /* update energy state for RX, insert at StartReceivePacket and EndRx */
 m_energyPtr->UpdateRemainingEnergy (RadioEnergyModel::RX);
 // wait/schedule till end of RX
 m_energyPtr->UpdateRemainingEnergy (RadioEnergyModel::IDLE);

A modified version of YansWifiPhy, called NslWifiPhy is available in the jamming model. NslWifiPhy provides complete support for the radio energy model.

Schedule