10#ifndef SEMF_APP_BATTERY_BATTERYMODELWITHOUTDATASET_H_
11#define SEMF_APP_BATTERY_BATTERYMODELWITHOUTDATASET_H_
35template <
typename T_CAPACITY,
typename T_SOCSOH,
typename T_VOLTAGE,
typename T_CURRENT,
typename T_TEMPERATURE>
57 void update(uint16_t timeDelta, T_VOLTAGE voltage, T_CURRENT current, T_TEMPERATURE temperature);
59 virtual void updateSoc(uint16_t timeDelta, T_VOLTAGE voltage, T_CURRENT current, T_TEMPERATURE temperature) = 0;
106 const T_CAPACITY m_designCapacity;
108 T_SOCSOH m_absoluteSoc = 0;
113template <
typename T_CAPACITY,
typename T_SOCSOH,
typename T_VOLTAGE,
typename T_CURRENT,
typename T_TEMPERATURE>
115: m_designCapacity(designCapacity)
119template <
typename T_CAPACITY,
typename T_SOCSOH,
typename T_VOLTAGE,
typename T_CURRENT,
typename T_TEMPERATURE>
121 T_TEMPERATURE temperature)
123 updateSoc(timeDelta, voltage, current, temperature);
127template <
typename T_CAPACITY,
typename T_SOCSOH,
typename T_VOLTAGE,
typename T_CURRENT,
typename T_TEMPERATURE>
131 return static_cast<T_SOCSOH
>(m_absoluteSoc / m_soh * 100);
136template <
typename T_CAPACITY,
typename T_SOCSOH,
typename T_VOLTAGE,
typename T_CURRENT,
typename T_TEMPERATURE>
139 return m_absoluteSoc;
142template <
typename T_CAPACITY,
typename T_SOCSOH,
typename T_VOLTAGE,
typename T_CURRENT,
typename T_TEMPERATURE>
148template <
typename T_CAPACITY,
typename T_SOCSOH,
typename T_VOLTAGE,
typename T_CURRENT,
typename T_TEMPERATURE>
151 return m_designCapacity;
154template <
typename T_CAPACITY,
typename T_SOCSOH,
typename T_VOLTAGE,
typename T_CURRENT,
typename T_TEMPERATURE>
157 return static_cast<T_CAPACITY
>(m_designCapacity * m_soh / 100);
160template <
typename T_CAPACITY,
typename T_SOCSOH,
typename T_VOLTAGE,
typename T_CURRENT,
typename T_TEMPERATURE>
163 return static_cast<T_CAPACITY
>(m_designCapacity * relativeSoc() / 100);
166template <
typename T_CAPACITY,
typename T_SOCSOH,
typename T_VOLTAGE,
typename T_CURRENT,
typename T_TEMPERATURE>
172template <
typename T_CAPACITY,
typename T_SOCSOH,
typename T_VOLTAGE,
typename T_CURRENT,
typename T_TEMPERATURE>
Simple battery model implementation without using a battery model.
T_CAPACITY fullChargeCapacity() const
Returns the battery capacity of a full charged battery influenced by the state of health.
virtual ~BatteryModelWithoutDataset()=default
virtual void updateSoc(uint16_t timeDelta, T_VOLTAGE voltage, T_CURRENT current, T_TEMPERATURE temperature)=0
Updates the state of charge relative to the current, voltage and temperature of the battery.
T_CAPACITY designCapacity() const
Returns the designed battery capacity.
BatteryModelWithoutDataset(T_CAPACITY designCapacity)
Constructor.
virtual void updateSoh()=0
T_SOCSOH relativeSoc() const
Returns the relative state of charge.
T_SOCSOH absoluteSoc() const
Returns the absolute state of charge.
void update(uint16_t timeDelta, T_VOLTAGE voltage, T_CURRENT current, T_TEMPERATURE temperature)
Updates the state of charge and state of health.
void setSoh(T_SOCSOH soh)
Sets the state of health.
T_CAPACITY remainingCapacity() const
Returns the remaining battery capacity.
void setAbsoluteSoc(T_SOCSOH soc)
Sets the absolute state of charge.
T_SOCSOH soh() const
Returns the state of health of charge.
Interface for using state of charge in a battery model.
Interface for using state of health in a battery model.