MEB: improvements (#848)

- Don't regulate precharge voltage with external voltage 0.
- Improve log output
- Wait before starting precharge.
- MEB: Improve handling of data from battery BMS
- Use actual_Cellvoltage_lowest / highest instead of calculating min/max ourselves.
- Correct conversion of temperature_min/max _dC
- Correct total_capacity_Wh calculation
- Set overall battery_temperature_dC in extended datalayer
- Set celltemperature values in extended datalayer
- Set temp_points temperature values in extended datalayer
- Fix TODO comments that are already solved
- Add temp point PIDs and store in extended datalayer.
- Display temp points and cell temperatures in advanced battery page
- MEB: Add events start/end balancing
- Use actual precharge status for precharge bit send to BMS
- Only set lowest/highest cell voltage in datalayer when they have actually been received.
This commit is contained in:
Marijn van Galen 2025-02-04 08:42:54 +01:00 committed by GitHub
parent 21bcf3cf00
commit 566039be5d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 273 additions and 90 deletions

View file

@ -998,6 +998,23 @@ String advanced_battery_processor(const String& var) {
default:
content += String("?");
}
content += String("</h4><h4>Charging: ") + (datalayer_extended.meb.charging_active ? "active" : "not active");
content += String("</h4><h4>Balancing: ");
switch (datalayer_extended.meb.balancing_active) {
case 0:
content += String("init");
break;
case 1:
content += String("active");
break;
case 2:
content += String("inactive");
break;
default:
content += String("?");
}
content +=
String("</h4><h4>Slow charging: ") + (datalayer_extended.meb.balancing_request ? "requested" : "not requested");
content += "</h4><h4>Diagnostic: ";
switch (datalayer_extended.meb.battery_diagnostic) {
case 0:
@ -1127,6 +1144,27 @@ String advanced_battery_processor(const String& var) {
content += "<h4>Cell imbalance: " + String(rt_enum[datalayer_extended.meb.rt_cell_imbalance & 0x03]) + "</h4>";
content +=
"<h4>Battery unathorized: " + String(rt_enum[datalayer_extended.meb.rt_battery_unathorized & 0x03]) + "</h4>";
content +=
"<h4>Battery temperature: " + String(datalayer_extended.meb.battery_temperature_dC / 10.f, 1) + " &deg;C</h4>";
for (int i = 0; i < 3; i++) {
content += "<h4>Temperature points " + String(i * 6 + 1) + "-" + String(i * 6 + 6) + " :";
for (int j = 0; j < 6; j++)
content += " &nbsp;" + String(datalayer_extended.meb.temp_points[i * 6 + j], 1);
content += " &deg;C</h4>";
}
bool temps_done = false;
for (int i = 0; i < 7 && !temps_done; i++) {
content += "<h4>Cell temperatures " + String(i * 8 + 1) + "-" + String(i * 8 + 8) + " :";
for (int j = 0; j < 8; j++) {
if (datalayer_extended.meb.celltemperature_dC[i * 8 + j] == 865) {
temps_done = true;
break;
} else {
content += " &nbsp;" + String(datalayer_extended.meb.celltemperature_dC[i * 8 + j] / 10.f, 1);
}
}
content += " &deg;C</h4>";
}
#endif //MEB_BATTERY
#ifdef RENAULT_ZOE_GEN2_BATTERY