Add more CAN mappings

This commit is contained in:
Daniel Öster 2025-09-07 00:01:35 +03:00
parent cfdc1a3130
commit 64a3d5f5aa
2 changed files with 80 additions and 31 deletions

View file

@ -217,7 +217,7 @@ void EcmpBattery::handle_incoming_can_frame(CAN_frame rx_frame) {
((rx_frame.data.u8[6] & 0xF0) >> 4); // (Wh, 0-200000)
HV_BATT_SOE_MAX = ((rx_frame.data.u8[6] & 0x03) << 8) | rx_frame.data.u8[7]; // (Wh, 0-200000)
CHECKSUM_FRAME_3B4 = (rx_frame.data.u8[0] & 0xF0) >> 4;
COUNTER_NIBBLE_3B4 = (rx_frame.data.u8[0] & 0x0F);
COUNTER_3B4 = (rx_frame.data.u8[0] & 0x0F);
break;
case 0x2F4: //MysteryVan 50/75kWh platform (Event triggered)
datalayer.battery.status.CAN_battery_still_alive = CAN_STILL_ALIVE;
@ -249,30 +249,60 @@ void EcmpBattery::handle_incoming_can_frame(CAN_frame rx_frame) {
case 0x554: //MysteryVan 50/75kWh platform (Discharge/Charge limits)
datalayer.battery.status.CAN_battery_still_alive = CAN_STILL_ALIVE;
HV_BATT_PEAK_DISCH_POWER_HD = (rx_frame.data.u8[1] << 6) | (rx_frame.data.u8[2] >> 2); //0-1000000 W
HV_BATT_PEAK_CH_POWER_HD = ((rx_frame.data.u8[2] & 0x03) << 12) | (rx_frame.data.u8[3] << 4) | ((rx_frame.data.u8[4] & 0xF0) >> 4); // -1000000 - 0 W
HV_BATT_NOM_CH_POWER_HD = ((rx_frame.data.u8[4] & 0x0F) << 12) | (rx_frame.data.u8[5] << 6) | ((rx_frame.data.u8[6] & 0xC0) >> 6); // -1000000 - 0 W
HV_BATT_PEAK_CH_POWER_HD = ((rx_frame.data.u8[2] & 0x03) << 12) | (rx_frame.data.u8[3] << 4) |
((rx_frame.data.u8[4] & 0xF0) >> 4); // -1000000 - 0 W
HV_BATT_NOM_CH_POWER_HD = ((rx_frame.data.u8[4] & 0x0F) << 12) | (rx_frame.data.u8[5] << 6) |
((rx_frame.data.u8[6] & 0xC0) >> 6); // -1000000 - 0 W
MAX_ALLOW_CHRG_CURRENT = ((rx_frame.data.u8[6] & 0x3F) << 8) | rx_frame.data.u8[7];
CHECKSUM_FRAME_554 = (rx_frame.data.u8[0] & 0xF0) >> 4; //Frame checksum 0xE
COUNTER_554 = (rx_frame.data.u8[0] & 0x0F);
break;
case 0x373: //MysteryVan 50/75kWh platform
datalayer.battery.status.CAN_battery_still_alive = CAN_STILL_ALIVE;
REQ_CLEAR_DTC_TBMU
TBCU_48V_WAKEUP
HV_BATT_MAX_REAL_CURR
Reserved_1_373
TBMU_FAULT_TYPE
Reserved_5_373
HV_BATT_REAL_VOLT_HD
HV_BATT_REAL_CURR_HD
REQ_CLEAR_DTC_TBMU = ((rx_frame.data.u8[3] & 0x40) >> 7);
TBCU_48V_WAKEUP = (rx_frame.data.u8[3] >> 7);
HV_BATT_MAX_REAL_CURR = (rx_frame.data.u8[5] << 7) | (rx_frame.data.u8[6] >> 1); //A -2000 - 2000 0.1 scaling
TBMU_FAULT_TYPE = (rx_frame.data.u8[7] & 0xE0) >> 5;
/*000: No fault
001: FirstLevelFault: Warning Lamp
010: SecondLevelFault: Stop Lamp
011: ThirdLevelFault: Stop Lamp + contactor opening (EPS shutdown)
100: FourthLevelFault: Stop Lamp + Active Discharge
101: Inhibition of powertrain activation
110: Reserved
111: Invalid*/
HV_BATT_REAL_VOLT_HD = ((rx_frame.data.u8[3] & 0x3F) << 8) | (rx_frame.data.u8[4]); //V 0-1000 * 0.1 scaling
HV_BATT_REAL_CURR_HD = (rx_frame.data.u8[1] << 8) | (rx_frame.data.u8[2]); //A -2000 - 2000 0.1 scaling
CHECKSUM_FRAME_373 = (rx_frame.data.u8[0] & 0xF0) >> 4; //Frame checksum 0xD
COUNTER_373 = (rx_frame.data.u8[0] & 0x0F);
break;
case 0x4F4: //MysteryVan 50/75kWh platform
datalayer.battery.status.CAN_battery_still_alive = CAN_STILL_ALIVE;
HV_BATT_CRASH_MEMORIZED = ((rx_frame.data.u8[2] & 0x08) >> 3);
HV_BATT_COLD_CRANK_ACK = ((rx_frame.data.u8[2] & 0x04) >> 2);
HV_BATT_CHARGE_NEEDED_STATE = ((rx_frame.data.u8[2] & 0x02) >> 1);
HV_BATT_NOM_CH_VOLTAGE = ((rx_frame.data.u8[2] & 0x01) << 8) | (rx_frame.data.u8[3]); //V 0 - 500
HV_BATT_NOM_CH_CURRENT = rx_frame.data.u8[4]; // -120 - 0 0.5scaling
HV_BATT_GENERATED_HEAT_RATE = (rx_frame.data.u8[5] << 1) | (rx_frame.data.u8[6] >> 7); //W 0-50000
REQ_MIL_LAMP_CONTINOUS = (rx_frame.data.u8[7] & 0x04) >> 2;
REQ_BLINK_STOP_AND_SERVICE_LAMP = (rx_frame.data.u8[7] & 0x02) >> 1;
CMD_RESET_MIL = (rx_frame.data.u8[7] & 0x01);
HV_BATT_SOC = (rx_frame.data.u8[1] << 2) | (rx_frame.data.u8[2] >> 6);
CONTACTORS_STATE =
(rx_frame.data.u8[2] & 0x30) >> 4; //00 : contactor open 01 : pre-load contactor 10 : contactor close
HV_BATT_DISCONT_WARNING_OPEN = (rx_frame.data.u8[7] & 0x08) >> 3;
CHECKSUM_FRAME_4F4 = (rx_frame.data.u8[0] & 0xF0) >> 4;
COUNTER_4F4 = (rx_frame.data.u8[0] & 0x0F);
break;
case 0x414: //MysteryVan 50/75kWh platform
datalayer.battery.status.CAN_battery_still_alive = CAN_STILL_ALIVE;
HV_BATT_REAL_POWER_HD = (rx_frame.data.u8[1] << 7) | (rx_frame.data.u8[2] >> 1);
MAX_ALLOW_CHRG_POWER =
((rx_frame.data.u8[2] & 0x01) << 13) | (rx_frame.data.u8[3] << 5) | ((rx_frame.data.u8[4] & 0xF8) >> 3);
MAX_ALLOW_DISCHRG_POWER =
((rx_frame.data.u8[5] & 0x07) << 11) | (rx_frame.data.u8[6] << 3) | ((rx_frame.data.u8[7] & 0xE0) >> 5);
CHECKSUM_FRAME_414 = (rx_frame.data.u8[0] & 0xF0) >> 4; //Frame checksum 0x9
COUNTER_414 = (rx_frame.data.u8[0] & 0x0F);
break;
case 0x353: //MysteryVan 50/75kWh platform
datalayer.battery.status.CAN_battery_still_alive = CAN_STILL_ALIVE;

View file

@ -133,7 +133,7 @@ class EcmpBattery : public CanBattery {
uint32_t pid_date_of_manufacture = NOT_SAMPLED_YET;
uint16_t pid_SOH_cell_1 = NOT_SAMPLED_YET;
//MysteryVan platform
//MysteryVan platform (allcaps to make code easer to co-exist)
uint16_t SOE_MAX_CURRENT_TEMP = 0;
uint16_t FRONT_MACHINE_POWER_LIMIT = 0;
uint16_t REAR_MACHINE_POWER_LIMIT = 0;
@ -141,8 +141,7 @@ class EcmpBattery : public CanBattery {
uint8_t EVSE_STATE = 0;
uint16_t HV_BATT_SOE_HD = 0;
uint16_t HV_BATT_SOE_MAX = 0;
uint8_t COUNTER_NIBBLE_3B4 = 0;
uint8_t CHECKSUM_FRAME_3B4 = 0;
uint8_t CHECKSUM_FRAME_3B4, CHECKSUM_FRAME_554, CHECKSUM_FRAME_373, CHECKSUM_FRAME_4F4, CHECKSUM_FRAME_414 = 0;
uint16_t TBMU_EVSE_DC_MAX_POWER = 0;
uint16_t HV_STORAGE_MAX_I = 0;
uint8_t TBMU_EVSE_CHRG_REQ = 0;
@ -150,12 +149,32 @@ class EcmpBattery : public CanBattery {
uint16_t TBMU_EVSE_DC_MIN_VOLTAGE = 0;
uint16_t TBMU_EVSE_DC_MES_VOLTAGE = 0;
int8_t BMS_PROBETEMP[7] = {0};
uint8_t CHECKSUM_FRAME_554 = 0;
uint8_t COUNTER_554 = 0;
uint8_t COUNTER_554, COUNTER_373, COUNTER_3B4, COUNTER_4F4, COUNTER_414 = 0;
uint16_t HV_BATT_PEAK_DISCH_POWER_HD = 0;
uint16_t HV_BATT_PEAK_CH_POWER_HD = 0;
uint16_t HV_BATT_NOM_CH_POWER_HD = 0;
uint16_t MAX_ALLOW_CHRG_CURRENT = 0;
int16_t HV_BATT_REAL_CURR_HD = 0;
uint16_t HV_BATT_REAL_VOLT_HD = 0;
uint8_t TBMU_FAULT_TYPE = 0;
int16_t HV_BATT_MAX_REAL_CURR = 0;
bool TBCU_48V_WAKEUP = false;
bool REQ_CLEAR_DTC_TBMU = false;
bool HV_BATT_DISCONT_WARNING_OPEN = false;
uint8_t CONTACTORS_STATE = 0;
uint16_t HV_BATT_SOC = 0;
bool CMD_RESET_MIL = 0;
bool REQ_BLINK_STOP_AND_SERVICE_LAMP = false;
bool REQ_MIL_LAMP_CONTINOUS = false;
uint16_t HV_BATT_GENERATED_HEAT_RATE = 0;
bool HV_BATT_CRASH_MEMORIZED = false;
bool HV_BATT_COLD_CRANK_ACK = false;
bool HV_BATT_CHARGE_NEEDED_STATE = false;
uint8_t HV_BATT_NOM_CH_CURRENT = 0;
uint16_t HV_BATT_NOM_CH_VOLTAGE = 0;
uint16_t HV_BATT_REAL_POWER_HD = 0;
uint16_t MAX_ALLOW_CHRG_POWER = 0;
uint16_t MAX_ALLOW_DISCHRG_POWER = 0;
unsigned long previousMillis10 = 0; //- will store last time a 10ms CAN Message was sent
unsigned long previousMillis20 = 0; // will store last time a 20ms CAN Message was sent