Merge pull request #133 from LevinSwe/patch-1

Minor updates of timing
This commit is contained in:
Daniel Öster 2024-01-14 09:56:37 +02:00 committed by GitHub
commit 8e4bfcbe21
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 31 deletions

View file

@ -36,24 +36,11 @@ static int8_t temperature_water_inlet = 0;
static uint8_t batteryManagementMode = 0; static uint8_t batteryManagementMode = 0;
static uint8_t BMS_ign = 0; static uint8_t BMS_ign = 0;
static int16_t poll_data_pid = 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 int8_t heatertemp = 0;
static uint8_t batteryRelay = 0; static uint8_t batteryRelay = 0;
static int8_t powerRelayTemperature = 0; static int8_t powerRelayTemperature = 0;
static uint16_t inverterVoltageFrameHigh = 0; static uint16_t inverterVoltageFrameHigh = 0;
static uint16_t inverterVoltage = 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 = 0;
static uint8_t counter_200 = 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("BmsManagementMode ");
Serial.print((uint8_t)batteryManagementMode, BIN); Serial.print((uint8_t)batteryManagementMode, BIN);
if (bitRead((uint8_t)BMS_ign, 2) == 1) { if (bitRead((uint8_t)BMS_ign, 2) == 1) {
Serial.print(" | BmsIgnitionON"); Serial.print(" | BmsIgnition ON");
} else { } else {
Serial.print(" | BmsIgnitionOFF"); Serial.print(" | BmsIgnition OFF");
} }
if (bitRead((uint8_t)batteryRelay, 0) == 1) { if (bitRead((uint8_t)batteryRelay, 0) == 1) {
Serial.print(" | BMS Output ON"); Serial.print(" | PowerRelay ON");
} else { } else {
Serial.print(" | BMS Output OFF"); Serial.print(" | PowerRelay OFF");
} }
Serial.print(" | Inverter "); Serial.print(" | Inverter ");
Serial.print(inverterVoltage); 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) { void receive_can_kiaHyundai_64_battery(CAN_frame_t rx_frame) {
switch (rx_frame.MsgID) { switch (rx_frame.MsgID) {
case 0x4DE: case 0x4DE:
radiatorTemperature = rx_frame.data.u8[4]; //-15
break; break;
case 0x542: //BMS SOC case 0x542: //BMS SOC
CANstillAlive = 12; //We use this message to verify that BMS is still alive 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: case 0x595:
batteryVoltage = (rx_frame.data.u8[7] << 8) + rx_frame.data.u8[6]; batteryVoltage = (rx_frame.data.u8[7] << 8) + rx_frame.data.u8[6];
batteryAmps = (rx_frame.data.u8[5] << 8) + rx_frame.data.u8[4]; 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[0] = (uint8_t)(batteryVoltage / 10);
KIA_HYUNDAI_524.data.u8[1] = (uint8_t)((batteryVoltage / 10) >> 8); KIA_HYUNDAI_524.data.u8[1] = (uint8_t)((batteryVoltage / 10) >> 8);
} //VCU measured voltage sent back to bms } //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 temperatureMax = rx_frame.data.u8[7]; //Highest temp in battery
break; break;
case 0x598: case 0x598:
chargeTemperature = rx_frame.data.u8[7]; //ChargeportTemperature
break; break;
case 0x5D5: case 0x5D5:
waterleakageSensor = rx_frame.data.u8[3]; //Water sensor inside pack, value 164 is no water --> 0 is short waterleakageSensor = rx_frame.data.u8[3]; //Water sensor inside pack, value 164 is no water --> 0 is short
powerRelayTemperature = rx_frame.data.u8[7]; powerRelayTemperature = rx_frame.data.u8[7];
break; break;
case 0x5D8: case 0x5D8:
if (counter < 200) { counter = 1;
counter++;
}
//PID data is polled after last message sent from battery: //PID data is polled after last message sent from battery:
if (poll_data_pid >= 10) { //polling one of ten PIDs at 100ms, resolution = 1s 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 CellVoltMax_mV = (rx_frame.data.u8[7] * 20); //(volts *50) *20 =mV
} }
if (poll_data_pid == 5) { if (poll_data_pid == 5) {
//airbag = rx_frame.data.u8[6]; Not needed
heatertemp = rx_frame.data.u8[7]; heatertemp = rx_frame.data.u8[7];
} }
break; break;
@ -387,8 +369,6 @@ void receive_can_kiaHyundai_64_battery(CAN_frame_t rx_frame) {
CellVmaxNo = rx_frame.data.u8[1]; CellVmaxNo = rx_frame.data.u8[1];
CellVminNo = rx_frame.data.u8[3]; CellVminNo = rx_frame.data.u8[3];
CellVoltMin_mV = (rx_frame.data.u8[2] * 20); //(volts *50) *20 =mV 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) { } else if (poll_data_pid == 5) {
batterySOH = ((rx_frame.data.u8[2] << 8) + rx_frame.data.u8[3]); batterySOH = ((rx_frame.data.u8[2] << 8) + rx_frame.data.u8[3]);
} }
@ -443,7 +423,11 @@ void send_can_kiaHyundai_64_battery() {
break; break;
case 3: case 3:
KIA_HYUNDAI_200.data.u8[5] = 0xD7; KIA_HYUNDAI_200.data.u8[5] = 0xD7;
if (counter == 1) {
++counter_200; ++counter_200;
} else {
counter_200 = 0;
}
break; break;
case 4: case 4:
KIA_HYUNDAI_200.data.u8[3] = 0x10; KIA_HYUNDAI_200.data.u8[3] = 0x10;

View file

@ -264,12 +264,12 @@ String processor(const String& var) {
float tempMaxFloat = 0; float tempMaxFloat = 0;
float tempMinFloat = 0; float tempMinFloat = 0;
if (temperature_max > 32767) { //Handle negative values on this unsigned value 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 { } else {
tempMaxFloat = static_cast<float>(temperature_max) / 10.0; // Convert to float and divide by 10 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 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 { } else {
tempMinFloat = static_cast<float>(temperature_min) / 10.0; // Convert to float and divide by 10 tempMinFloat = static_cast<float>(temperature_min) / 10.0; // Convert to float and divide by 10
} }

View file

@ -18,8 +18,8 @@ extern uint16_t capacity_Wh; //Wh, 0-60000
extern uint16_t remaining_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_discharge_power; //W, 0-60000
extern uint16_t max_target_charge_power; //W, 0-60000 extern uint16_t max_target_charge_power; //W, 0-60000
extern uint16_t bms_status; //Enum, 0-5 extern uint8_t bms_status; //Enum, 0-5
extern uint16_t bms_char_dis_status; //Enum, 0-2 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 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_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) extern uint16_t temperature_max; //C+1, Goes thru convert2unsignedint16 function (15.0C = 150, -15.0C = 65385)