Prechádzať zdrojové kódy

【V3.1.0.56】V3版本优化1.SOC映射关系增加,2.CDM测试完成,正常使用,3.LED线程优化,4.观测量减少

CHENJIE-PC\QiXiang_CHENJIE 3 rokov pred
rodič
commit
5e0819d0c7

+ 2 - 2
inc/AppConfig.h

@@ -2,7 +2,7 @@
  * @Author       : ChenJie
  * @Date         : 2021-10-14 09:27:15
  * @LastEditors  : ChenJie
- * @LastEditTime : 2021-11-25 14:10:49
+ * @LastEditTime : 2021-11-26 14:44:26
  * @Description  : App Config H file 配置文件,可以针对不同参数进行更改
  * @FilePath     : \PLAT\project\ec616_0h00\apps\qx_app\inc\AppConfig.h
  */
@@ -14,7 +14,7 @@
 #define DATA_MODULE_TYPE (1)           //1表示NB模块,2表示4G cat1
 #define EOLSTATE (0)                   //1表示下线检测跳过,使用默认值,0表示使用下线检测
 #define DEFAULT_SN "RLTEST00000000001" //默认上传的SN编码
-#define APPSWVERSION 0x03010037        //数据模块软件版本号
+#define APPSWVERSION 0x03010038        //数据模块软件版本号
 #define RELAYCONFIG 1                  //继电器配置
 #define TCP_ADD "iotp.fast-fun.cn"     //数据上传的地址
 #define TCP_PORT 8712                  //数据上传的端口

+ 4 - 4
src/AppFunc.c

@@ -3,7 +3,7 @@
  * @Date         : 2021-11-09 12:08:17
  * @Version      : V3.0
  * @LastEditors  : ChenJie
- * @LastEditTime : 2021-11-22 11:12:04
+ * @LastEditTime : 2021-11-26 14:44:06
  * @Description  : file content
  * @FilePath     : \PLAT\project\ec616_0h00\apps\qx_app\src\AppFunc.c
  */
@@ -569,7 +569,7 @@ void relayControlFunc(UINT16 BuzzerPeriod, float DutyRatio)
 void LEDDisplay(void)
 {
 	UINT8 LedBattSoc = 0;
-	LedBattSoc = socd_pct_bcuSoc / 10;
+	LedBattSoc = socd_pct_vcuSoc / 10;
 	static UINT16 LightTimer = 0;
 	static UINT16 ErrorLightTimer = 0;
 
@@ -2114,8 +2114,8 @@ void CANEncodeFunction(UINT32 ID, UINT8 *msgData)
 		*(UINT8 *)(msgData + 7) = reservedSignal8 & 0xFF;
 		break;
 	case 0x7CF:
-		reservedSignal1 = socd_pct_bcuSoc & 0xFF;
-		reservedSignal2 = (socd_pct_bcuSoc >> 8) & 0xFF;
+		reservedSignal1 = socd_pct_vcuSoc & 0xFF;
+		reservedSignal2 = (socd_pct_vcuSoc >> 8) & 0xFF;
 		reservedSignal3 = test_efkSocMin & 0xFF;
 		reservedSignal4 = (test_efkSocMin >> 8) & 0xFF;
 		reservedSignal5 = test_efkSocMax & 0xFF;

+ 14 - 13
src/AppTaskControl.c

@@ -41,7 +41,7 @@ static void ControlTask(void *arg)
         }
         case PROCESS_CONTROL_STATE_WORK:
         {
-            osDelayUntil(100);
+            osDelay(10);
             if (CurrentTime != TimeCounter)
             {
                 UINT16 Buzzerperiod = 400;
@@ -81,19 +81,20 @@ static void ControlTask(void *arg)
                 {
                     AdcIndex = 0;
                 }
+
+                if (gProcess_app != WORK)
+                {
+                    NetSocDisplay(LED_SOC_0, LED_TURN_OFF);
+                    NetSocDisplay(LED_SOC_1, LED_TURN_OFF);
+                    NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
+                    NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
+                    FaultDisplay(LED_TURN_OFF);
+                    PROC_CONTROL_STATE_SWITCH(PROCESS_CONTROL_STATE_SLEEP);
+                    break;
+                }
+                //临时故障诊断函数--改为模型诊断
+                ErrorNumHandleFunc();
             }
-            if (gProcess_app != WORK)
-            {
-                NetSocDisplay(LED_SOC_0, LED_TURN_OFF);
-                NetSocDisplay(LED_SOC_1, LED_TURN_OFF);
-                NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
-                NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
-                FaultDisplay(LED_TURN_OFF);
-                PROC_CONTROL_STATE_SWITCH(PROCESS_CONTROL_STATE_SLEEP);
-                break;
-            }
-            //临时故障诊断函数--改为模型诊断
-            ErrorNumHandleFunc();
             break;
         }
         case PROCESS_CONTROL_STATE_SLEEP:

+ 6 - 12
src/AppTaskTcp.c

@@ -259,8 +259,8 @@ static void TcpDataInfoAssembleSend()
     }
     case BATT_DISCHARGE_SYM:
     {
-        //BattSendFreq = AppDataInfo.BattInfoSendFreqNomal;
-        BattSendFreq = 1;
+        BattSendFreq = AppDataInfo.BattInfoSendFreqNomal;
+        //BattSendFreq = 1;
         GpsSendFreq = AppDataInfo.PosInfoSendFreqHigh;
         break;
     }
@@ -343,7 +343,7 @@ static void TcpDataInfoAssembleSend()
         *(SendBuffer + 45) = battPackVol >> 8;              //电压-46
         *(SendBuffer + 46) = battPackVol & 0xFF;            //电压-47
         *(SendBuffer + 47) = battMOSSwitchState;            //mos状态-48
-        *(SendBuffer + 48) = (UINT8)(socd_pct_bcuSoc / 10); //soc-49
+        *(SendBuffer + 48) = (UINT8)(socd_pct_vcuSoc / 10); //soc-49
         *(SendBuffer + 49) = (UINT8)(sohd_pct_bcuSoh / 10); //soh-50
         *(SendBuffer + 50) = (battBalanceoInfo >> 24) & 0xFF;
         *(SendBuffer + 51) = (battBalanceoInfo >> 16) & 0xFF;
@@ -586,15 +586,9 @@ static void TcpDataInfoAssembleSend()
                 temp = max(temp, cdmv_ohm_deltR[i]);
             }
             sprintf((char *)rbuf, "B-%d,%d,%d,%d,%d,%d,%d,%d,%d,,\
-                                %d,%d,%d,%d,%d,,\
-                                %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,,\
-                                %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,,\
-                                %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
-                    socd_pct_ahSoc, socd_pct_ekfSoc, socd_pct_estSoc, socd_pct_battSoc, socd_pct_bcuSoc, battSOC * 10, socd_pct_cellBattSoc, sohv_Q_packCapArrEo[9], temp,
-                    battI - 10000, maxCellVol, minCellVol, sfmd_I_curr, sfmd_V_cellUAvrg,
-                    sfmv_V_cellU[0], sfmv_V_cellU[1], sfmv_V_cellU[2], sfmv_V_cellU[3], sfmv_V_cellU[4], sfmv_V_cellU[5], sfmv_V_cellU[6], sfmv_V_cellU[7], sfmv_V_cellU[8], sfmv_V_cellU[9], sfmv_V_cellU[10], sfmv_V_cellU[11], sfmv_V_cellU[12], sfmv_V_cellU[13], sfmv_V_cellU[14], sfmv_V_cellU[15], sfmv_V_cellU[16], sfmv_V_cellU[17], sfmv_V_cellU[18], sfmv_V_cellU[19],
-                    cdmv_ohm_deltR[0], cdmv_ohm_deltR[1], cdmv_ohm_deltR[2], cdmv_ohm_deltR[3], cdmv_ohm_deltR[4], cdmv_ohm_deltR[5], cdmv_ohm_deltR[6], cdmv_ohm_deltR[7], cdmv_ohm_deltR[8], cdmv_ohm_deltR[9], cdmv_ohm_deltR[10], cdmv_ohm_deltR[11], cdmv_ohm_deltR[12], cdmv_ohm_deltR[13], cdmv_ohm_deltR[14], cdmv_ohm_deltR[15], cdmv_ohm_deltR[16], cdmv_ohm_deltR[17], cdmv_ohm_deltR[18], cdmv_ohm_deltR[19],
-                    cdmv_V_deltOCV[0], cdmv_V_deltOCV[1], cdmv_V_deltOCV[2], cdmv_V_deltOCV[3], cdmv_V_deltOCV[4], cdmv_V_deltOCV[5], cdmv_V_deltOCV[6], cdmv_V_deltOCV[7], cdmv_V_deltOCV[8], cdmv_V_deltOCV[9], cdmv_V_deltOCV[10], cdmv_V_deltOCV[11], cdmv_V_deltOCV[12], cdmv_V_deltOCV[13], cdmv_V_deltOCV[14], cdmv_V_deltOCV[15], cdmv_V_deltOCV[16], cdmv_V_deltOCV[17], cdmv_V_deltOCV[18], cdmv_V_deltOCV[19]);
+                                %d,%d,%d,%d,%d",
+                    socd_pct_ahSoc, socd_pct_ekfSoc, socd_pct_estSoc, socd_pct_battSoc, socd_pct_vcuSoc, battSOC * 10, socd_pct_cellBattSoc, sohv_Q_packCapArrEo[9], temp,
+                    battI - 10000, maxCellVol, minCellVol, sfmd_I_curr, sfmd_V_cellUAvrg);
         }
         Debugcounter++;
         if (Debugcounter > 100)

+ 46 - 52
src/EmbeddedCoder_src/CDM.c

@@ -1,6 +1,5 @@
 #include "CDM.h"
 
-
 static boolean_T FirstRun_CDM;
 
 void CDM_Init(void)
@@ -8,109 +7,104 @@ void CDM_Init(void)
     FirstRun_CDM = true;
 }
 
-
 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];
+    real_T P1[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 deltaES[cmnc_num_cellUNumMax];
     static real_T deltaRS[cmnc_num_cellUNumMax];
     static real_T 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 int16_T sfmd_I_curr_Delay;
+    static uint8_T Cnt;
 
     //
-    if(ihd_st_workStat_Delay == 2 && ihd_st_workStat != 2)
+    if (ihd_st_workStat_Delay == 2 && ihd_st_workStat != 2)
     {
         FirstRun_CDM = true;
     }
     ihd_st_workStat_Delay = ihd_st_workStat;
-	//
+    //
     if (FirstRun_CDM)
     {
-        for (i = 0;i < cmnc_num_cellUNum;i++)
+        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;
-            deltaE[i] =  0;
-            deltaR[i] =  0;
-			deltaES[i] = 0;
+            deltaE[i] = 0;
+            deltaR[i] = 0;
+            deltaES[i] = 0;
             deltaRS[i] = 0;
-			Cnt = 0;
+            Cnt = 0;
         }
     }
     //
-    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 != 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))
     {
-        for (i = 0;i < cmnc_num_cellUNum;i++)
+        for (i = 0; i < cmnc_num_cellUNum; i++)
         {
-            cmdn_V_cellUDelt[i] = (real_T)(sfmv_V_cellU[i]  - sfmd_V_cellUAvrg) * 0.001;
+            cmdn_V_cellUDelt[i] = (real_T)(sfmv_V_cellU[i] - sfmd_V_cellUAvrg) * 0.001;
         }
-        cdmn_I_curr = (real_T) sfmd_I_curr * 0.1;
+        cdmn_I_curr = (real_T)sfmd_I_curr * 0.1;
         //
         cdmd_flg_deltOCVDisable = false;
-        for (i = 0;i < cmnc_num_cellUNum;i++)
+        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] = (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);
             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;
+            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] = P1[0][i];
-			P[1][i] = P1[1][i];
-			P[2][i] = P1[2][i];
-			P[3][i] = P1[3][i];
-			if(arf[i] > 0.04 || arf[i] < -0.04)
+            P[0][i] = P1[0][i];
+            P[1][i] = P1[1][i];
+            P[2][i] = P1[2][i];
+            P[3][i] = P1[3][i];
+            if (arf[i] > 0.04 || arf[i] < -0.04)
             {
-                cdmd_flg_deltOCVDisable = true;   
+                cdmd_flg_deltOCVDisable = true;
             }
-	    }
+        }
         //
-		Cnt = Cnt + 1;
-        for (i = 0;i < cmnc_num_cellUNum;i++)
-        {   
+        Cnt = Cnt + 1;
+        for (i = 0; i < cmnc_num_cellUNum; i++)
+        {
             deltaES[i] = deltaES[i] + deltaE[i];
-			deltaRS[i] = deltaRS[i] + deltaR[i];
-
+            deltaRS[i] = deltaRS[i] + deltaR[i];
         }
-	
-		if (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);
-			     deltaES[i] = 0;
-                 deltaRS[i] = 0;
 
-             }
-		     Cnt = 0;
-		}
+        if (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);
+                deltaES[i] = 0;
+                deltaRS[i] = 0;
+            }
+            Cnt = 0;
+        }
     }
     else
     {
         cdmd_flg_deltOCVDisable = true;
     }
 
-	
-	cdmd_flg_deltOCVDisable = true;  ////////
-	sfmd_I_curr_Delay = sfmd_I_curr;
+    //cdmd_flg_deltOCVDisable = true;  ////////
+    sfmd_I_curr_Delay = sfmd_I_curr;
     FirstRun_CDM = false;
-	
 }

+ 1 - 1
src/EmbeddedCoder_src/SFM.c

@@ -701,7 +701,7 @@ void SFM(void)
     sfmd_flg_disChrgMosTOverMisFlt = JudgeTimeSystem(!sfmd_flg_interComFlt, sfmd_flg_disChrgMosTOverFlt2 != ihd_flg_disChrgMosTOverFlt, &DiagTime.N162, 2);
 
     //163 soc不匹配
-    sfmd_flg_socMisFlt = !FirstRun_SFM && (!sfmd_flg_interComFlt) && ((int16_T)(socd_pct_bcuSoc - ihd_pct_soc) > 100 || (int16_T)(socd_pct_bcuSoc - ihd_pct_soc) < -100);
+    sfmd_flg_socMisFlt = !FirstRun_SFM && (!sfmd_flg_interComFlt) && ((int16_T)(socd_pct_vcuSoc - ihd_pct_soc) > 100 || (int16_T)(socd_pct_vcuSoc - ihd_pct_soc) < -100);
     //164 SOH 不匹配
     sfmd_flg_sohMisFlt = !FirstRun_SFM && (!sfmd_flg_interComFlt) && ((int16_T)(sohd_pct_bcuSoh - ihd_pct_soh) > 50 || (int16_T)(sohd_pct_bcuSoh - ihd_pct_soh) < -50);