Removed User SOC (EVC) because its unreliable

This commit is contained in:
Carsten Schmiemann 2022-06-29 02:03:57 +02:00
parent 798acb1839
commit 15e8d58744
6 changed files with 7 additions and 26 deletions

View file

@ -254,11 +254,11 @@ void OvmsVehicleRenaultZoePh2OBD::IncomingEVC(uint16_t type, uint16_t pid, const
//ESP_LOGD(TAG, "2B8A EVC ms_v_charge_voltage: %f", (CAN_UINT(0) * 0.5)); //ESP_LOGD(TAG, "2B8A EVC ms_v_charge_voltage: %f", (CAN_UINT(0) * 0.5));
break; break;
} }
case 0x21CD: { // User SOC /*case 0x21CD: { // User SOC
mt_bat_user_soc->SetValue((float) (CAN_UINT(0)), Percentage); mt_bat_user_soc->SetValue((float) (CAN_UINT(0)), Percentage);
//ESP_LOGD(TAG, "21CD EVC mt_bat_user_soc: %f", (float) CAN_UINT(0)); //ESP_LOGD(TAG, "21CD EVC mt_bat_user_soc: %f", (float) CAN_UINT(0));
break; break;
} }*/
default: { default: {
char *buf = NULL; char *buf = NULL;

View file

@ -45,7 +45,7 @@ void OvmsVehicleRenaultZoePh2OBD::IncomingLBC(uint16_t type, uint16_t pid, const
break; break;
} }
case 0x9002: { //Battery SOC case 0x9002: { //Battery SOC
mt_bat_lbc_soc->SetValue((float) (CAN_UINT(0)) * 0.01, Percentage); StandardMetrics.ms_v_bat_soc->SetValue((float) (CAN_UINT(0)) * 0.01, Percentage);
StandardMetrics.ms_v_bat_cac->SetValue(Bat_cell_capacity * CAN_UINT(0) * 0.0001); StandardMetrics.ms_v_bat_cac->SetValue(Bat_cell_capacity * CAN_UINT(0) * 0.0001);
//ESP_LOGD(TAG, "9002 LBC mt_bat_lbc_soc: %f", CAN_UINT(0) * 0.01); //ESP_LOGD(TAG, "9002 LBC mt_bat_lbc_soc: %f", CAN_UINT(0) * 0.01);
break; break;

View file

@ -59,7 +59,7 @@ static const OvmsVehicle::poll_pid_t renault_zoe_polls[] = {
{ 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x300D, { 0, 10, 300, 3 }, 0, ISOTP_EXTFRAME }, // AC mains current { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x300D, { 0, 10, 300, 3 }, 0, ISOTP_EXTFRAME }, // AC mains current
{ 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x300B, { 0, 2, 300, 10 }, 0, ISOTP_EXTFRAME }, // AC phases { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x300B, { 0, 2, 300, 10 }, 0, ISOTP_EXTFRAME }, // AC phases
{ 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x2B8A, { 0, 2, 300, 10 }, 0, ISOTP_EXTFRAME }, // AC mains voltage { 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x2B8A, { 0, 2, 300, 10 }, 0, ISOTP_EXTFRAME }, // AC mains voltage
{ 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x21CD, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // User SOC //{ 0x18dadaf1, 0x18daf1da, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0x21CD, { 0, 10, 10, 10 }, 0, ISOTP_EXTFRAME }, // User SOC
//BCM //BCM
//{ 0x745, 0x765, VEHICLE_POLL_TYPE_OBDIISESSION, SESSION_DEFAULT, { 0, 60, 60, 60 }, 0, ISOTP_STD }, // OBD Extended Diagnostic Session //{ 0x745, 0x765, VEHICLE_POLL_TYPE_OBDIISESSION, SESSION_DEFAULT, { 0, 60, 60, 60 }, 0, ISOTP_STD }, // OBD Extended Diagnostic Session

View file

@ -46,14 +46,13 @@ using namespace std;
void OvmsVehicleRenaultZoePh2OBD::WebCfgCommon(PageEntry_t& p, PageContext_t& c) void OvmsVehicleRenaultZoePh2OBD::WebCfgCommon(PageEntry_t& p, PageContext_t& c)
{ {
std::string error, rangeideal, battcapacity; std::string error, rangeideal, battcapacity;
bool UseBMScalculation, UseBMSsoc; bool UseBMScalculation;
if (c.method == "POST") { if (c.method == "POST") {
rangeideal = c.getvar("rangeideal"); rangeideal = c.getvar("rangeideal");
battcapacity = c.getvar("battcapacity"); battcapacity = c.getvar("battcapacity");
//UseCarTrip = (c.getvar("UseCarTrip") == "no"); //UseCarTrip = (c.getvar("UseCarTrip") == "no");
UseBMScalculation = (c.getvar("UseBMScalculation") == "no"); UseBMScalculation = (c.getvar("UseBMScalculation") == "no");
UseBMSsoc = (c.getvar("UseBMSsoc") == "no");
if (!rangeideal.empty()) { if (!rangeideal.empty()) {
int v = atoi(rangeideal.c_str()); int v = atoi(rangeideal.c_str());
@ -66,7 +65,6 @@ void OvmsVehicleRenaultZoePh2OBD::WebCfgCommon(PageEntry_t& p, PageContext_t& c)
MyConfig.SetParamValue("xrz2o", "battcapacity", battcapacity); MyConfig.SetParamValue("xrz2o", "battcapacity", battcapacity);
//MyConfig.SetParamValueBool("xrz2o", "UseCarTrip", UseCarTrip); //MyConfig.SetParamValueBool("xrz2o", "UseCarTrip", UseCarTrip);
MyConfig.SetParamValueBool("xrz2o", "UseBMScalculation", UseBMScalculation); MyConfig.SetParamValueBool("xrz2o", "UseBMScalculation", UseBMScalculation);
MyConfig.SetParamValueBool("xrz2o", "UseBMSsoc", UseBMSsoc);
c.head(200); c.head(200);
c.alert("success", "<p class=\"lead\">Renault Zoe Ph2 battery setup saved.</p>"); c.alert("success", "<p class=\"lead\">Renault Zoe Ph2 battery setup saved.</p>");
@ -85,7 +83,6 @@ void OvmsVehicleRenaultZoePh2OBD::WebCfgCommon(PageEntry_t& p, PageContext_t& c)
battcapacity = MyConfig.GetParamValue("xrz2o", "battcapacity", "52000"); battcapacity = MyConfig.GetParamValue("xrz2o", "battcapacity", "52000");
//UseCarTrip = MyConfig.GetParamValueBool("xrz2o", "UseCarTrip", false); //UseCarTrip = MyConfig.GetParamValueBool("xrz2o", "UseCarTrip", false);
UseBMScalculation = MyConfig.GetParamValueBool("xrz2o", "UseBMScalculation", false); UseBMScalculation = MyConfig.GetParamValueBool("xrz2o", "UseBMScalculation", false);
UseBMSsoc = MyConfig.GetParamValueBool("xrz2o", "UseBMSsoc", false);
c.head(200); c.head(200);
} }
@ -118,11 +115,6 @@ void OvmsVehicleRenaultZoePh2OBD::WebCfgCommon(PageEntry_t& p, PageContext_t& c)
c.input_radio_option("UseBMScalculation", "BMS-based calculation", "no", UseBMScalculation == true); c.input_radio_option("UseBMScalculation", "BMS-based calculation", "no", UseBMScalculation == true);
c.input_radio_end(""); c.input_radio_end("");
c.input_radio_start("State of Charge - Display", "UseBMSsoc");
c.input_radio_option("UseBMSsoc", "User SOC from EVC", "yes", UseBMSsoc == false);
c.input_radio_option("UseBMSsoc", "Real SOC from BMS", "no", UseBMSsoc == true);
c.input_radio_end("");
c.fieldset_end(); c.fieldset_end();
c.print("<hr>"); c.print("<hr>");

View file

@ -90,8 +90,6 @@ OvmsVehicleRenaultZoePh2OBD::OvmsVehicleRenaultZoePh2OBD() {
mt_hvac_compressor_pressure = MyMetrics.InitFloat("zph2.h.compressor.pressure", SM_STALE_MID, 0, Bar); mt_hvac_compressor_pressure = MyMetrics.InitFloat("zph2.h.compressor.pressure", SM_STALE_MID, 0, Bar);
mt_hvac_compressor_power = MyMetrics.InitFloat("zph2.h.compressor.power", SM_STALE_MID, 0, Watts); mt_hvac_compressor_power = MyMetrics.InitFloat("zph2.h.compressor.power", SM_STALE_MID, 0, Watts);
mt_hvac_compressor_mode = MyMetrics.InitString("zph2.h.compressor.mode", SM_STALE_MID, 0, Other); mt_hvac_compressor_mode = MyMetrics.InitString("zph2.h.compressor.mode", SM_STALE_MID, 0, Other);
mt_bat_lbc_soc = MyMetrics.InitFloat("zph2.b.lbc.soc", SM_STALE_MAX, 0, Percentage, true);
mt_bat_user_soc = MyMetrics.InitFloat("zph2.b.user.soc", SM_STALE_MAX, 0, Percentage, true);
// BMS configuration: // BMS configuration:
BmsSetCellArrangementVoltage(96, 1); BmsSetCellArrangementVoltage(96, 1);
@ -119,7 +117,6 @@ void OvmsVehicleRenaultZoePh2OBD::ConfigChanged(OvmsConfigParam* param) {
m_battery_capacity = MyConfig.GetParamValueInt("xrz2o", "battcapacity", 52000); m_battery_capacity = MyConfig.GetParamValueInt("xrz2o", "battcapacity", 52000);
m_UseCarTrip = MyConfig.GetParamValueBool("xrz2o", "UseCarTrip", false); m_UseCarTrip = MyConfig.GetParamValueBool("xrz2o", "UseCarTrip", false);
m_UseBMScalculation = MyConfig.GetParamValueBool("xrz2o", "UseBMScalculation", false); m_UseBMScalculation = MyConfig.GetParamValueBool("xrz2o", "UseBMScalculation", false);
m_UseBMSsoc = MyConfig.GetParamValueBool("xrz2o", "UseBMSsoc", false);
StandardMetrics.ms_v_bat_range_ideal->SetValue(m_range_ideal, Kilometers); StandardMetrics.ms_v_bat_range_ideal->SetValue(m_range_ideal, Kilometers);
if (m_battery_capacity == 52000) { if (m_battery_capacity == 52000) {
Bat_cell_capacity = 78.0 * 2 * (StandardMetrics.ms_v_bat_soh->AsFloat() / 100.0); Bat_cell_capacity = 78.0 * 2 * (StandardMetrics.ms_v_bat_soh->AsFloat() / 100.0);
@ -130,7 +127,7 @@ void OvmsVehicleRenaultZoePh2OBD::ConfigChanged(OvmsConfigParam* param) {
if (m_battery_capacity == 22000) { if (m_battery_capacity == 22000) {
Bat_cell_capacity = 36.0 * 2 * (StandardMetrics.ms_v_bat_soh->AsFloat() / 100.0); Bat_cell_capacity = 36.0 * 2 * (StandardMetrics.ms_v_bat_soh->AsFloat() / 100.0);
} }
ESP_LOGI(TAG, "Renault Zoe Ph2 (OBD) reload configuration: Range ideal: %d, Battery capacity: %d, Use Car trip counter: %s, Use BMS as energy counter: %s, Use BMS for SOC: %s", m_range_ideal, m_battery_capacity, m_UseCarTrip ? "Yes" : "No", m_UseBMScalculation ? "yes" : "no", m_UseBMSsoc ? "yes" : "no"); ESP_LOGI(TAG, "Renault Zoe Ph2 (OBD) reload configuration: Range ideal: %d, Battery capacity: %d, Use Car trip counter: %s, Use BMS as energy counter: %s", m_range_ideal, m_battery_capacity, m_UseCarTrip ? "Yes" : "No", m_UseBMScalculation ? "yes" : "no");
} }
void OvmsVehicleRenaultZoePh2OBD::ZoeWakeUp() { void OvmsVehicleRenaultZoePh2OBD::ZoeWakeUp() {
@ -225,7 +222,7 @@ void OvmsVehicleRenaultZoePh2OBD::IncomingPollReply(canbus* bus, uint16_t type,
} }
int OvmsVehicleRenaultZoePh2OBD::calcMinutesRemaining(float charge_voltage, float charge_current) { int OvmsVehicleRenaultZoePh2OBD::calcMinutesRemaining(float charge_voltage, float charge_current) {
float bat_soc = mt_bat_lbc_soc->AsFloat(100); float bat_soc = StandardMetrics.ms_v_bat_soc->AsFloat(100);
float remaining_wh = m_battery_capacity - (m_battery_capacity * bat_soc / 100.0); float remaining_wh = m_battery_capacity - (m_battery_capacity * bat_soc / 100.0);
float remaining_hours = remaining_wh / (charge_current * charge_voltage); float remaining_hours = remaining_wh / (charge_current * charge_voltage);
@ -372,11 +369,6 @@ void OvmsVehicleRenaultZoePh2OBD::Ticker1(uint32_t ticker) {
} }
StandardMetrics.ms_v_bat_range_est->SetValue((m_range_ideal * (StandardMetrics.ms_v_bat_soc->AsFloat(1) * 0.01)), Kilometers); StandardMetrics.ms_v_bat_range_est->SetValue((m_range_ideal * (StandardMetrics.ms_v_bat_soc->AsFloat(1) * 0.01)), Kilometers);
if(m_UseBMSsoc) {
StandardMetrics.ms_v_bat_soc->SetValue(mt_bat_lbc_soc->AsFloat(0));
} else {
StandardMetrics.ms_v_bat_soc->SetValue(mt_bat_user_soc->AsFloat(0));
}
} }
class OvmsVehicleRenaultZoePh2OBDInit { class OvmsVehicleRenaultZoePh2OBDInit {

View file

@ -83,7 +83,6 @@ class OvmsVehicleRenaultZoePh2OBD : public OvmsVehicle {
int m_battery_capacity; int m_battery_capacity;
bool m_UseCarTrip = false; bool m_UseCarTrip = false;
bool m_UseBMScalculation = false; bool m_UseBMScalculation = false;
bool m_UseBMSsoc = false;
char zoe_vin[18] = ""; char zoe_vin[18] = "";
void IncomingINV(uint16_t type, uint16_t pid, const char* data, uint16_t len); void IncomingINV(uint16_t type, uint16_t pid, const char* data, uint16_t len);
void IncomingEVC(uint16_t type, uint16_t pid, const char* data, uint16_t len); void IncomingEVC(uint16_t type, uint16_t pid, const char* data, uint16_t len);
@ -112,8 +111,6 @@ class OvmsVehicleRenaultZoePh2OBD : public OvmsVehicle {
OvmsMetricFloat *mt_bat_aux_power_ptc; //Power usage by PTCs OvmsMetricFloat *mt_bat_aux_power_ptc; //Power usage by PTCs
OvmsMetricFloat *mt_bat_max_charge_power; //Battery max allowed charge, recd power OvmsMetricFloat *mt_bat_max_charge_power; //Battery max allowed charge, recd power
OvmsMetricFloat *mt_bat_cycles; //Battery full charge cycles OvmsMetricFloat *mt_bat_cycles; //Battery full charge cycles
OvmsMetricFloat *mt_bat_lbc_soc; //Battery real SOC by BMS
OvmsMetricFloat *mt_bat_user_soc; //Battery user SOC by Cluster
OvmsMetricFloat *mt_main_power_available; //Mains power available OvmsMetricFloat *mt_main_power_available; //Mains power available
OvmsMetricString *mt_main_phases; //Mains phases used OvmsMetricString *mt_main_phases; //Mains phases used
OvmsMetricFloat *mt_main_phases_num; //Mains phases used OvmsMetricFloat *mt_main_phases_num; //Mains phases used