mirror of
https://github.com/dalathegreat/Battery-Emulator.git
synced 2025-10-03 01:39:30 +02:00
Add more CAN mappings
This commit is contained in:
parent
cfdc1a3130
commit
64a3d5f5aa
2 changed files with 80 additions and 31 deletions
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue