diff --git a/Software/src/battery/KIA-HYUNDAI-64-BATTERY.cpp b/Software/src/battery/KIA-HYUNDAI-64-BATTERY.cpp index 43dbdb7e..f2b0f29d 100644 --- a/Software/src/battery/KIA-HYUNDAI-64-BATTERY.cpp +++ b/Software/src/battery/KIA-HYUNDAI-64-BATTERY.cpp @@ -36,24 +36,11 @@ static int8_t temperature_water_inlet = 0; static uint8_t batteryManagementMode = 0; static uint8_t BMS_ign = 0; static int16_t poll_data_pid = 0; -static int16_t poll109 = 0; -static int16_t pollA2A = 0; -static int16_t poll200 = 0; -static int16_t poll201 = 0; -static int16_t poll2B0 = 0; -static int16_t poll450 = 0; -static int16_t poll471 = 0; -static int16_t poll523 = 0; static int8_t heatertemp = 0; static uint8_t batteryRelay = 0; static int8_t powerRelayTemperature = 0; static uint16_t inverterVoltageFrameHigh = 0; static uint16_t inverterVoltage = 0; -static int8_t radiatorTemperature = 0; -static int8_t chargeTemperature = 0; -static int8_t fanMode = 0; -static int8_t fanSpeed = 0; -static int8_t state3F6 = 0; static uint8_t counter = 0; static uint8_t counter_200 = 0; @@ -282,15 +269,15 @@ void update_values_kiaHyundai_64_battery() { //This function maps all the value Serial.print("BmsManagementMode "); Serial.print((uint8_t)batteryManagementMode, BIN); if (bitRead((uint8_t)BMS_ign, 2) == 1) { - Serial.print(" | BmsIgnitionON"); + Serial.print(" | BmsIgnition ON"); } else { - Serial.print(" | BmsIgnitionOFF"); + Serial.print(" | BmsIgnition OFF"); } if (bitRead((uint8_t)batteryRelay, 0) == 1) { - Serial.print(" | BMS Output ON"); + Serial.print(" | PowerRelay ON"); } else { - Serial.print(" | BMS Output OFF"); + Serial.print(" | PowerRelay OFF"); } Serial.print(" | Inverter "); Serial.print(inverterVoltage); @@ -301,7 +288,6 @@ void update_values_kiaHyundai_64_battery() { //This function maps all the value void receive_can_kiaHyundai_64_battery(CAN_frame_t rx_frame) { switch (rx_frame.MsgID) { case 0x4DE: - radiatorTemperature = rx_frame.data.u8[4]; //-15 break; case 0x542: //BMS SOC CANstillAlive = 12; //We use this message to verify that BMS is still alive @@ -313,7 +299,7 @@ void receive_can_kiaHyundai_64_battery(CAN_frame_t rx_frame) { case 0x595: batteryVoltage = (rx_frame.data.u8[7] << 8) + rx_frame.data.u8[6]; batteryAmps = (rx_frame.data.u8[5] << 8) + rx_frame.data.u8[4]; - if (counter > 51) { + if (counter_200 > 3) { KIA_HYUNDAI_524.data.u8[0] = (uint8_t)(batteryVoltage / 10); KIA_HYUNDAI_524.data.u8[1] = (uint8_t)((batteryVoltage / 10) >> 8); } //VCU measured voltage sent back to bms @@ -324,16 +310,13 @@ void receive_can_kiaHyundai_64_battery(CAN_frame_t rx_frame) { temperatureMax = rx_frame.data.u8[7]; //Highest temp in battery break; case 0x598: - chargeTemperature = rx_frame.data.u8[7]; //ChargeportTemperature break; case 0x5D5: waterleakageSensor = rx_frame.data.u8[3]; //Water sensor inside pack, value 164 is no water --> 0 is short powerRelayTemperature = rx_frame.data.u8[7]; break; case 0x5D8: - if (counter < 200) { - counter++; - } + counter = 1; //PID data is polled after last message sent from battery: if (poll_data_pid >= 10) { //polling one of ten PIDs at 100ms, resolution = 1s @@ -378,7 +361,6 @@ void receive_can_kiaHyundai_64_battery(CAN_frame_t rx_frame) { CellVoltMax_mV = (rx_frame.data.u8[7] * 20); //(volts *50) *20 =mV } if (poll_data_pid == 5) { - //airbag = rx_frame.data.u8[6]; Not needed heatertemp = rx_frame.data.u8[7]; } break; @@ -387,8 +369,6 @@ void receive_can_kiaHyundai_64_battery(CAN_frame_t rx_frame) { CellVmaxNo = rx_frame.data.u8[1]; CellVminNo = rx_frame.data.u8[3]; CellVoltMin_mV = (rx_frame.data.u8[2] * 20); //(volts *50) *20 =mV - fanMode = rx_frame.data.u8[4]; - fanSpeed = rx_frame.data.u8[5]; } else if (poll_data_pid == 5) { batterySOH = ((rx_frame.data.u8[2] << 8) + rx_frame.data.u8[3]); } @@ -443,7 +423,11 @@ void send_can_kiaHyundai_64_battery() { break; case 3: KIA_HYUNDAI_200.data.u8[5] = 0xD7; - ++counter_200; + if (counter == 1) { + ++counter_200; + } else { + counter_200 = 0; + } break; case 4: KIA_HYUNDAI_200.data.u8[3] = 0x10; diff --git a/Software/src/devboard/webserver/webserver.cpp b/Software/src/devboard/webserver/webserver.cpp index ca6e5357..915c32b5 100644 --- a/Software/src/devboard/webserver/webserver.cpp +++ b/Software/src/devboard/webserver/webserver.cpp @@ -264,12 +264,12 @@ String processor(const String& var) { float tempMaxFloat = 0; float tempMinFloat = 0; if (temperature_max > 32767) { //Handle negative values on this unsigned value - tempMaxFloat = static_cast(-(65535 - temperature_max)) / 10.0; // Convert to float and divide by 10 + tempMaxFloat = static_cast(-(65536 - temperature_max)) / 10.0; // Convert to float and divide by 10 } else { tempMaxFloat = static_cast(temperature_max) / 10.0; // Convert to float and divide by 10 } if (temperature_min > 32767) { //Handle negative values on this unsigned value - tempMinFloat = static_cast(-(65535 - temperature_min)) / 10.0; // Convert to float and divide by 10 + tempMinFloat = static_cast(-(65536 - temperature_min)) / 10.0; // Convert to float and divide by 10 } else { tempMinFloat = static_cast(temperature_min) / 10.0; // Convert to float and divide by 10 } diff --git a/Software/src/devboard/webserver/webserver.h b/Software/src/devboard/webserver/webserver.h index 62a83096..eb99c06b 100644 --- a/Software/src/devboard/webserver/webserver.h +++ b/Software/src/devboard/webserver/webserver.h @@ -18,8 +18,8 @@ extern uint16_t capacity_Wh; //Wh, 0-60000 extern uint16_t remaining_capacity_Wh; //Wh, 0-60000 extern uint16_t max_target_discharge_power; //W, 0-60000 extern uint16_t max_target_charge_power; //W, 0-60000 -extern uint16_t bms_status; //Enum, 0-5 -extern uint16_t bms_char_dis_status; //Enum, 0-2 +extern uint8_t bms_status; //Enum, 0-5 +extern uint8_t bms_char_dis_status; //Enum, 0-2 extern uint16_t stat_batt_power; //W, Goes thru convert2unsignedint16 function (5W = 5, -5W = 65530) extern uint16_t temperature_min; //C+1, Goes thru convert2unsignedint16 function (15.0C = 150, -15.0C = 65385) extern uint16_t temperature_max; //C+1, Goes thru convert2unsignedint16 function (15.0C = 150, -15.0C = 65385)