mirror of
https://github.com/dalathegreat/Battery-Emulator.git
synced 2025-10-06 03:50:13 +02:00
commit
8e4bfcbe21
3 changed files with 15 additions and 31 deletions
|
@ -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;
|
||||
|
||||
|
@ -288,9 +275,9 @@ void update_values_kiaHyundai_64_battery() { //This function maps all the value
|
|||
}
|
||||
|
||||
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;
|
||||
if (counter == 1) {
|
||||
++counter_200;
|
||||
} else {
|
||||
counter_200 = 0;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
KIA_HYUNDAI_200.data.u8[3] = 0x10;
|
||||
|
|
|
@ -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<float>(-(65535 - temperature_max)) / 10.0; // Convert to float and divide by 10
|
||||
tempMaxFloat = static_cast<float>(-(65536 - temperature_max)) / 10.0; // Convert to float and divide by 10
|
||||
} else {
|
||||
tempMaxFloat = static_cast<float>(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<float>(-(65535 - temperature_min)) / 10.0; // Convert to float and divide by 10
|
||||
tempMinFloat = static_cast<float>(-(65536 - temperature_min)) / 10.0; // Convert to float and divide by 10
|
||||
} else {
|
||||
tempMinFloat = static_cast<float>(temperature_min) / 10.0; // Convert to float and divide by 10
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue