Ioniq 12 bat.modules temp support + test environment
This commit is contained in:
@@ -56,13 +56,14 @@ String commandQueueKiaENiro[commandQueueCountKiaENiro] = {
|
||||
bool activateCommandQueueForKiaENiro() {
|
||||
|
||||
// 39 or 64 kWh model?
|
||||
params.batModuleTempCount = 4;
|
||||
params.batteryTotalAvailableKWh = 64;
|
||||
if (settings.carType == CAR_KIA_ENIRO_2020_39 || settings.carType == CAR_HYUNDAI_KONA_2020_39) {
|
||||
params.batteryTotalAvailableKWh = 39.2;
|
||||
}
|
||||
|
||||
// Empty and fill command queue
|
||||
for (int i = 0; i < 100; i++) {
|
||||
for (int i = 0; i < 300; i++) {
|
||||
commandQueue[i] = "";
|
||||
}
|
||||
for (int i = 0; i < commandQueueCountKiaENiro; i++) {
|
||||
@@ -126,22 +127,22 @@ bool parseRowMergedKiaENiro() {
|
||||
params.batPowerKwh100 = params.batPowerKw / params.speedKmh * 100;
|
||||
params.batCellMaxV = hexToDec(responseRowMerged.substring(52, 54).c_str(), 1, false) / 50.0;
|
||||
params.batCellMinV = hexToDec(responseRowMerged.substring(56, 58).c_str(), 1, false) / 50.0;
|
||||
params.batModule01TempC = hexToDec(responseRowMerged.substring(38, 40).c_str(), 1, true);
|
||||
params.batModule02TempC = hexToDec(responseRowMerged.substring(40, 42).c_str(), 1, true);
|
||||
params.batModule03TempC = hexToDec(responseRowMerged.substring(42, 44).c_str(), 1, true);
|
||||
params.batModule04TempC = hexToDec(responseRowMerged.substring(44, 46).c_str(), 1, true);
|
||||
params.batModuleTempC[0] = hexToDec(responseRowMerged.substring(38, 40).c_str(), 1, true);
|
||||
params.batModuleTempC[1] = hexToDec(responseRowMerged.substring(40, 42).c_str(), 1, true);
|
||||
params.batModuleTempC[2] = hexToDec(responseRowMerged.substring(42, 44).c_str(), 1, true);
|
||||
params.batModuleTempC[3] = hexToDec(responseRowMerged.substring(44, 46).c_str(), 1, true);
|
||||
//params.batTempC = hexToDec(responseRowMerged.substring(36, 38).c_str(), 1, true);
|
||||
//params.batMaxC = hexToDec(responseRowMerged.substring(34, 36).c_str(), 1, true);
|
||||
//params.batMinC = hexToDec(responseRowMerged.substring(36, 38).c_str(), 1, true);
|
||||
|
||||
// This is more accurate than min/max from BMS. It's required to detect kona/eniro cold gates (min 15C is needed > 43kW charging, min 25C is needed > 58kW charging)
|
||||
params.batMinC = params.batMaxC = params.batModule01TempC;
|
||||
params.batMinC = (params.batModule02TempC < params.batMinC) ? params.batModule02TempC : params.batMinC;
|
||||
params.batMinC = (params.batModule03TempC < params.batMinC) ? params.batModule03TempC : params.batMinC;
|
||||
params.batMinC = (params.batModule04TempC < params.batMinC) ? params.batModule04TempC : params.batMinC;
|
||||
params.batMaxC = (params.batModule02TempC > params.batMaxC) ? params.batModule02TempC : params.batMaxC;
|
||||
params.batMaxC = (params.batModule03TempC > params.batMaxC) ? params.batModule03TempC : params.batMaxC;
|
||||
params.batMaxC = (params.batModule04TempC > params.batMaxC) ? params.batModule04TempC : params.batMaxC;
|
||||
params.batMinC = params.batMaxC = params.batModuleTempC[0];
|
||||
for (uint16_t i = 1; i < params.batModuleTempCount; i++) {
|
||||
if (params.batModuleTempC[i] < params.batMinC)
|
||||
params.batMinC = params.batModuleTempC[i];
|
||||
if (params.batModuleTempC[i] > params.batMaxC)
|
||||
params.batMaxC = params.batModuleTempC[i];
|
||||
}
|
||||
params.batTempC = params.batMinC;
|
||||
|
||||
params.batInletC = hexToDec(responseRowMerged.substring(50, 52).c_str(), 1, true);
|
||||
@@ -291,20 +292,22 @@ bool testDataKiaENiro() {
|
||||
responseRowMerged = "62B002E0000000FFB400330B0000000000000000";
|
||||
parseRowMergedKiaENiro();
|
||||
|
||||
params.batModule01TempC = 28;
|
||||
params.batModule02TempC = 29;
|
||||
params.batModule03TempC = 28;
|
||||
params.batModule04TempC = 30;
|
||||
params.batModuleTempC[0] = 28;
|
||||
params.batModuleTempC[1] = 29;
|
||||
params.batModuleTempC[2] = 28;
|
||||
params.batModuleTempC[3] = 30;
|
||||
|
||||
// This is more accurate than min/max from BMS. It's required to detect kona/eniro cold gates (min 15C is needed > 43kW charging, min 25C is needed > 58kW charging)
|
||||
params.batMinC = params.batMaxC = params.batModule01TempC;
|
||||
params.batMinC = (params.batModule02TempC < params.batMinC) ? params.batModule02TempC : params.batMinC ;
|
||||
params.batMinC = (params.batModule03TempC < params.batMinC) ? params.batModule03TempC : params.batMinC ;
|
||||
params.batMinC = (params.batModule04TempC < params.batMinC) ? params.batModule04TempC : params.batMinC ;
|
||||
params.batMaxC = (params.batModule02TempC > params.batMaxC) ? params.batModule02TempC : params.batMaxC ;
|
||||
params.batMaxC = (params.batModule03TempC > params.batMaxC) ? params.batModule03TempC : params.batMaxC ;
|
||||
params.batMaxC = (params.batModule04TempC > params.batMaxC) ? params.batModule04TempC : params.batMaxC ;
|
||||
params.batMinC = params.batMaxC = params.batModuleTempC[0];
|
||||
for (uint16_t i = 1; i < params.batModuleTempCount; i++) {
|
||||
if (params.batModuleTempC[i] < params.batMinC)
|
||||
params.batMinC = params.batModuleTempC[i];
|
||||
if (params.batModuleTempC[i] > params.batMaxC)
|
||||
params.batMaxC = params.batModuleTempC[i];
|
||||
}
|
||||
params.batTempC = params.batMinC;
|
||||
|
||||
|
||||
//
|
||||
params.soc10ced[10] = 2200;
|
||||
params.soc10cec[10] = 2500;
|
||||
|
||||
Reference in New Issue
Block a user