|
@@ -11,19 +11,18 @@ void CDM(void)
|
|
|
{
|
|
|
real_T cmdn_V_cellUDelt[cmnc_num_cellUNumMax];
|
|
|
real_T cdmn_I_curr;
|
|
|
- static real_T P[4][cmnc_num_cellUNumMax];
|
|
|
- real_T P1[4][cmnc_num_cellUNumMax];
|
|
|
+ static real_T cdmn_M_P[4][cmnc_num_cellUNumMax];
|
|
|
+ real_T P[4][cmnc_num_cellUNumMax];
|
|
|
static real_T deltaE[cmnc_num_cellUNumMax];
|
|
|
static real_T deltaR[cmnc_num_cellUNumMax];
|
|
|
static real_T deltaES[cmnc_num_cellUNumMax];
|
|
|
static real_T deltaRS[cmnc_num_cellUNumMax];
|
|
|
- static real_T Lambda;
|
|
|
+ static real_T cdmn_f_Lambda;
|
|
|
real_T K[2];
|
|
|
real_T arf[cmnc_num_cellUNumMax];
|
|
|
uint16_T i;
|
|
|
static uint8_T ihd_st_workStat_Delay;
|
|
|
- static int16_T sfmd_I_curr_Delay;
|
|
|
- static uint8_T Cnt;
|
|
|
+ static uint8_T cdmn_N_Cnt;
|
|
|
|
|
|
//
|
|
|
if (ihd_st_workStat_Delay != 1 && ihd_st_workStat == 1)
|
|
@@ -36,20 +35,20 @@ void CDM(void)
|
|
|
{
|
|
|
for (i = 0; i < cmnc_num_cellUNum; i++)
|
|
|
{
|
|
|
- P[0][i] = 10;
|
|
|
- P[1][i] = 0;
|
|
|
- P[2][i] = 0;
|
|
|
- P[3][i] = 10;
|
|
|
- Lambda = 0.991;
|
|
|
+ cdmn_M_P[0][i] = 10;
|
|
|
+ cdmn_M_P[1][i] = 0;
|
|
|
+ cdmn_M_P[2][i] = 0;
|
|
|
+ cdmn_M_P[3][i] = 10;
|
|
|
+ cdmn_f_Lambda = 0.991;
|
|
|
deltaE[i] = 0;
|
|
|
deltaR[i] = 0;
|
|
|
deltaES[i] = 0;
|
|
|
deltaRS[i] = 0;
|
|
|
- Cnt = 0;
|
|
|
+ cdmn_N_Cnt = 0;
|
|
|
}
|
|
|
}
|
|
|
//
|
|
|
- if (ihd_st_workStat == 1) //&& (sfmd_I_curr_Delay - sfmd_I_curr > 10 ||sfmd_I_curr_Delay - sfmd_I_curr < -10 ||sfmd_I_curr_Delay ==0 && sfmd_I_curr == 0))
|
|
|
+ if (ihd_st_workStat == 1)
|
|
|
{
|
|
|
for (i = 0; i < cmnc_num_cellUNum; i++)
|
|
|
{
|
|
@@ -60,51 +59,53 @@ void CDM(void)
|
|
|
cdmd_flg_deltOCVDisable = false;
|
|
|
for (i = 0; i < cmnc_num_cellUNum; i++)
|
|
|
{
|
|
|
- K[0] = (P[0][i] + cdmn_I_curr * P[1][i]) / (Lambda + P[0][i] + cdmn_I_curr * P[2][i] + (P[1][i] + cdmn_I_curr * P[3][i]) * cdmn_I_curr);
|
|
|
- K[1] = (P[2][i] + cdmn_I_curr * P[3][i]) / (Lambda + P[0][i] + cdmn_I_curr * P[2][i] + (P[1][i] + cdmn_I_curr * P[3][i]) * cdmn_I_curr);
|
|
|
+ K[0] = (cdmn_M_P[0][i] + cdmn_I_curr * cdmn_M_P[1][i]) / (cdmn_f_Lambda + cdmn_M_P[0][i] + cdmn_I_curr * cdmn_M_P[2][i] + (cdmn_M_P[1][i] + cdmn_I_curr * cdmn_M_P[3][i]) * cdmn_I_curr);
|
|
|
+ K[1] = (cdmn_M_P[2][i] + cdmn_I_curr * cdmn_M_P[3][i]) / (cdmn_f_Lambda + cdmn_M_P[0][i] + cdmn_I_curr * cdmn_M_P[2][i] + (cdmn_M_P[1][i] + cdmn_I_curr * cdmn_M_P[3][i]) * cdmn_I_curr);
|
|
|
arf[i] = cmdn_V_cellUDelt[i] - (deltaE[i] + cdmn_I_curr * deltaR[i]);
|
|
|
deltaE[i] = deltaE[i] + K[0] * arf[i];
|
|
|
deltaR[i] = deltaR[i] + K[1] * arf[i];
|
|
|
- P1[0][i] = ((1 - K[0]) * P[0][i] - P[2][i] * K[0] * cdmn_I_curr) / Lambda;
|
|
|
- P1[1][i] = ((1 - K[0]) * P[1][i] - P[3][i] * K[0] * cdmn_I_curr) / Lambda;
|
|
|
- P1[2][i] = (-K[1] * P[0][i] + P[2][i] * (1 - K[1] * cdmn_I_curr)) / Lambda;
|
|
|
- P1[3][i] = (-K[1] * P[1][i] + P[3][i] * (1 - K[1] * cdmn_I_curr)) / Lambda;
|
|
|
+ P[0][i] = ((1 - K[0]) * cdmn_M_P[0][i] - cdmn_M_P[2][i] * K[0] * cdmn_I_curr) / cdmn_f_Lambda;
|
|
|
+ P[1][i] = ((1 - K[0]) * cdmn_M_P[1][i] - cdmn_M_P[3][i] * K[0] * cdmn_I_curr) / cdmn_f_Lambda;
|
|
|
+ P[2][i] = (-K[1] * cdmn_M_P[0][i] + cdmn_M_P[2][i] * (1 - K[1] * cdmn_I_curr)) / cdmn_f_Lambda;
|
|
|
+ P[3][i] = (-K[1] * cdmn_M_P[1][i] + cdmn_M_P[3][i] * (1 - K[1] * cdmn_I_curr)) / cdmn_f_Lambda;
|
|
|
|
|
|
- P[0][i] = P1[0][i];
|
|
|
- P[1][i] = P1[1][i];
|
|
|
- P[2][i] = P1[2][i];
|
|
|
- P[3][i] = P1[3][i];
|
|
|
+ cdmn_M_P[0][i] = P[0][i];
|
|
|
+ cdmn_M_P[1][i] = P[1][i];
|
|
|
+ cdmn_M_P[2][i] = P[2][i];
|
|
|
+ cdmn_M_P[3][i] = P[3][i];
|
|
|
if (arf[i] > 0.04 || arf[i] < -0.04)
|
|
|
{
|
|
|
cdmd_flg_deltOCVDisable = true;
|
|
|
}
|
|
|
}
|
|
|
//
|
|
|
- Cnt = Cnt + 1;
|
|
|
+ cdmn_N_Cnt = cdmn_N_Cnt + 1;
|
|
|
for (i = 0; i < cmnc_num_cellUNum; i++)
|
|
|
{
|
|
|
deltaES[i] = deltaES[i] + deltaE[i];
|
|
|
deltaRS[i] = deltaRS[i] + deltaR[i];
|
|
|
}
|
|
|
|
|
|
- if (Cnt >= 10)
|
|
|
+ if (cdmn_N_Cnt >= 10)
|
|
|
{
|
|
|
for (i = 0; i < cmnc_num_cellUNum; i++)
|
|
|
{
|
|
|
- cdmv_V_deltOCV[i] = (int16_T)(deltaES[i] / Cnt * 1000);
|
|
|
- cdmv_ohm_deltR[i] = (int16_T)(deltaRS[i] / Cnt * 1000 * 1000);
|
|
|
+ cdmv_V_deltOCV[i] = (int16_T)(deltaES[i] / cdmn_N_Cnt * 1000);
|
|
|
+ cdmv_ohm_deltR[i] = (int16_T)(deltaRS[i] / cdmn_N_Cnt * 1000 * 1000);
|
|
|
deltaES[i] = 0;
|
|
|
deltaRS[i] = 0;
|
|
|
}
|
|
|
- Cnt = 0;
|
|
|
+ cdmn_N_Cnt = 0;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
cdmd_flg_deltOCVDisable = true;
|
|
|
memset(cdmv_V_deltOCV,0,sizeof(cdmv_V_deltOCV));
|
|
|
- memset(cdmv_ohm_deltR,0,sizeof(cdmv_V_deltOCV));
|
|
|
+ memset(cdmv_ohm_deltR,0,sizeof(cdmv_ohm_deltR));
|
|
|
}
|
|
|
- sfmd_I_curr_Delay = sfmd_I_curr;
|
|
|
+
|
|
|
FirstRun_CDM = false;
|
|
|
-}
|
|
|
+}
|
|
|
+
|
|
|
+
|