LAPTOP-EG88H5BE\86151 3 роки тому
батько
коміт
999e22d475

+ 5 - 5
inc/AppConfig.h

@@ -123,15 +123,15 @@ typedef struct _AppAlgorithmType
     UINT16 sohd_Q_chrgE;              //充入容量读取量;
     UINT16 sohv_Q_packCapArrE[10];    //10次整包容量(数组)读取量;
     UINT16 sohv_Q_cellCapArrE[28];    //
-    UINT16 iscv_Q_remainCpEE[28];
-    UINT32 iscd_tm_totalEE;
-    BOOL sfmd_flg_iscFltEE;
+    UINT16 iscv_Q_remainCpE[28];
+    UINT32 iscd_tm_totalE;
+    BOOL sfmd_flg_iscFltE;
     BOOL sfmd_flg_mainCirClosFltE;
     BOOL sfmd_flg_heatCirClosFltE;
     BOOL sfmd_flg_heatCirOpenFltE;
     BOOL sfmd_flg_heatRunFltE;
-	UINT16 ihd_tm_parkTimeEE;  
-	UINT8 sorv_ohm_cellREE[28];
+	UINT16 ihd_tm_parkTimeE;  
+	UINT16 sorv_ohm_cellRE[28];
 } AppAlgorithmData;
 typedef struct _AppDataHeader
 {

+ 4 - 7
inc/EmbeddedCoder_inc/BCUDisp.h

@@ -120,9 +120,9 @@ extern uint16_T soed_E_nowEng;
 extern uint16_T soed_pct_nowStat;
 extern uint16_T soed_E_fullEng;
 
-extern uint8_T sorv_ohm_cellREi[cmnc_num_cellUNumMax];
-extern uint8_T sorv_ohm_cellREo[cmnc_num_cellUNumMax];
-
+extern uint16_T sorv_ohm_cellREi[cmnc_num_cellUNumMax];
+extern uint16_T sorv_ohm_cellREo[cmnc_num_cellUNumMax];
+extern uint16_T sorv_ohm_cellR[cmnc_num_cellUNumMax];
 
 extern boolean_T iscd_flg_flt;
 extern uint16_T iscv_Q_remainCpEi[cmnc_num_cellUNumMax];
@@ -147,10 +147,7 @@ extern int16_T  cdmv_V_deltOCV[cmnc_num_cellUNumMax];
 extern int16_T  cdmv_ohm_deltR[cmnc_num_cellUNumMax];
 extern boolean_T cdmd_flg_deltOCVDisable;
 
-extern uint16_T test_efkSocMin;
-extern uint16_T test_efkSocMax;
-extern real_T test_UpMin;
-extern real_T test_UpMax;
+
 extern uint16_T test_cellCap[cmnc_num_cellUNumMax];
 extern uint16_T test_countEn;
 

+ 116 - 116
inc/EmbeddedCoder_inc/SFM.h

@@ -1,116 +1,116 @@
-#include "rtwtypes.h"
-#include "BCUCal.h"
-#include "BCUDisp.h"
-#include <math.h>
-extern boolean_T FirstRun_SFM;
-
-extern void SFM_Init(void);
-extern void SFM(void);
-
-typedef struct
-{
-    uint8_T fltNum81;
-    uint8_T recNum81;
-    uint8_T fltNum82;
-    uint8_T recNum82;
-    uint8_T fltNum83;
-    uint8_T recNum83;
-    uint8_T fltNum84;
-    uint8_T recNum84;
-    uint8_T fltNum85;
-    uint8_T recNum85;
-    uint8_T fltNum86;
-    uint8_T recNum86;
-    uint8_T fltNum87;
-    uint8_T recNum87;
-    uint8_T fltNum88;
-    uint8_T recNum88;
-    uint8_T fltNum89;
-    uint8_T recNum89;
-    uint8_T fltNum90;
-    uint8_T recNum90;
-    uint8_T fltNum97;
-    uint8_T recNum97;
-    uint8_T fltNum98;
-    uint8_T recNum98;
-    uint8_T fltNum99;
-    uint8_T recNum99;
-    uint8_T fltNum100;
-    uint8_T recNum100;
-    uint8_T fltNum101;
-    uint8_T recNum101;
-    uint8_T fltNum102;
-    uint8_T recNum102;
-    uint8_T fltNum103;
-    uint8_T recNum103;
-    uint8_T fltNum104;
-    uint8_T recNum104;
-    uint8_T fltNum105;
-    uint8_T recNum105;
-    uint8_T fltNum106;
-    uint8_T recNum106;
-    uint8_T fltNum107;
-    uint8_T recNum107;
-    uint8_T fltNum108;
-    uint8_T recNum108;
-    uint8_T fltNum109;
-    uint8_T recNum109;
-    uint8_T fltNum110;
-    uint8_T recNum110;
-    uint8_T fltNum111;
-    uint8_T recNum111;
-    uint8_T fltNum112;
-    uint8_T recNum112;
-    uint8_T fltNum113;
-    uint8_T recNum113;
-    uint8_T fltNum114;
-    uint8_T recNum114;
-    uint8_T fltNum115_1;
-    uint8_T recNum115_1;
-    uint8_T fltNum115_2;
-    uint8_T recNum115_2;
-    uint8_T fltNum116_1;
-    uint8_T recNum116_1;
-    uint8_T fltNum116_2;
-    uint8_T recNum116_2;
-    uint8_T fltNum131;
-    uint8_T recNum131;
-    uint8_T fltNum132;
-    uint8_T recNum132;
-} DiagThrstruct;
-
-typedef struct
-{
-    uint16_T N22;
-    uint16_T N24;
-    uint16_T N32;
-    uint16_T N33;
-    uint16_T N34;
-    uint16_T N54;
-    uint16_T N56;
-    uint16_T N57;
-    uint16_T N58;
-    uint16_T N59;
-    uint16_T N62;
-    uint16_T N64;
-    uint16_T N65;
-    uint16_T N66;
-    uint16_T N67;
-    uint16_T N151;
-    uint16_T N152;
-    uint16_T N153;
-    uint16_T N154;
-    uint16_T N155;
-    uint16_T N156;
-    uint16_T N157;
-    uint16_T N158;
-    uint16_T N159;
-    uint16_T N160;
-    uint16_T N161;
-    uint16_T N162;
-    uint16_T N179;
-} DiagTimestruct;
-
-extern boolean_T DiagThrSystem1(boolean_T Enable, boolean_T precondition, uint16_T Input, uint16_T fltThr, uint16_T recThr, uint8_T fltNumThr, uint8_T recNumThr, uint8_T *fltNum, uint8_T *recNum, boolean_T *fitFlg);
-extern boolean_T DiagThrSystem2(boolean_T Enable, boolean_T precondition, uint16_T Input, uint16_T fltThr, uint16_T recThr, uint8_T fltNumThr, uint8_T recNumThr, uint8_T *fltNum, uint8_T *recNum, boolean_T *fitFlg);
-extern boolean_T JudgeTimeSystem(boolean_T Enable, boolean_T Input, uint16_T *N, uint16_T Thr);
+#include "rtwtypes.h"
+#include "BCUCal.h"
+#include "BCUDisp.h"
+#include <math.h>
+extern boolean_T FirstRun_SFM;
+
+extern void SFM_Init(void);
+extern void SFM(void);
+
+typedef struct
+{
+    uint8_T fltNum81;
+    uint8_T recNum81;
+    uint8_T fltNum82;
+    uint8_T recNum82;
+    uint8_T fltNum83;
+    uint8_T recNum83;
+    uint8_T fltNum84;
+    uint8_T recNum84;
+    uint8_T fltNum85;
+    uint8_T recNum85;
+    uint8_T fltNum86;
+    uint8_T recNum86;
+    uint8_T fltNum87;
+    uint8_T recNum87;
+    uint8_T fltNum88;
+    uint8_T recNum88;
+    uint8_T fltNum89;
+    uint8_T recNum89;
+    uint8_T fltNum90;
+    uint8_T recNum90;
+    uint8_T fltNum97;
+    uint8_T recNum97;
+    uint8_T fltNum98;
+    uint8_T recNum98;
+    uint8_T fltNum99;
+    uint8_T recNum99;
+    uint8_T fltNum100;
+    uint8_T recNum100;
+    uint8_T fltNum101;
+    uint8_T recNum101;
+    uint8_T fltNum102;
+    uint8_T recNum102;
+    uint8_T fltNum103;
+    uint8_T recNum103;
+    uint8_T fltNum104;
+    uint8_T recNum104;
+    uint8_T fltNum105;
+    uint8_T recNum105;
+    uint8_T fltNum106;
+    uint8_T recNum106;
+    uint8_T fltNum107;
+    uint8_T recNum107;
+    uint8_T fltNum108;
+    uint8_T recNum108;
+    uint8_T fltNum109;
+    uint8_T recNum109;
+    uint8_T fltNum110;
+    uint8_T recNum110;
+    uint8_T fltNum111;
+    uint8_T recNum111;
+    uint8_T fltNum112;
+    uint8_T recNum112;
+    uint8_T fltNum113;
+    uint8_T recNum113;
+    uint8_T fltNum114;
+    uint8_T recNum114;
+    uint8_T fltNum115_1;
+    uint8_T recNum115_1;
+    uint8_T fltNum115_2;
+    uint8_T recNum115_2;
+    uint8_T fltNum116_1;
+    uint8_T recNum116_1;
+    uint8_T fltNum116_2;
+    uint8_T recNum116_2;
+    uint8_T fltNum131;
+    uint8_T recNum131;
+    uint8_T fltNum132;
+    uint8_T recNum132;
+} DiagThrstruct;
+
+typedef struct
+{
+    uint16_T N22;
+    uint16_T N24;
+    uint16_T N32;
+    uint16_T N33;
+    uint16_T N34;
+    uint16_T N54;
+    uint16_T N56;
+    uint16_T N57;
+    uint16_T N58;
+    uint16_T N59;
+    uint16_T N62;
+    uint16_T N64;
+    uint16_T N65;
+    uint16_T N66;
+    uint16_T N67;
+    uint16_T N151;
+    uint16_T N152;
+    uint16_T N153;
+    uint16_T N154;
+    uint16_T N155;
+    uint16_T N156;
+    uint16_T N157;
+    uint16_T N158;
+    uint16_T N159;
+    uint16_T N160;
+    uint16_T N161;
+    uint16_T N162;
+    uint16_T N179;
+} DiagTimestruct;
+
+extern boolean_T DiagThrSystem1(boolean_T Enable, boolean_T precondition, uint16_T Input, uint16_T fltThr, uint16_T recThr, uint8_T fltNumThr, uint8_T recNumThr, uint8_T *fltNum, uint8_T *recNum, boolean_T *fitFlg);
+extern boolean_T DiagThrSystem2(boolean_T Enable, boolean_T precondition, uint16_T Input, uint16_T fltThr, uint16_T recThr, uint8_T fltNumThr, uint8_T recNumThr, uint8_T *fltNum, uint8_T *recNum, boolean_T *fitFlg);
+extern boolean_T JudgeTimeSystem(boolean_T Enable, boolean_T Input, uint16_T *N, uint16_T Thr);


+ 1 - 0
inc/EmbeddedCoder_inc/SOC.h

@@ -1,5 +1,6 @@
 
 #include <math.h>
+#include <numeric.h>
 #include "BCUCal.h"
 #include "BCUDisp.h"
 extern boolean_T FirstRun_SOC;

+ 12 - 28
src/AppFunc.c

@@ -1408,25 +1408,25 @@ static void setDefaultBcuDataInfo(void)
 {
 	memset(&BcuDataInfo, 0x00, sizeof(BcuDataInfo));
 	BcuDataInfo.appDataModify = false;
-	memset(BcuDataInfo.blcv_Q_totalCpE, 0x00, cmnc_num_cellUNumMax * sizeof(UINT32));
-	memset(BcuDataInfo.blcv_Q_reqCpE, 0x00, cmnc_num_cellUNumMax * sizeof(UINT16));
+	memset(BcuDataInfo.blcv_Q_totalCpE, 0x00, sizeof(BcuDataInfo.blcv_Q_totalCpE));
+	memset(BcuDataInfo.blcv_Q_reqCpE, 0x00, sizeof(BcuDataInfo.blcv_Q_reqCpE));
 	BcuDataInfo.socd_pct_bcuSocE = 1200;
 	BcuDataInfo.socd_pct_battSocE = 1200;
 	BcuDataInfo.sohd_tm_chrgStartStatE = 0;
 	BcuDataInfo.sohd_flg_chrgEndE = 0;
-	memset(BcuDataInfo.sohv_Q_cellCapArrE, 0, cmnc_num_cellUNumMax * sizeof(UINT16));
-	memset(BcuDataInfo.sohv_V_chrgStartStatE, 0, cmnc_num_cellUNumMax * sizeof(UINT16));
+	memset(BcuDataInfo.sohv_V_chrgStartStatE, 0, sizeof(BcuDataInfo.sohv_V_chrgStartStatE));
 	BcuDataInfo.sohd_Q_chrgE = 0;
-	memset(BcuDataInfo.sohv_Q_packCapArrE, 0, 10 * sizeof(UINT16));
-	memset(BcuDataInfo.iscv_Q_remainCpEE, 0, cmnc_num_cellUNumMax * sizeof(UINT16));
-	memset(BcuDataInfo.iscv_Q_remainCpEE, 0, sizeof(BcuDataInfo.iscv_Q_remainCpEE));
-	BcuDataInfo.iscd_tm_totalEE = 0;
-	BcuDataInfo.sfmd_flg_iscFltEE = 0;
+	memset(BcuDataInfo.sohv_Q_packCapArrE, 0, sizeof(BcuDataInfo.sohv_Q_packCapArrE));
+	memset(BcuDataInfo.sohv_Q_cellCapArrE, 0, sizeof(BcuDataInfo.sohv_Q_cellCapArrE));
+	memset(BcuDataInfo.iscv_Q_remainCpE, 0, sizeof(BcuDataInfo.iscv_Q_remainCpE));
+	memset(BcuDataInfo.sorv_ohm_cellRE, 0, sizeof(BcuDataInfo.sorv_ohm_cellRE));
+	BcuDataInfo.iscd_tm_totalE = 0;
+	BcuDataInfo.sfmd_flg_iscFltE = 0;
 	BcuDataInfo.sfmd_flg_mainCirClosFltE = 0;
 	BcuDataInfo.sfmd_flg_heatCirClosFltE = 0;
 	BcuDataInfo.sfmd_flg_heatCirOpenFltE = 0;
 	BcuDataInfo.sfmd_flg_heatRunFltE = 0;
-	BcuDataInfo.ihd_tm_parkTimeEE = 0;
+	BcuDataInfo.ihd_tm_parkTimeE = 0;
 	return;
 }
 /**
@@ -2116,14 +2116,7 @@ void CANEncodeFunction(UINT32 ID, UINT8 *msgData)
 		*(UINT8 *)(msgData + 7) = reservedSignal8 & 0xFF;
 		break;
 	case 0x7CF:
-		reservedSignal1 = socd_pct_vcuSoc & 0xFF;
-		reservedSignal2 = (socd_pct_vcuSoc >> 8) & 0xFF;
-		reservedSignal3 = test_efkSocMin & 0xFF;
-		reservedSignal4 = (test_efkSocMin >> 8) & 0xFF;
-		reservedSignal5 = test_efkSocMax & 0xFF;
-		reservedSignal6 = (test_efkSocMax >> 8) & 0xFF;
-		reservedSignal7 = 0 & 0xFF;
-		reservedSignal8 = (0 >> 8) & 0xFF;
+
 		*(UINT8 *)(msgData + 0) = reservedSignal1 & 0xFF;
 		*(UINT8 *)(msgData + 1) = reservedSignal2 & 0xFF;
 		*(UINT8 *)(msgData + 2) = reservedSignal3 & 0xFF;
@@ -2134,16 +2127,7 @@ void CANEncodeFunction(UINT32 ID, UINT8 *msgData)
 		*(UINT8 *)(msgData + 7) = reservedSignal8 & 0xFF;
 		break;
 	case 0x7D0:
-		UINT32 temp1 = (UINT32)(test_UpMin * 100000);
-		UINT32 temp2 = (UINT32)(test_UpMax * 100000);
-		reservedSignal1 = temp1 & 0xFF;
-		reservedSignal2 = (temp1 >> 8) & 0xFF;
-		reservedSignal3 = (temp1 >> 16) & 0xFF;
-		reservedSignal4 = (temp1 >> 24) & 0xFF;
-		reservedSignal5 = temp2 & 0xFF;
-		reservedSignal6 = (temp2 >> 8) & 0xFF;
-		reservedSignal7 = (temp2 >> 16) & 0xFF;
-		reservedSignal8 = (temp2 >> 24) & 0xFF;
+
 		*(UINT8 *)(msgData + 0) = reservedSignal1 & 0xFF;
 		*(UINT8 *)(msgData + 1) = reservedSignal2 & 0xFF;
 		*(UINT8 *)(msgData + 2) = reservedSignal3 & 0xFF;

+ 12 - 12
src/EmbeddedCoder_src/BCU.c

@@ -48,15 +48,15 @@ void BCU(void)
             sohd_Q_chrgEi = BcuDataInfo.sohd_Q_chrgE;
             memcpy(sohv_Q_packCapArrEi, BcuDataInfo.sohv_Q_packCapArrE, sizeof(sohv_Q_packCapArrEi));
             memcpy(sohv_Q_cellCapArrEi, BcuDataInfo.sohv_Q_cellCapArrE, sizeof(sohv_Q_cellCapArrEi));
-            memcpy((iscv_Q_remainCpEi), BcuDataInfo.iscv_Q_remainCpEE, sizeof(iscv_Q_remainCpEi));
-			memcpy((sorv_ohm_cellREi), BcuDataInfo.sorv_ohm_cellREE, sizeof(sorv_ohm_cellREi));
-            iscd_tm_totalEi = BcuDataInfo.iscd_tm_totalEE;
+            memcpy(iscv_Q_remainCpEi, BcuDataInfo.iscv_Q_remainCpE, sizeof(iscv_Q_remainCpEi));
+			memcpy(sorv_ohm_cellREi, BcuDataInfo.sorv_ohm_cellRE, sizeof(sorv_ohm_cellREi));
+            iscd_tm_totalEi = BcuDataInfo.iscd_tm_totalE;
             sfmd_flg_mainCirClosFltEi = BcuDataInfo.sfmd_flg_mainCirClosFltE;
             sfmd_flg_heatCirClosFltEi = BcuDataInfo.sfmd_flg_heatCirClosFltE;
             sfmd_flg_heatCirOpenFltEi = BcuDataInfo.sfmd_flg_heatCirOpenFltE;
             sfmd_flg_heatRunFltEi = BcuDataInfo.sfmd_flg_heatRunFltE;
-            sfmd_flg_iscFltEi = BcuDataInfo.sfmd_flg_iscFltEE;
-			ihd_tm_parkTime = BcuDataInfo.ihd_tm_parkTimeEE;
+            sfmd_flg_iscFltEi = BcuDataInfo.sfmd_flg_iscFltE;
+			ihd_tm_parkTime = BcuDataInfo.ihd_tm_parkTimeE;
             ihd_st_EOLState = AppNVMData.EOLState;
 
             PROC_BCU_STATE_SWITCH(PROCESS_STATE_WORK);
@@ -156,7 +156,7 @@ void BCU(void)
                         appd_st_preCyc = 0;
                     }
 					
-					BcuDataInfo.ihd_tm_parkTimeEE = 0;
+					BcuDataInfo.ihd_tm_parkTimeE = 0;
                     BcuDataInfo.appDataModify = TRUE;
                 }
                 osDelay(100);
@@ -177,12 +177,12 @@ void BCU(void)
                 }
 				if (TimeCounter % 1000 == 0)
                 {
-                    BcuDataInfo.ihd_tm_parkTimeEE = ihd_tm_parkTime;
+                    BcuDataInfo.ihd_tm_parkTimeE = ihd_tm_parkTime;
                     BcuDataInfo.appDataModify = TRUE;
                 }
                 if (gProcess_app == WORK)
                 {
-                    BcuDataInfo.ihd_tm_parkTimeEE = ihd_tm_parkTime;
+                    BcuDataInfo.ihd_tm_parkTimeE = ihd_tm_parkTime;
                     BcuDataInfo.appDataModify = TRUE;
                     PROC_BCU_STATE_SWITCH(PROCESS_STATE_INIT);
                     break;
@@ -237,13 +237,13 @@ void BCUEEDataSave(void)
     BcuDataInfo.sohd_Q_chrgE = sohd_Q_chrgEo;
     memcpy(BcuDataInfo.sohv_Q_packCapArrE, sohv_Q_packCapArrEo, sizeof(sohv_Q_packCapArrEo));
     memcpy(BcuDataInfo.sohv_Q_cellCapArrE, sohv_Q_cellCapArrEo, sizeof(sohv_Q_cellCapArrEo));
-    memcpy(BcuDataInfo.iscv_Q_remainCpEE, iscv_Q_remainCpEo, sizeof(iscv_Q_remainCpEo));
-	memcpy(BcuDataInfo.sorv_ohm_cellREE, sorv_ohm_cellREo, sizeof(sorv_ohm_cellREo));
-    BcuDataInfo.iscd_tm_totalEE = iscd_tm_totalEo;
+    memcpy(BcuDataInfo.iscv_Q_remainCpE, iscv_Q_remainCpEo, sizeof(iscv_Q_remainCpEo));
+	memcpy(BcuDataInfo.sorv_ohm_cellRE, sorv_ohm_cellREo, sizeof(sorv_ohm_cellREo));
+    BcuDataInfo.iscd_tm_totalE = iscd_tm_totalEo;
     BcuDataInfo.sfmd_flg_mainCirClosFltE = sfmd_flg_mainCirClosFltEo;
     BcuDataInfo.sfmd_flg_heatCirClosFltE = sfmd_flg_heatCirClosFltEo;
     BcuDataInfo.sfmd_flg_heatCirOpenFltE = sfmd_flg_heatCirOpenFltEo;
     BcuDataInfo.sfmd_flg_heatRunFltE = sfmd_flg_heatRunFltEo;
-    BcuDataInfo.sfmd_flg_iscFltEE = sfmd_flg_iscFltEo;
+    BcuDataInfo.sfmd_flg_iscFltE = sfmd_flg_iscFltEo;
     BcuDataInfo.appDataModify = TRUE;
 }

+ 1 - 1
src/EmbeddedCoder_src/BCUCal.c

@@ -10,7 +10,7 @@ const uint16_T cmnc_Q_ratedCp = 500U;
 const uint16_T cmnc_num_cellUNum = 20U;                                                                                                    /* 电压采样点实际个数; */
 const uint16_T cmnc_num_modTNum = 4U;                                                                                                      /* 温度采样点实际个数; */
 const uint16_T cmnc_tm_parkTime = 1800U;                                                                                                    /* 静置时间阈值; */
-const uint16_T cmnm_F_polar[13] = {1152U, 4862U, 12567U, 20299U, 23334U, 226124U, 23075U, 17084U, 14510U, 15551U, 17127U, 17475U, 20043U}; /* 电池放电参数的C数组; */
+const uint16_T cmnm_F_polar[13] = {1152U, 4862U, 12567U, 20299U, 23334U, 22612U, 23075U, 17084U, 14510U, 15551U, 17127U, 17475U, 20043U}; /* 电池放电参数的C数组; */
 const uint16_T cmnm_R_ohm[13] = {2364U, 2284U, 2234U, 2166U, 2128U, 2111U, 2090U, 2077U, 2077U, 2072U, 2085U, 2090U, 2077U};               /* 电池放电参数的Ro数组; */
 const uint16_T cmnm_R_polar[13] = {4955U, 2073U, 1504U, 1197U, 1098U, 1072U, 1141U, 1700U, 1637U, 1626U, 1496U, 1486U, 1436U};             /* 电池放电参数的Rp数组; */
 const uint16_T cmnm_V_ocv[13] = {3327U, 3453U, 3487U, 3563U, 3617U, 3652U, 3700U, 3791U, 3897U, 4006U, 4129U, 4197U, 4276U};               /* 电池放电参数的OCV数组; */

+ 7 - 11
src/EmbeddedCoder_src/BCUDisp.c

@@ -44,8 +44,8 @@ uint16_T ihd_pct_soc;                             /*保护板SOC */
 uint16_T ihd_pct_soh;                             /*保护板SOH */
 uint8_T ihd_st_workStat;                          /*电池工作状态 */
 uint16_T ihd_tm_parkTime;                         /*驻车时间; */
-uint16_T ihv_T_modT[cmnc_num_modTNumMax];                           /*模组温度(数组)+40 */
-uint16_T ihv_V_cellU[cmnc_num_cellUNumMax];                         /*电池单体电压(数组); */
+uint16_T ihv_T_modT[cmnc_num_modTNumMax];         /*模组温度(数组)+40 */
+uint16_T ihv_V_cellU[cmnc_num_cellUNumMax];       /*电池单体电压(数组); */
 boolean_T ihd_st_chrgMosControl;                  /* Mos控制指令 ;0-断开,1-导通*/
 boolean_T ihd_st_disChrgMosControl; 
 boolean_T ihd_st_relayControl;    
@@ -121,8 +121,9 @@ uint16_T soed_E_nowEng;
 uint16_T soed_pct_nowStat;
 uint16_T soed_E_fullEng;
 
-uint8_T sorv_ohm_cellREi[cmnc_num_cellUNumMax];
-uint8_T sorv_ohm_cellREo[cmnc_num_cellUNumMax];
+uint16_T sorv_ohm_cellREi[cmnc_num_cellUNumMax];
+uint16_T sorv_ohm_cellREo[cmnc_num_cellUNumMax];
+uint16_T sorv_ohm_cellR[cmnc_num_cellUNumMax];
 
 boolean_T iscd_flg_flt;
 uint16_T iscv_Q_remainCpEi[cmnc_num_cellUNumMax];
@@ -133,7 +134,7 @@ uint32_T iscd_tm_totalEo;
 uint8_T tmsd_st_heatAct;                          /*热管理请求状态; */
 
 uint8_T cmd_st_chrgMod;                           /* 充电模式  */
-uint8_T cmd_st_chrgSt;                            /* 充电状态  */
+uint8_T cmd_st_chrgSt;                           /* 充电状态  */
 int16_T cmd_I_chrgCurrReq;                       /* 充电需求电流  */
 uint8_T cmd_idx_chrgEndReason;                    /* 充电结束原因  */
         
@@ -147,12 +148,7 @@ int16_T  cdmv_V_deltOCV[cmnc_num_cellUNumMax] = {0};
 int16_T  cdmv_ohm_deltR[cmnc_num_cellUNumMax] = {0};
 boolean_T cdmd_flg_deltOCVDisable;
 
-uint16_T test_efkSocMin;
-uint16_T test_efkSocMax;
-real_T test_UpMin;
-real_T test_UpMax;
-uint16_T test_ekfSoc;
-uint16_T test_ekfSoc0;
+
 uint16_T test_cellCap[cmnc_num_cellUNumMax] ;
 uint16_T test_countEn;
 

+ 4 - 4
src/EmbeddedCoder_src/CDM.c

@@ -26,7 +26,7 @@ void CDM(void)
     static uint8_T Cnt;
 
     //
-    if (ihd_st_workStat_Delay == 2 && ihd_st_workStat != 2)
+    if (ihd_st_workStat_Delay != 1 && ihd_st_workStat == 1)
     {
         FirstRun_CDM = true;
     }
@@ -49,7 +49,7 @@ void CDM(void)
         }
     }
     //
-    if (ihd_st_workStat != 2) //&&  (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) //&&  (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))
     {
         for (i = 0; i < cmnc_num_cellUNum; i++)
         {
@@ -102,9 +102,9 @@ void CDM(void)
     else
     {
         cdmd_flg_deltOCVDisable = true;
+		memset(cdmv_V_deltOCV,0,sizeof(cdmv_V_deltOCV));
+		memset(cdmv_ohm_deltR,0,sizeof(cdmv_V_deltOCV));
     }
-
-    //cdmd_flg_deltOCVDisable = true;  ////////
     sfmd_I_curr_Delay = sfmd_I_curr;
     FirstRun_CDM = false;
 }

+ 13 - 10
src/EmbeddedCoder_src/SOC.c

@@ -19,6 +19,7 @@ void SOC(void)
     static uint16_T socn_pct_battSocEE;
     static uint16_T socn_pct_bcuSocEE;
     static uint16_T socn_Q_cap;
+	//static int16_T socn_ohm_cellRAvrg;
     //
     real_T Q;
     real_T battcurr;
@@ -147,6 +148,7 @@ void SOC(void)
             socn_pct_battSocEE = look1_iu16lu16n16tu16_binlcase(sfmd_V_cellUAvrg, (&(cmnm_V_ocv[0])), (&(cmnm_pct_soc[0])), 12U);
         }
         socn_Q_cap = (uint16_T)((uint16_T)((uint32_T)sohd_pct_bcuSoh * cmnc_Q_ratedCp / 2000U) << 1);
+		//socn_ohm_cellRAvrg = ArrMean(&sorv_ohm_cellREi[0], cmnc_num_cellUNum);
     }
 	
     //printf("1----  battSocEi:%d,bcuSocEi:%d,battSocEE:%d,bcuSocEE:%d\n",socd_pct_battSocEi,socd_pct_bcuSocEi,socn_pct_battSocEE,socn_pct_bcuSocEE);
@@ -218,7 +220,7 @@ void SOC(void)
     //输出
     EKFSOCMin = (uint16_T)(soc_Min_Delay * 10);
     socn_flg_ekfInvalidMin = (deltU > 0.01) || (deltU < -0.01);
-    //printf("2----soc:%f,Up:%f,U:%d,deltU:%f,K[0]:%f,K[1]:%f\n",soc_Min_Delay,Up_Min_Delay,sfmd_V_cellUMin,deltU,K[0],K[1]);  
+    //printf("2----socmin:%f,U:%d,R:%f\n",soc_Min_Delay,sfmd_V_cellUMin,Ro);
 	//------------------------EKFSOCmax-----------------------------------
     if (FirstRun_SOC)
     {
@@ -231,7 +233,7 @@ void SOC(void)
     }
     // 参数查表
     ocv = (real_T)look1_iu16lu16n16tu16_binlcase((uint16_T)(soc_Max_Delay * 10), (&(cmnm_pct_soc[0])), (&(cmnm_V_ocv[0])),   12U) * 0.001;
-    Ro  = (real_T)look1_iu16lu16n16tu16_binlcase((uint16_T)(soc_Max_Delay * 10), (&(cmnm_pct_soc[0])), (&(cmnm_R_ohm[0])),   12U) * 0.001 * 0.001;
+    Ro  = (real_T)look1_iu16lu16n16tu16_binlcase((uint16_T)(soc_Max_Delay * 10), (&(cmnm_pct_soc[0])), (&(cmnm_R_ohm[0])),   12U) * 0.001 * 0.001 ;
     Rp  = (real_T)look1_iu16lu16n16tu16_binlcase((uint16_T)(soc_Max_Delay * 10), (&(cmnm_pct_soc[0])), (&(cmnm_R_polar[0])), 12U) * 0.001 * 0.001;
     C   = (real_T)look1_iu16lu16n16tu16_binlcase((uint16_T)(soc_Max_Delay * 10), (&(cmnm_pct_soc[0])), (&(cmnm_F_polar[0])), 12U) * 0.001 * 1000;
     A[0] = 1;
@@ -281,7 +283,7 @@ void SOC(void)
     //输出
     EKFSOCMax = (uint16_T)(soc_Max_Delay * 10);
     socn_flg_ekfInvalidMax = (deltU > 0.01) || (deltU < -0.01);
-    //printf("4----soc:%f,Up:%f,U:%d,deltU:%f,K[0]:%f,K[1]:%f\n",soc_Max_Delay,Up_Max_Delay,sfmd_V_cellUMax,deltU,K[0],K[1]);
+    //printf("4----socmax:%f,U:%d,R:%f\n\n",soc_Max_Delay,sfmd_V_cellUMax,Ro);
     //-----------------------EKFSOC----------------------------------------
     socn_flg_ekfInvalid = socn_flg_ekfInvalidMax || socn_flg_ekfInvalidMin;
     if (EKFSOCMax > 800)
@@ -581,8 +583,7 @@ void SOC(void)
     
     //===============================================================================================================================================================
     ////////////////////////////////////////////////BCUSOC///////////////////////////////////////////////////////////////////////////////////////////////////////////
-    //===============================================================================================================================================================
-    
+    //=============================================================================================================================================================== 
     if (sfmd_I_curr < 10 && sfmd_I_curr > -10)
     {
         statCntl = (statCntl + 1) > 250 ? 250 : (statCntl + 1);
@@ -593,7 +594,7 @@ void SOC(void)
     }
     statFlg = statCntl > 2;
     
-    Flg = (FirstRun_SOC || (ihd_st_chrgSta_Delay == 2 && ihd_st_workStat != 2) || (ihd_st_chrgSta_Delay != 2 && ihd_st_workStat == 2) || ((int16_T)(socd_pct_battSoc  - socd_pct_battSoc_Delay) > 10 || (int16_T)(socd_pct_battSoc - socd_pct_battSoc_Delay) < -10) || statFlg);
+    Flg = (FirstRun_SOC || (ihd_st_chrgSta_Delay == 2 && ihd_st_workStat != 2) || (ihd_st_chrgSta_Delay != 2 && ihd_st_workStat == 2) || ((int16_T)(socd_pct_battSoc  - socd_pct_battSoc_Delay) > 5 || (int16_T)(socd_pct_battSoc - socd_pct_battSoc_Delay) < -5) || statFlg);
     
     ihd_st_chrgSta_Delay = ihd_st_workStat;
     socd_pct_battSoc_Delay = socd_pct_battSoc;
@@ -669,16 +670,18 @@ void SOC(void)
             onceFlg_dischrg = false;
             socd_pct_bcuSoc = 2000;
         }
-        
         socd_pct_bcuSoc = SOCfitSystem(bcuSoc, &socd_pct_bcuSoc, 1);
         //printf("11-----x:[%d-%d-%d],y:[%d-%d-%d],bcusoc:%d,socd_pct_bcuSoc:%d\n",x[0],x[1],x[2],y[0],y[1],y[2],bcuSoc,socd_pct_bcuSoc);
     }
-    //
     socd_pct_bcuSocEo = socd_pct_bcuSoc;
+
+	//=======================================VCUSOC========================================================================================
+	
     socd_pct_vcuSoc =  (uint16_T)((uint32_T)((socd_pct_bcuSoc - socc_pct_battSocLow) * 1000) / (socc_pct_battSocUp - socc_pct_battSocLow)); 
+	
     //printf("BattSOC:%d,BCUSOC:%d,VcuSoc:%d\n",socd_pct_battSoc,socd_pct_bcuSoc,socd_pct_vcuSoc);
-    //===================================================================
-    //------------------EEsave-------------------------------------------
+    //================================================================================================
+    //------------------EEsave-------------------------------------------=============================
     //================================================================================================
     if ((int16_T)(socd_pct_battSoc - socd_pct_battSoc_save) > 10 || (int16_T)(socd_pct_battSoc - socd_pct_battSoc_save) < -10 || (int16_T)(socd_pct_bcuSoc - socd_pct_bcuSoc_save) > 10 || (int16_T)(socd_pct_bcuSoc - socd_pct_bcuSoc_save) < -10 )
     {

+ 8 - 14
src/EmbeddedCoder_src/SOR.c

@@ -10,15 +10,15 @@ void SOR_Init(void)
 //-------------------------------------------------------------------------
 void SOR(void)
 {
-    static uint8_T sorn_ohm_cellREE[cmnc_num_cellUNumMax];
-    static uint8_T sorn_ohm_cellREEArr[5][cmnc_num_cellUNumMax];
-    uint8_T sorn_ohm_cellRSum[cmnc_num_cellUNumMax];
+    static uint16_T sorn_ohm_cellREE[cmnc_num_cellUNumMax];
+    static uint16_T sorn_ohm_cellREEArr[5][cmnc_num_cellUNumMax];
+    uint16_T sorn_ohm_cellRSum[cmnc_num_cellUNumMax];
 	static uint16_T sorn_V_cellU[cmnc_num_cellUNumMax];
 	static uint8_T sorn_num_ctn;
 	static int16_T sorn_I_curr;
     uint16_T i;
     uint16_T j;
-	socd_pct_battSoc =600;
+	socd_pct_battSoc = 600;
     //
     if(FirstRun_SOR)
     {
@@ -28,7 +28,7 @@ void SOR(void)
     }
     if(FirstRun_SOR)
     {
-        if( ArrMax((&(sorv_ohm_cellREi[0])) , cmnc_num_cellUNum) > 100)
+        if(ArrMax((&(sorv_ohm_cellREi[0])) , cmnc_num_cellUNum) > 65000)
         {
             memset(sorn_ohm_cellREE,0, sizeof(sorn_ohm_cellREE));
         }
@@ -37,6 +37,7 @@ void SOR(void)
             memcpy(sorn_ohm_cellREE,sorv_ohm_cellREi, sizeof(sorv_ohm_cellREi));
         }
     }
+
     
     if(socd_pct_battSoc >= 550 && socd_pct_battSoc <= 700 && sorn_num_ctn < 5)
     {
@@ -44,7 +45,7 @@ void SOR(void)
         {
             for(i = 0;i < cmnc_num_cellUNum;i++)
             {
-                sorn_ohm_cellREEArr[sorn_num_ctn][i] =  (uint8_T)(((int16_T)(sorn_V_cellU[i] - sfmv_V_cellU[i])) * 100/(sorn_I_curr - sfmd_I_curr));
+                sorn_ohm_cellREEArr[sorn_num_ctn][i] = (uint16_T)( ((real_T)(sorn_V_cellU[i] - sfmv_V_cellU[i]) * 0.001) / ((real_T)(sorn_I_curr - sfmd_I_curr) * 0.1) * 1000000 );
             }
             sorn_num_ctn = sorn_num_ctn + 1;
             memset(sorn_ohm_cellRSum,0, sizeof(sorn_ohm_cellRSum));
@@ -56,17 +57,10 @@ void SOR(void)
                 }
                 sorn_ohm_cellREE[i] = sorn_ohm_cellRSum[i]/sorn_num_ctn;
             }
-
-			printf("I:%d\n",sfmd_I_curr - sorn_I_curr);
-			printf("U:%d   %d\n",sorn_V_cellU[0] , sfmv_V_cellU[0]);
-			printf("U:%d\n",(int16_T)(sorn_V_cellU[0] - sfmv_V_cellU[0]));
         } 
     }
     memcpy(sorv_ohm_cellREo,sorn_ohm_cellREE, sizeof(sorn_ohm_cellREE));
-	printf("0_%d %d %d %d %d\n",sorn_ohm_cellREEArr[0][0],sorn_ohm_cellREEArr[1][0],sorn_ohm_cellREEArr[2][0],sorn_ohm_cellREEArr[3][0],sorn_ohm_cellREEArr[4][0]);
-	printf("1_%d %d %d %d %d\n",sorn_ohm_cellREEArr[0][1],sorn_ohm_cellREEArr[1][1],sorn_ohm_cellREEArr[2][1],sorn_ohm_cellREEArr[3][1],sorn_ohm_cellREEArr[4][1]);
-	printf("%d  %d\n\n",sorv_ohm_cellREo[0],sorv_ohm_cellREo[1]);
-    sorn_I_curr = sfmd_I_curr;
+	sorn_I_curr = sfmd_I_curr;
     memcpy(sorn_V_cellU,sfmv_V_cellU, sizeof(sfmv_V_cellU));
     FirstRun_SOR = false;
 }