Skip to content

Commit 547866a

Browse files
Fix charging_station_output when totalPower limit is reached (Supersedes previous [PR #17595]) (#17674)
* fixing charging_station_output when totalPower limit is reached #17173 Signed-off-by: lorenzo.ghiro <lorenzoghiro@gmail.com>
1 parent 40320c8 commit 547866a

File tree

2 files changed

+85
-64
lines changed

2 files changed

+85
-64
lines changed

src/microsim/trigger/MSChargingStation.cpp

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,16 +202,37 @@ MSChargingStation::checkTotalPower(SUMOTime currentTime) {
202202
if (sumReqWh > capWh && sumReqWh > 0) {
203203
const double ratio = capWh / sumReqWh;
204204
for (auto* charge : thisStepCharges) {
205+
MSDevice_Battery* battery = myChargedBatteries[charge->vehicleID];
206+
double abc = battery->getActualBatteryCapacity();
207+
205208
const double deliveredWh = charge->WCharged * ratio;
206209
const double excessWh = charge->WCharged - deliveredWh;
207210
charge->WCharged = deliveredWh;
211+
if (charge->chargingEfficiency > 0 && TS > 0) {
212+
// derive power [W] from energy [Wh]: Power = (Energy [Wh] * 3600) [Ws] / (efficiency * TS [s])
213+
// ergo we are doing [Ws/s -> W]
214+
charge->chargingPower = (deliveredWh * 3600.0) / (charge->chargingEfficiency * TS);
215+
}
216+
charge->actualBatteryCapacity = abc - excessWh;
217+
charge->totalEnergyCharged -= excessWh;
208218

209219
// inform also battery device
210-
MSDevice_Battery* battery = myChargedBatteries[charge->vehicleID];
211-
double abc = battery->getActualBatteryCapacity();
212220
battery->setActualBatteryCapacity(abc - excessWh);
213221
battery->setEnergyCharged(deliveredWh);
222+
myTotalCharge -= excessWh;
223+
224+
#ifdef DEBUG_SIMSTEP
225+
std::cout << "time=" << time2string(currentTime)
226+
<< " vehID=" << charge->vehicleID
227+
<< " requestedWh=" << (deliveredWh + excessWh)
228+
<< " deliveredWh=" << deliveredWh
229+
<< " deliveredW=" << charge->chargingPower
230+
<< " ratio=" << ratio << std::endl;
231+
#endif
214232
}
233+
#ifdef DEBUG_SIMSTEP
234+
std::cout << "===============\n\n";
235+
#endif
215236
}
216237
return DELTA_T;
217238
}

0 commit comments

Comments
 (0)