semf
batterymodelwithoutdataset.h
Go to the documentation of this file.
1
10#ifndef SEMF_APP_BATTERY_BATTERYMODELWITHOUTDATASET_H_
11#define SEMF_APP_BATTERY_BATTERYMODELWITHOUTDATASET_H_
12
16
17namespace semf
18{
19namespace app
20{
35template <typename T_CAPACITY, typename T_SOCSOH, typename T_VOLTAGE, typename T_CURRENT, typename T_TEMPERATURE>
36class BatteryModelWithoutDataset : public BatteryStateOfCharge<T_SOCSOH, T_VOLTAGE, T_CURRENT, T_TEMPERATURE>,
37 public BatteryStateOfHealth<T_SOCSOH, T_VOLTAGE, T_CURRENT, T_TEMPERATURE>
38{
39public:
44 explicit BatteryModelWithoutDataset(T_CAPACITY designCapacity);
45 virtual ~BatteryModelWithoutDataset() = default;
46
57 void update(uint16_t timeDelta, T_VOLTAGE voltage, T_CURRENT current, T_TEMPERATURE temperature);
58
59 virtual void updateSoc(uint16_t timeDelta, T_VOLTAGE voltage, T_CURRENT current, T_TEMPERATURE temperature) = 0;
60 virtual void updateSoh() = 0;
66 T_SOCSOH relativeSoc() const;
71 T_SOCSOH absoluteSoc() const;
76 T_SOCSOH soh() const;
81 T_CAPACITY designCapacity() const;
87 T_CAPACITY fullChargeCapacity() const;
92 T_CAPACITY remainingCapacity() const;
97 void setAbsoluteSoc(T_SOCSOH soc);
102 void setSoh(T_SOCSOH soh);
103
104private:
106 const T_CAPACITY m_designCapacity;
108 T_SOCSOH m_absoluteSoc = 0;
110 T_SOCSOH m_soh = 0;
111};
112
113template <typename T_CAPACITY, typename T_SOCSOH, typename T_VOLTAGE, typename T_CURRENT, typename T_TEMPERATURE>
115: m_designCapacity(designCapacity)
116{
117}
118
119template <typename T_CAPACITY, typename T_SOCSOH, typename T_VOLTAGE, typename T_CURRENT, typename T_TEMPERATURE>
121 T_TEMPERATURE temperature)
122{
123 updateSoc(timeDelta, voltage, current, temperature);
124 updateSoh();
125}
126
127template <typename T_CAPACITY, typename T_SOCSOH, typename T_VOLTAGE, typename T_CURRENT, typename T_TEMPERATURE>
129{
130 if (m_soh != 0)
131 return static_cast<T_SOCSOH>(m_absoluteSoc / m_soh * 100);
132 else
133 return 0;
134}
135
136template <typename T_CAPACITY, typename T_SOCSOH, typename T_VOLTAGE, typename T_CURRENT, typename T_TEMPERATURE>
138{
139 return m_absoluteSoc;
140}
141
142template <typename T_CAPACITY, typename T_SOCSOH, typename T_VOLTAGE, typename T_CURRENT, typename T_TEMPERATURE>
144{
145 return m_soh;
146}
147
148template <typename T_CAPACITY, typename T_SOCSOH, typename T_VOLTAGE, typename T_CURRENT, typename T_TEMPERATURE>
150{
151 return m_designCapacity;
152}
153
154template <typename T_CAPACITY, typename T_SOCSOH, typename T_VOLTAGE, typename T_CURRENT, typename T_TEMPERATURE>
156{
157 return static_cast<T_CAPACITY>(m_designCapacity * m_soh / 100);
158}
159
160template <typename T_CAPACITY, typename T_SOCSOH, typename T_VOLTAGE, typename T_CURRENT, typename T_TEMPERATURE>
162{
163 return static_cast<T_CAPACITY>(m_designCapacity * relativeSoc() / 100);
164}
165
166template <typename T_CAPACITY, typename T_SOCSOH, typename T_VOLTAGE, typename T_CURRENT, typename T_TEMPERATURE>
168{
169 m_absoluteSoc = soc;
170}
171
172template <typename T_CAPACITY, typename T_SOCSOH, typename T_VOLTAGE, typename T_CURRENT, typename T_TEMPERATURE>
174{
175 m_soh = soh;
176}
177} /* namespace app */
178} /* namespace semf */
179#endif /* SEMF_APP_BATTERY_BATTERYMODELWITHOUTDATASET_H_ */
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.
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.