INET Framework for OMNeT++/OMNEST
inet::power::SimpleCcBattery Class Reference

#include <SimpleCcBattery.h>

Inheritance diagram for inet::power::SimpleCcBattery:
inet::power::CcEnergyStorageBase inet::StringFormat::IDirectiveResolver inet::LifecycleController inet::power::CcEnergySourceBase inet::power::CcEnergySinkBase inet::power::ICcEnergyStorage inet::power::IEnergyStorage inet::power::ICcEnergySink inet::power::ICcEnergySource inet::power::ICcEnergySink inet::power::EnergySinkBase inet::power::ICcEnergySource inet::power::EnergySourceBase

Public Member Functions

virtual V getNominalVoltage () const override
 Returns the open circuit voltage in the range [0, +infinity). More...
 
virtual V getOutputVoltage () const override
 Returns the output voltage in the ragne [0, +infinity). More...
 
virtual A getTotalCurrentConsumption () const override
 Returns the total current consumption in the range [0, +infinity). More...
 
virtual A getTotalCurrentGeneration () const override
 Returns the total current generation in the range [0, +infinity). More...
 
virtual C getNominalChargeCapacity () const override
 Returns the nominal charge capacity in the range [0, +infinity). More...
 
virtual C getResidualChargeCapacity () const override
 Returns the residual charge capacity in the range [0, nominalCapacity]. More...
 
- Public Member Functions inherited from inet::power::CcEnergyStorageBase
virtual void addEnergyConsumer (const IEnergyConsumer *energyConsumer) override
 Adds a new energy consumer to the energy source. More...
 
virtual void removeEnergyConsumer (const IEnergyConsumer *energyConsumer) override
 Removes a previously added energy consumer from this energy source. More...
 
virtual void addEnergyGenerator (const IEnergyGenerator *energyGenerator) override
 Adds a new energy generator to the energy sink. More...
 
virtual void removeEnergyGenerator (const IEnergyGenerator *energyGenerator) override
 Removes a previously added energy generator from this energy sink. More...
 
virtual void receiveSignal (cComponent *source, simsignal_t signal, double value, cObject *details) override
 
- Public Member Functions inherited from inet::power::EnergySourceBase
virtual int getNumEnergyConsumers () const override
 Returns the number of energy consumers in the range [0, +infinity). More...
 
virtual const IEnergyConsumergetEnergyConsumer (int index) const override
 Returns the energy consumer for the provided index. More...
 
- Public Member Functions inherited from inet::power::IEnergySource
virtual ~IEnergySource ()
 
- Public Member Functions inherited from inet::power::EnergySinkBase
virtual int getNumEnergyGenerators () const override
 Returns the number of energy generators in the range [0, +infinity). More...
 
virtual const IEnergyGeneratorgetEnergyGenerator (int index) const override
 Returns the energy generator for the provided index. More...
 
- Public Member Functions inherited from inet::power::IEnergySink
virtual ~IEnergySink ()
 
- Public Member Functions inherited from inet::LifecycleController
 LifecycleController ()
 
virtual ~LifecycleController ()
 
virtual bool initiateOperation (LifecycleOperation *operation, IDoneCallback *completionCallback=nullptr)
 Initiate an operation. More...
 

Protected Member Functions

virtual void initialize (int stage) override
 
virtual void refreshDisplay () const override
 
virtual void updateDisplayString () const
 
virtual const char * resolveDirective (char directive) const override
 
virtual void updateTotalCurrentConsumption () override
 
virtual void updateTotalCurrentGeneration () override
 
virtual void setResidualCapacity (C newResidualCapacity)
 
virtual void updateResidualCapacity ()
 
virtual void executeNodeOperation (C newResidualCapacity)
 
- Protected Member Functions inherited from inet::power::CcEnergySourceBase
virtual A computeTotalCurrentConsumption () const
 
- Protected Member Functions inherited from inet::power::CcEnergySinkBase
virtual A computeTotalCurrentGeneration () const
 
- Protected Member Functions inherited from inet::LifecycleController
virtual bool resumeOperation (LifecycleOperation *operation)
 
virtual void doOneStage (LifecycleOperation *operation, cModule *submodule)
 
virtual void moduleOperationStageCompleted (Callback *callback)
 

Protected Attributes

C nominalCapacity = C(NaN)
 
V nominalVoltage = V(NaN)
 
Ohm internalResistance = Ohm(NaN)
 
C residualCapacity = C(NaN)
 
simtime_t lastResidualCapacityUpdate = -1
 
cModule * networkNode = nullptr
 
NodeStatusnodeStatus = nullptr
 
- Protected Attributes inherited from inet::power::CcEnergySourceBase
A totalCurrentConsumption = A(NaN)
 
- Protected Attributes inherited from inet::power::EnergySourceBase
std::vector< const IEnergyConsumer * > energyConsumers
 
- Protected Attributes inherited from inet::power::CcEnergySinkBase
A totalCurrentGeneration = A(NaN)
 
- Protected Attributes inherited from inet::power::EnergySinkBase
std::vector< const IEnergyGenerator * > energyGenerators
 
- Protected Attributes inherited from inet::LifecycleController
CallbackspareCallback = nullptr
 

Additional Inherited Members

- Static Public Attributes inherited from inet::power::ICcEnergySource
static simsignal_t currentConsumptionChangedSignal = cComponent::registerSignal("currentConsumptionChanged")
 The signal that is used to publish current consumption changes. More...
 
- Static Public Attributes inherited from inet::power::ICcEnergySink
static simsignal_t currentGenerationChangedSignal = cComponent::registerSignal("currentGenerationChanged")
 The signal that is used to publish current generation changes. More...
 
- Static Public Attributes inherited from inet::power::ICcEnergyStorage
static simsignal_t residualChargeCapacityChangedSignal = cComponent::registerSignal("residualChargeCapacityChanged")
 The signal that is used to publish residual charge capacity changes also including when the energy storage becomes completely depleted or charged. More...
 

Member Function Documentation

◆ executeNodeOperation()

void inet::power::SimpleCcBattery::executeNodeOperation ( C  newResidualCapacity)
protectedvirtual
105 {
106  if (nodeStatus->getState() == NodeStatus::UP && newResidualCapacity <= C(0)) {
107  EV_WARN << "Battery failed" << endl;
109  ModuleCrashOperation *operation = new ModuleCrashOperation();
110  operation->initialize(networkNode, params);
111  initiateOperation(operation);
112  }
113 }

Referenced by setResidualCapacity().

◆ getNominalChargeCapacity()

virtual C inet::power::SimpleCcBattery::getNominalChargeCapacity ( ) const
inlineoverridevirtual

Returns the nominal charge capacity in the range [0, +infinity).

It specifies the maximum amount of charge that the energy storage can contain.

Implements inet::power::ICcEnergyStorage.

57 { return nominalCapacity; }

Referenced by resolveDirective().

◆ getNominalVoltage()

virtual V inet::power::SimpleCcBattery::getNominalVoltage ( ) const
inlineoverridevirtual

Returns the open circuit voltage in the range [0, +infinity).

Implements inet::power::ICcEnergySource.

51 { return nominalVoltage; }

◆ getOutputVoltage()

virtual V inet::power::SimpleCcBattery::getOutputVoltage ( ) const
inlineoverridevirtual

Returns the output voltage in the ragne [0, +infinity).

Implements inet::power::ICcEnergySource.

◆ getResidualChargeCapacity()

virtual C inet::power::SimpleCcBattery::getResidualChargeCapacity ( ) const
inlineoverridevirtual

Returns the residual charge capacity in the range [0, nominalCapacity].

It specifies the amount of charge that the energy storage contains at the moment.

Implements inet::power::ICcEnergyStorage.

58 { return residualCapacity; }

Referenced by resolveDirective().

◆ getTotalCurrentConsumption()

virtual A inet::power::SimpleCcBattery::getTotalCurrentConsumption ( ) const
inlineoverridevirtual

Returns the total current consumption in the range [0, +infinity).

Reimplemented from inet::power::CcEnergySourceBase.

54 { return totalCurrentConsumption; }

◆ getTotalCurrentGeneration()

virtual A inet::power::SimpleCcBattery::getTotalCurrentGeneration ( ) const
inlineoverridevirtual

Returns the total current generation in the range [0, +infinity).

Reimplemented from inet::power::CcEnergySinkBase.

55 { return totalCurrentGeneration; }

◆ initialize()

void inet::power::SimpleCcBattery::initialize ( int  stage)
overrideprotectedvirtual

Reimplemented from inet::power::CcEnergyStorageBase.

20 {
22  if (stage == INITSTAGE_LOCAL) {
23  nominalCapacity = C(par("nominalCapacity"));
24  nominalVoltage = V(par("nominalVoltage"));
25  internalResistance = Ohm(par("internalResistance"));
27  if (networkNode != nullptr) {
28  nodeStatus = dynamic_cast<NodeStatus *>(networkNode->getSubmodule("status"));
29  if (!nodeStatus)
30  throw cRuntimeError("Cannot find node status");
31  }
32  setResidualCapacity(C(par("initialCapacity")));
33  WATCH(residualCapacity);
34  }
35 }

◆ refreshDisplay()

void inet::power::SimpleCcBattery::refreshDisplay ( ) const
overrideprotectedvirtual
38 {
40 }

◆ resolveDirective()

const char * inet::power::SimpleCcBattery::resolveDirective ( char  directive) const
overrideprotectedvirtual

Implements inet::StringFormat::IDirectiveResolver.

51 {
52  static std::string result;
53  switch (directive) {
54  case 'c':
55  result = getResidualChargeCapacity().str();
56  break;
57  case 'p':
58  result = std::to_string((int)std::round(100 * unit(getResidualChargeCapacity() / getNominalChargeCapacity()).get())) + "%";
59  break;
60  default:
61  throw cRuntimeError("Unknown directive: %c", directive);
62  }
63  return result.c_str();
64 }

◆ setResidualCapacity()

void inet::power::SimpleCcBattery::setResidualCapacity ( C  newResidualCapacity)
protectedvirtual
79 {
80  residualCapacity = newResidualCapacity;
81  lastResidualCapacityUpdate = simTime();
82  if (residualCapacity == C(0))
83  EV_WARN << "Battery depleted" << endl;
85  EV_INFO << "Battery charged" << endl;
86  if (networkNode != nullptr)
87  executeNodeOperation(newResidualCapacity);
89 }

Referenced by initialize(), and updateResidualCapacity().

◆ updateDisplayString()

void inet::power::SimpleCcBattery::updateDisplayString ( ) const
protectedvirtual
43 {
44  if (getEnvir()->isGUI()) {
45  auto text = StringFormat::formatString(par("displayStringTextFormat"), this);
46  getDisplayString().setTagArg("t", 0, text);
47  }
48 }

Referenced by refreshDisplay().

◆ updateResidualCapacity()

void inet::power::SimpleCcBattery::updateResidualCapacity ( )
protectedvirtual
92 {
93  simtime_t currentTime = simTime();
94  if (currentTime != lastResidualCapacityUpdate) {
95  C newResidualCapacity = residualCapacity + s((currentTime - lastResidualCapacityUpdate).dbl()) * (totalCurrentGeneration - totalCurrentConsumption);
96  if (newResidualCapacity < C(0))
97  newResidualCapacity = C(0);
98  else if (newResidualCapacity > nominalCapacity)
99  newResidualCapacity = nominalCapacity;
100  setResidualCapacity(newResidualCapacity);
101  }
102 }

Referenced by updateTotalCurrentConsumption(), and updateTotalCurrentGeneration().

◆ updateTotalCurrentConsumption()

void inet::power::SimpleCcBattery::updateTotalCurrentConsumption ( )
overrideprotectedvirtual

◆ updateTotalCurrentGeneration()

void inet::power::SimpleCcBattery::updateTotalCurrentGeneration ( )
overrideprotectedvirtual

Member Data Documentation

◆ internalResistance

Ohm inet::power::SimpleCcBattery::internalResistance = Ohm(NaN)
protected

Referenced by initialize().

◆ lastResidualCapacityUpdate

simtime_t inet::power::SimpleCcBattery::lastResidualCapacityUpdate = -1
protected

◆ networkNode

cModule* inet::power::SimpleCcBattery::networkNode = nullptr
protected

◆ nodeStatus

NodeStatus* inet::power::SimpleCcBattery::nodeStatus = nullptr
protected

Referenced by executeNodeOperation(), and initialize().

◆ nominalCapacity

C inet::power::SimpleCcBattery::nominalCapacity = C(NaN)
protected

◆ nominalVoltage

V inet::power::SimpleCcBattery::nominalVoltage = V(NaN)
protected

Referenced by initialize().

◆ residualCapacity

C inet::power::SimpleCcBattery::residualCapacity = C(NaN)
protected

The documentation for this class was generated from the following files:
inet::findContainingNode
cModule * findContainingNode(const cModule *from)
Find the node containing the given module.
Definition: ModuleAccess.cc:31
inet::units::value::str
std::string str() const
Definition: Units.h:101
inet::power::SimpleCcBattery::getResidualChargeCapacity
virtual C getResidualChargeCapacity() const override
Returns the residual charge capacity in the range [0, nominalCapacity].
Definition: SimpleCcBattery.h:58
inet::power::ICcEnergyStorage::residualChargeCapacityChangedSignal
static simsignal_t residualChargeCapacityChangedSignal
The signal that is used to publish residual charge capacity changes also including when the energy st...
Definition: ICcEnergyStorage.h:32
inet::power::SimpleCcBattery::internalResistance
Ohm internalResistance
Definition: SimpleCcBattery.h:27
inet::power::SimpleCcBattery::networkNode
cModule * networkNode
Definition: SimpleCcBattery.h:33
inet::units::units::V
compose< W, pow< A, -1 > > V
Definition: Units.h:942
inet::power::CcEnergySinkBase::totalCurrentGeneration
A totalCurrentGeneration
Definition: CcEnergySinkBase.h:22
inet::power::SimpleCcBattery::nominalCapacity
C nominalCapacity
Definition: SimpleCcBattery.h:25
inet::power::CcEnergyStorageBase::initialize
virtual void initialize(int stage) override
Definition: CcEnergyStorageBase.cc:14
inet::power::SimpleCcBattery::setResidualCapacity
virtual void setResidualCapacity(C newResidualCapacity)
Definition: SimpleCcBattery.cc:78
inet::units::values::s
value< double, units::s > s
Definition: Units.h:1235
inet::power::SimpleCcBattery::updateDisplayString
virtual void updateDisplayString() const
Definition: SimpleCcBattery.cc:42
inet::units::units::C
compose< s, A > C
Definition: Units.h:941
inet::power::SimpleCcBattery::lastResidualCapacityUpdate
simtime_t lastResidualCapacityUpdate
Definition: SimpleCcBattery.h:31
inet::LifecycleOperation::StringMap
std::map< std::string, std::string > StringMap
Definition: LifecycleOperation.h:28
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
inet::LifecycleController::initiateOperation
virtual bool initiateOperation(LifecycleOperation *operation, IDoneCallback *completionCallback=nullptr)
Initiate an operation.
Definition: LifecycleController.cc:46
inet::math::round
int round(double d)
Returns an integer that corresponds to rounded double parameter.
Definition: INETMath.h:143
inet::units::unit
pow< internal::none, 0 > unit
Definition: Units.h:72
inet::power::SimpleCcBattery::nodeStatus
NodeStatus * nodeStatus
Definition: SimpleCcBattery.h:34
inet::power::SimpleCcBattery::getNominalChargeCapacity
virtual C getNominalChargeCapacity() const override
Returns the nominal charge capacity in the range [0, +infinity).
Definition: SimpleCcBattery.h:57
inet::NodeStatus::UP
@ UP
Definition: NodeStatus.h:28
inet::StringFormat::formatString
const char * formatString(IDirectiveResolver *resolver) const
Definition: StringFormat.cc:17
inet::power::SimpleCcBattery::updateResidualCapacity
virtual void updateResidualCapacity()
Definition: SimpleCcBattery.cc:91
inet::units::value::get
const value_type & get() const
Definition: Units.h:108
inet::power::CcEnergyStorageBase::updateTotalCurrentConsumption
virtual void updateTotalCurrentConsumption() override
Definition: CcEnergyStorageBase.cc:24
inet::power::CcEnergySourceBase::totalCurrentConsumption
A totalCurrentConsumption
Definition: CcEnergySourceBase.h:22
inet::power::SimpleCcBattery::residualCapacity
C residualCapacity
Definition: SimpleCcBattery.h:30
inet::power::SimpleCcBattery::nominalVoltage
V nominalVoltage
Definition: SimpleCcBattery.h:26
inet::power::CcEnergyStorageBase::updateTotalCurrentGeneration
virtual void updateTotalCurrentGeneration() override
Definition: CcEnergyStorageBase.cc:30
inet::NodeStatus::getState
virtual State getState() const
Definition: NodeStatus.h:35
inet::power::SimpleCcBattery::executeNodeOperation
virtual void executeNodeOperation(C newResidualCapacity)
Definition: SimpleCcBattery.cc:104
inet::units::units::Ohm
compose< V, pow< A, -1 > > Ohm
Definition: Units.h:944