Correct display of grid recharge cycles in the battery level graph
This commit is contained in:
parent
1b14a62f6e
commit
6d9d3aa2da
@ -117,7 +117,7 @@ function initializeSimulator(container: HTMLElement) {
|
|||||||
|
|
||||||
batteryChargeGraph.viewport.setData({ x: 0, y: 0, width: 365*24, height: parameters.batteryCapacity });
|
batteryChargeGraph.viewport.setData({ x: 0, y: 0, width: 365*24, height: parameters.batteryCapacity });
|
||||||
batteryChargeGraph.viewport.setView({ x: marginLeft, y: batteryChargeGraph.height - marginBottom, width: batteryChargeGraph.width - (marginLeft+marginRight), height: -batteryChargeGraph.height+(marginTop+marginBottom) });
|
batteryChargeGraph.viewport.setView({ x: marginLeft, y: batteryChargeGraph.height - marginBottom, width: batteryChargeGraph.width - (marginLeft+marginRight), height: -batteryChargeGraph.height+(marginTop+marginBottom) });
|
||||||
batteryChargeGraph.graph(simulationResult.batteryLevel, simulationResult.batteryLevel.map((x, idx) => x == 0 || idx == simulationResult.batteryLevel.length - 2 ? 1 : 0), [{className: ''}, {className: 'grid-recharge'}]);
|
batteryChargeGraph.graph(simulationResult.batteryLevel, simulationResult.gridCharge.map(x => x ? 1 : 0), [{className: ''}, {className: 'grid-recharge'}]);
|
||||||
let months = ['Jan', 'Fev', 'Mar', 'Avr', 'Mai', 'Jui', 'Jui', 'Aou', 'Sep', 'Oct', 'Nov', 'Dec'];
|
let months = ['Jan', 'Fev', 'Mar', 'Avr', 'Mai', 'Jui', 'Jui', 'Aou', 'Sep', 'Oct', 'Nov', 'Dec'];
|
||||||
let monthWidth = 365*24/12
|
let monthWidth = 365*24/12
|
||||||
for(let month = 0; month < 12; ++month) {
|
for(let month = 0; month < 12; ++month) {
|
||||||
|
|||||||
@ -105,6 +105,7 @@ namespace Simulator {
|
|||||||
vehicle: Vehicle;
|
vehicle: Vehicle;
|
||||||
|
|
||||||
batteryLevel: number[]; // Remaining energy in the battery over time (one entry per hour), in Wh
|
batteryLevel: number[]; // Remaining energy in the battery over time (one entry per hour), in Wh
|
||||||
|
gridCharge: boolean[]; // Indicates when the battery has to be charged from grid power (one entry per hour)
|
||||||
gridChargeCount: number;
|
gridChargeCount: number;
|
||||||
cumulatedGridRechargeEnergy: number; // Cumulated energy added to the battery from the power grid, in Wh of battery charge (actual power grid consumption will be slightly higer due to losses)
|
cumulatedGridRechargeEnergy: number; // Cumulated energy added to the battery from the power grid, in Wh of battery charge (actual power grid consumption will be slightly higer due to losses)
|
||||||
cumulatedSolarRechargeEnergy: number; // Cumulated energy added to the battery from the solar panel, in Wh of battery charge (actual generated power is slightly higher due to losses)
|
cumulatedSolarRechargeEnergy: number; // Cumulated energy added to the battery from the solar panel, in Wh of battery charge (actual generated power is slightly higher due to losses)
|
||||||
@ -127,6 +128,7 @@ namespace Simulator {
|
|||||||
vehicle: vehicle,
|
vehicle: vehicle,
|
||||||
|
|
||||||
batteryLevel: [],
|
batteryLevel: [],
|
||||||
|
gridCharge: [],
|
||||||
gridChargeCount: 0,
|
gridChargeCount: 0,
|
||||||
cumulatedGridRechargeEnergy: 0,
|
cumulatedGridRechargeEnergy: 0,
|
||||||
cumulatedSolarRechargeEnergy: 0,
|
cumulatedSolarRechargeEnergy: 0,
|
||||||
@ -179,6 +181,7 @@ namespace Simulator {
|
|||||||
for(let day = 0; day < 365; ++day) {
|
for(let day = 0; day < 365; ++day) {
|
||||||
for(let hour = 0; hour < 24; ++hour) {
|
for(let hour = 0; hour < 24; ++hour) {
|
||||||
let hourIdx = day * 24 + hour;
|
let hourIdx = day * 24 + hour;
|
||||||
|
result.gridCharge[hourIdx] = false;
|
||||||
|
|
||||||
planning.getOuting(day % 7, hour, outing);
|
planning.getOuting(day % 7, hour, outing);
|
||||||
|
|
||||||
@ -202,12 +205,13 @@ namespace Simulator {
|
|||||||
solarCharge -= remainingBatteryCharge - vehicle.batteryCapacity;
|
solarCharge -= remainingBatteryCharge - vehicle.batteryCapacity;
|
||||||
remainingBatteryCharge = vehicle.batteryCapacity;
|
remainingBatteryCharge = vehicle.batteryCapacity;
|
||||||
}
|
}
|
||||||
else if(remainingBatteryCharge <= lowBatteryThreshold || (day==364 && hour==23)) {
|
else if(remainingBatteryCharge <= lowBatteryThreshold) {
|
||||||
gridRechargeFrom = remainingBatteryChargeBeforeOuting;
|
gridRechargeFrom = remainingBatteryChargeBeforeOuting;
|
||||||
|
|
||||||
let rechargeEnergy = vehicle.batteryCapacity - remainingBatteryChargeBeforeOuting;
|
let rechargeEnergy = vehicle.batteryCapacity - remainingBatteryChargeBeforeOuting;
|
||||||
remainingBatteryCharge += rechargeEnergy;
|
remainingBatteryCharge += rechargeEnergy;
|
||||||
result.cumulatedGridRechargeEnergy += rechargeEnergy;
|
result.cumulatedGridRechargeEnergy += rechargeEnergy;
|
||||||
|
result.gridCharge[hourIdx] = true;
|
||||||
result.gridChargeCount += 1;
|
result.gridChargeCount += 1;
|
||||||
|
|
||||||
if(remainingBatteryCharge < 0)
|
if(remainingBatteryCharge < 0)
|
||||||
@ -222,6 +226,7 @@ namespace Simulator {
|
|||||||
let secondRechargeEnergy = vehicle.batteryCapacity;
|
let secondRechargeEnergy = vehicle.batteryCapacity;
|
||||||
remainingBatteryCharge = vehicle.batteryCapacity;
|
remainingBatteryCharge = vehicle.batteryCapacity;
|
||||||
result.cumulatedGridRechargeEnergy += secondRechargeEnergy;
|
result.cumulatedGridRechargeEnergy += secondRechargeEnergy;
|
||||||
|
result.gridCharge[hourIdx] = true;
|
||||||
result.gridChargeCount += 1;
|
result.gridChargeCount += 1;
|
||||||
gridRechargeFrom = 0;
|
gridRechargeFrom = 0;
|
||||||
}
|
}
|
||||||
@ -231,6 +236,10 @@ namespace Simulator {
|
|||||||
result.cumulatedSolarRechargeEnergy += solarCharge;
|
result.cumulatedSolarRechargeEnergy += solarCharge;
|
||||||
|
|
||||||
result.batteryLevel[hourIdx] = gridRechargeFrom >= 0 ? gridRechargeFrom : remainingBatteryCharge;
|
result.batteryLevel[hourIdx] = gridRechargeFrom >= 0 ? gridRechargeFrom : remainingBatteryCharge;
|
||||||
|
if(hourIdx > 0 && result.gridCharge[hourIdx - 1])
|
||||||
|
{
|
||||||
|
result.batteryLevel[hourIdx] = vehicle.batteryCapacity;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user