Browse Source

【3.1.0.29】7250发布给用户小批量版本测试

CHENJIE-PC\QiXiang_CHENJIE 3 years ago
parent
commit
308c60aa74
10 changed files with 1108 additions and 830 deletions
  1. 2 2
      inc/AppConfig.h
  2. 27 30
      inc/AppFunc.h
  3. 139 191
      src/AppFunc.c
  4. 7 8
      src/AppTaskControl.c
  5. 2 3
      src/AppTaskMain.c
  6. 1 2
      src/AppTaskTcp.c
  7. 3 3
      src/AppTaskUart.c
  8. 106 105
      src/EmbeddedCoder_src/BCU.c
  9. 796 464
      src/EmbeddedCoder_src/SFM.c
  10. 25 22
      src/EmbeddedCoder_src/SOC.c

+ 2 - 2
inc/AppConfig.h

@@ -2,7 +2,7 @@
  * @Author       : ChenJie
  * @Date         : 2021-10-14 09:27:15
  * @LastEditors  : ChenJie
- * @LastEditTime : 2021-10-27 11:26:04
+ * @LastEditTime : 2021-10-29 16:41:27
  * @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 0x0301001C        //数据模块软件版本号
+#define APPSWVERSION 0x0301001D        //数据模块软件版本号
 #define RELAYCONFIG 1                  //继电器配置
 #define TCP_ADD "iotp.fast-fun.cn"     //数据上传的地址
 #define TCP_PORT 8712                  //数据上传的端口

+ 27 - 30
inc/AppFunc.h

@@ -3,7 +3,7 @@
  * @Date         : 2021-10-14 09:27:15
  * @Version      : V3.0
  * @LastEditors  : ChenJie
- * @LastEditTime : 2021-10-14 18:15:45
+ * @LastEditTime : 2021-10-29 16:23:13
  * @Description  : file content
  * @FilePath     : \PLAT\project\ec616_0h00\apps\qx_app\inc\AppFunc.h
  */
@@ -34,40 +34,37 @@ typedef struct _Fota_Type
     UINT8 Fota_CRC;
 
 } Fota_Type;
-void ExpiryTimeCal(UINT8 *StartTimeArray, UINT16 rentalDays, UINT8 *ExpiryTimeArray);
-INT8 rentalEndDetectFunc(void);
-void BattLockFunc(void);
-void BattWorkDelayFunc(UINT8 battWorkCurrentState);
-UINT8 bcc_chk(UINT8 *data, UINT16 length);
-void LEDDisplay(void);
+BOOL BattHeaterSwitch(UINT8 *heaterSwitch, UINT8 HeatForceControl);
 BOOL uartBattInfoDecode(UINT8 *dataPtr);
+BOOL UDSAskforDownLoadData();
+BOOL UDSClearFotaDownloadRegion();
+INT8 rentalEndDetectFunc(void);
+static UINT8 bcc_chk_fota(UINT8 *data, UINT8 length);
 static UINT8 BmsErrorDecode(UINT32 battWarningState);
-UINT16 GetErrorNum(UINT16 *ErrorArray, UINT8 Errorlen);
-UINT8 PutErrorNum(UINT16 *ErrorArray, UINT8 Errorlen, UINT16 ErrorNum);
-UINT8 LookUpRTtable(UINT32 R_value);
-BOOL BattHeaterSwitch(UINT8 *heaterSwitch, UINT8 HeatForceControl);
-void SaveAppData(void);
-void LoadAppData(void);
-void SaveBcuData(void);
-void LoadBcuData(void);
-void SaveAppConfig(void);
-void LoadAppConfig(void);
+static UINT8 Fota_crc_chk(UINT8 *data, UINT8 length);
 static void setDefaultAppConfigData(void);
 static void setDefaultAppDataInfo(void);
 static void setDefaultBcuDataInfo(void);
-void CanMsgTx1000ms(void);
-void UDS_Service(CAN_Msg_Type *CanRxMsg);
-void CANEncodeFunction(UINT32 ID, UINT8 *msgData);
-void relayControlFunc(UINT8 BuzzerPeriod, float DutyRatio);
-BOOL UDSClearFotaDownloadRegion();
-BOOL UDSAskforDownLoadData();
+UINT16 encryptionAlgorithm(UINT16 plainText);
+UINT16 GetErrorNum(UINT16 *ErrorArray, UINT8 Errorlen);
+UINT8 bcc_chk(UINT8 *data, UINT16 length);
+UINT8 LookUpRTtable(UINT32 R_value);
+UINT8 PutErrorNum(UINT16 *ErrorArray, UINT8 Errorlen, UINT16 ErrorNum);
 UINT8 UDSNegtiveAnswer(UINT8 answerLen, UINT8 messageIndex, UINT32 negCode);
 UINT8 UDSPositiveAnswer(UINT8 answerLen, UINT8 messageIndex, UINT32 posCode);
-
-UINT16 encryptionAlgorithm(UINT16 plainText);
-
+void BattLockFunc(void);
+void BattWorkDelayFunc(UINT8 battWorkCurrentState);
+void CANEncodeFunction(UINT32 ID, UINT8 *msgData);
+void CanMsgTx1000ms(void);
+void ErrorNumHandleFunc(void);
+void ExpiryTimeCal(UINT8 *StartTimeArray, UINT16 rentalDays, UINT8 *ExpiryTimeArray);
 void Fota_Func(UINT8 *DataPtr, INT32 connectId);
-static UINT8 bcc_chk_fota(UINT8 *data, UINT8 length);
-static UINT8 Fota_crc_chk(UINT8 *data, UINT8 length);
-
-void ErrorNumHandleFunc(void);
+void LEDDisplay(void);
+void LoadAppConfig(void);
+void LoadAppData(void);
+void LoadBcuData(void);
+void relayControlFunc(UINT16 BuzzerPeriod, float DutyRatio);
+void SaveAppConfig(void);
+void SaveAppData(void);
+void SaveBcuData(void);
+void UDS_Service(CAN_Msg_Type *CanRxMsg);

+ 139 - 191
src/AppFunc.c

@@ -3,7 +3,7 @@
  * @Date         : 2021-10-14 09:27:15
  * @Version      : V3.0
  * @LastEditors  : ChenJie
- * @LastEditTime : 2021-10-26 14:54:49
+ * @LastEditTime : 2021-10-29 18:17:47
  * @Description  : 应用层函数定义区,UTF-8
  * @FilePath     : \PLAT\project\ec616_0h00\apps\qx_app\src\AppFunc.c
  */
@@ -433,25 +433,26 @@ BOOL BattHeaterSwitch(UINT8 *heaterSwitch, UINT8 HeatForceControl)
   * @param {float} DutyRatio
   * @return {*}
   */
-void relayControlFunc(UINT8 BuzzerPeriod, float DutyRatio)
+void relayControlFunc(UINT16 BuzzerPeriod, float DutyRatio)
 {
 
-	static UINT8 BuzzerTimer = 0;
-	BuzzerTimer++;
-
-	if (BuzzerTimer < (UINT8)(BuzzerPeriod * DutyRatio))
+	static UINT16 BuzzerTimer = 0;
+	if (BuzzerTimer < (UINT16)(BuzzerPeriod * DutyRatio))
 	{
 		relayControl(TRUE);
 	}
-	else if (BuzzerTimer >= (UINT8)(BuzzerPeriod * DutyRatio) && BuzzerTimer < BuzzerPeriod)
+	else
 	{
 		relayControl(FALSE);
 	}
-	else
+	if (BuzzerTimer > BuzzerPeriod)
 	{
-		relayControl(FALSE);
 		BuzzerTimer = 0;
 	}
+	else
+	{
+		BuzzerTimer = BuzzerTimer + 100;
+	}
 }
 /**
  * @brief : LED控制函数,根据不同状态进行LED显示
@@ -462,20 +463,23 @@ void LEDDisplay(void)
 {
 	UINT8 LedBattSoc = 0;
 	LedBattSoc = socd_pct_bcuSoc / 10;
-	static UINT8 currentState = 0;
-	static UINT8 LightTimer = 0;
-	static UINT8 ErrorLightTimer = 0;
+	static UINT16 LightTimer = 0;
+	static UINT16 ErrorLightTimer = 0;
+
+	UINT16 LEDFlashPeriod = 1000; //1000ms
+	float DutyRatio = 0.5;
+	if (battWorkState == 2)
+	{
+		LEDFlashPeriod = 100 * (LedBattSoc / 10 + 1);
+	}
+	else
+	{
+		LEDFlashPeriod = 1000;
+	}
 
-	UINT8 LEDFlashPeriod = 10; //1000ms
-	float DutyRatio = 0.4;
-	LightTimer++;
-	ErrorLightTimer++;
-#ifdef USING_PRINTF1
-	printf("[%d]-%d-%d-%d\n", __LINE__, LightTimer, ErrorLightTimer, battSOC);
-#endif
 	if (AppDataInfo.BattLock == TRUE) //电池整处于锁定状态
 	{
-		if (LightTimer < (UINT8)(LEDFlashPeriod * DutyRatio))
+		if (LightTimer < (UINT16)(LEDFlashPeriod * DutyRatio))
 		{
 			NetSocDisplay(LED_SOC_0, LED_TURN_ON);
 			NetSocDisplay(LED_SOC_1, LED_TURN_ON);
@@ -483,14 +487,6 @@ void LEDDisplay(void)
 			NetSocDisplay(LED_SOC_3, LED_TURN_ON);
 			FaultDisplay(LED_TURN_ON);
 		}
-		else if (LightTimer >= (UINT8)(LEDFlashPeriod * DutyRatio) && LightTimer < LEDFlashPeriod)
-		{
-			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);
-		}
 		else
 		{
 			NetSocDisplay(LED_SOC_0, LED_TURN_OFF);
@@ -498,20 +494,13 @@ void LEDDisplay(void)
 			NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
 			NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
 			FaultDisplay(LED_TURN_OFF);
-			LightTimer = 0;
 		}
-		return;
 	}
 	else //电池未处于锁定状态
 	{
-		if (currentState != AppDataInfo.BattLock)
-		{
-			currentState = AppDataInfo.BattLock;
-			LightTimer = 0;
-		}
-		else if (UartErrorFlag == 1) //电池未收到UART信息,出现Uart故障
+		if (UartErrorFlag == 1) //电池未收到UART信息,出现Uart故障
 		{
-			if (LightTimer < (UINT8)(LEDFlashPeriod * DutyRatio))
+			if (LightTimer < (UINT16)(LEDFlashPeriod * DutyRatio))
 			{
 				NetSocDisplay(LED_SOC_0, LED_TURN_ON);
 				NetSocDisplay(LED_SOC_1, LED_TURN_OFF);
@@ -519,14 +508,6 @@ void LEDDisplay(void)
 				NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
 				FaultDisplay(LED_TURN_ON);
 			}
-			else if (LightTimer >= (UINT8)(LEDFlashPeriod * DutyRatio) && LightTimer < LEDFlashPeriod)
-			{
-				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);
-			}
 			else
 			{
 				NetSocDisplay(LED_SOC_0, LED_TURN_OFF);
@@ -534,9 +515,7 @@ void LEDDisplay(void)
 				NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
 				NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
 				FaultDisplay(LED_TURN_OFF);
-				LightTimer = 0;
 			}
-			return;
 		}
 		else if (UartRecvFlag == 1) //电池接收到UART信息,且正确运行
 		{
@@ -546,203 +525,172 @@ void LEDDisplay(void)
 				NetSocDisplay(LED_SOC_1, LED_TURN_OFF);
 				NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
 				NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
-				if (ErrorLightTimer < (UINT8)(LEDFlashPeriod * DutyRatio))
+				if (ErrorLightTimer < (UINT16)(LEDFlashPeriod * DutyRatio))
 				{
 
 					FaultDisplay(LED_TURN_ON);
 				}
-				else if (ErrorLightTimer >= (UINT8)(LEDFlashPeriod * DutyRatio) && ErrorLightTimer < LEDFlashPeriod)
-				{
-
-					FaultDisplay(LED_TURN_OFF);
-				}
 				else
 				{
 					FaultDisplay(LED_TURN_OFF);
-					ErrorLightTimer = 0;
 				}
-				return;
-			}
-			else if (getbit(sfmd_st_fltAct, 1) == 1) //通过下线检测,有故障亮红灯
-			{
-				FaultDisplay(LED_TURN_ON);
 			}
 			else
 			{
-				FaultDisplay(LED_TURN_OFF);
-			}
-			if (battWorkState == 0 || battWorkState == 1) //静置或放电状态
-			{
-				if (LedBattSoc <= 10)
-				{
-					if (LightTimer < (UINT8)(LEDFlashPeriod * DutyRatio))
-					{
-						NetSocDisplay(LED_SOC_0, LED_TURN_ON);
-						NetSocDisplay(LED_SOC_1, LED_TURN_OFF);
-						NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
-						NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
-					}
-					else if (LightTimer >= (UINT8)(LEDFlashPeriod * DutyRatio) && LightTimer < LEDFlashPeriod)
-					{
-						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);
-					}
-					else
-					{
-						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);
-						LightTimer = 0;
-					}
-				}
-				else if (LedBattSoc > 10 && LedBattSoc <= 25)
-				{
-					NetSocDisplay(LED_SOC_0, LED_TURN_ON);
-					NetSocDisplay(LED_SOC_1, LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
-					LightTimer = 0;
-				}
-				else if (LedBattSoc > 25 && LedBattSoc <= 50)
-				{
-					NetSocDisplay(LED_SOC_0, LED_TURN_ON);
-					NetSocDisplay(LED_SOC_1, LED_TURN_ON);
-					NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
-					NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
-					LightTimer = 0;
-				}
-				else if (LedBattSoc > 50 && LedBattSoc <= 75)
+				if (getbit(sfmd_st_fltAct, 1) == 1) //通过下线检测,有故障亮红灯
 				{
-					NetSocDisplay(LED_SOC_0, LED_TURN_ON);
-					NetSocDisplay(LED_SOC_1, LED_TURN_ON);
-					NetSocDisplay(LED_SOC_2, LED_TURN_ON);
-					NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
-					LightTimer = 0;
+					FaultDisplay(LED_TURN_ON);
 				}
-				else if (LedBattSoc > 75 && LedBattSoc <= 100)
+				else
 				{
-					NetSocDisplay(LED_SOC_0, LED_TURN_ON);
-					NetSocDisplay(LED_SOC_1, LED_TURN_ON);
-					NetSocDisplay(LED_SOC_2, LED_TURN_ON);
-					NetSocDisplay(LED_SOC_3, LED_TURN_ON);
-					LightTimer = 0;
+					FaultDisplay(LED_TURN_OFF);
 				}
-			}
-			else if (battWorkState == 2)
-			{
-				if (LedBattSoc <= 25)
+				if (battWorkState == 0 || battWorkState == 1) //静置或放电状态
 				{
-					if (LightTimer < (UINT8)(LEDFlashPeriod * DutyRatio))
+					if (LedBattSoc <= 10)
 					{
-						NetSocDisplay(LED_SOC_0, LED_TURN_ON);
-						NetSocDisplay(LED_SOC_1, LED_TURN_OFF);
-						NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
-						NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
-					}
-					else if (LightTimer >= (UINT8)(LEDFlashPeriod * DutyRatio) && LightTimer < LEDFlashPeriod)
-					{
-						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);
+						if (LightTimer < (UINT16)(LEDFlashPeriod * DutyRatio))
+						{
+							NetSocDisplay(LED_SOC_0, LED_TURN_ON);
+							NetSocDisplay(LED_SOC_1, LED_TURN_OFF);
+							NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
+							NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
+						}
+						else
+						{
+							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);
+						}
 					}
-					else
+					else if (LedBattSoc > 10 && LedBattSoc <= 25)
 					{
-						NetSocDisplay(LED_SOC_0, LED_TURN_OFF);
+						NetSocDisplay(LED_SOC_0, LED_TURN_ON);
 						NetSocDisplay(LED_SOC_1, LED_TURN_OFF);
 						NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
 						NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
-						LightTimer = 0;
 					}
-				}
-				else if (LedBattSoc > 25 && LedBattSoc <= 50)
-				{
-					if (LightTimer < (UINT8)(LEDFlashPeriod * DutyRatio))
+					else if (LedBattSoc > 25 && LedBattSoc <= 50)
 					{
 						NetSocDisplay(LED_SOC_0, LED_TURN_ON);
 						NetSocDisplay(LED_SOC_1, LED_TURN_ON);
 						NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
 						NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
 					}
-					else if (LightTimer >= (UINT8)(LEDFlashPeriod * DutyRatio) && LightTimer < LEDFlashPeriod)
-					{
-						NetSocDisplay(LED_SOC_0, LED_TURN_ON);
-						NetSocDisplay(LED_SOC_1, LED_TURN_OFF);
-						NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
-						NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
-					}
-					else
+					else if (LedBattSoc > 50 && LedBattSoc <= 75)
 					{
 						NetSocDisplay(LED_SOC_0, LED_TURN_ON);
-						NetSocDisplay(LED_SOC_1, LED_TURN_OFF);
-						NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
+						NetSocDisplay(LED_SOC_1, LED_TURN_ON);
+						NetSocDisplay(LED_SOC_2, LED_TURN_ON);
 						NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
-						LightTimer = 0;
 					}
-				}
-				else if (LedBattSoc > 50 && LedBattSoc <= 75)
-				{
-					if (LightTimer < (UINT8)(LEDFlashPeriod * DutyRatio))
+					else if (LedBattSoc > 75 && LedBattSoc <= 100)
 					{
 						NetSocDisplay(LED_SOC_0, LED_TURN_ON);
 						NetSocDisplay(LED_SOC_1, LED_TURN_ON);
 						NetSocDisplay(LED_SOC_2, LED_TURN_ON);
-						NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
+						NetSocDisplay(LED_SOC_3, LED_TURN_ON);
 					}
-					else if (LightTimer >= (UINT8)(LEDFlashPeriod * DutyRatio) && LightTimer < LEDFlashPeriod)
+				}
+				else if (battWorkState == 2)
+				{
+					if (LedBattSoc <= 25)
 					{
-						NetSocDisplay(LED_SOC_0, LED_TURN_ON);
-						NetSocDisplay(LED_SOC_1, LED_TURN_ON);
-						NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
-						NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
+						if (LightTimer < (UINT16)(LEDFlashPeriod * DutyRatio))
+						{
+							NetSocDisplay(LED_SOC_0, LED_TURN_ON);
+							NetSocDisplay(LED_SOC_1, LED_TURN_OFF);
+							NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
+							NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
+						}
+						else
+						{
+							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);
+						}
 					}
-					else
+					else if (LedBattSoc > 25 && LedBattSoc <= 50)
 					{
-						NetSocDisplay(LED_SOC_0, LED_TURN_ON);
-						NetSocDisplay(LED_SOC_1, LED_TURN_ON);
-						NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
-						NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
-						LightTimer = 0;
+						if (LightTimer < (UINT16)(LEDFlashPeriod * DutyRatio))
+						{
+							NetSocDisplay(LED_SOC_0, LED_TURN_ON);
+							NetSocDisplay(LED_SOC_1, LED_TURN_ON);
+							NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
+							NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
+						}
+						else
+						{
+							NetSocDisplay(LED_SOC_0, LED_TURN_ON);
+							NetSocDisplay(LED_SOC_1, LED_TURN_OFF);
+							NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
+							NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
+						}
 					}
-				}
-				else if (LedBattSoc > 75 && LedBattSoc <= 97)
-				{
-					if (LightTimer < (UINT8)(LEDFlashPeriod * DutyRatio))
+					else if (LedBattSoc > 50 && LedBattSoc <= 75)
 					{
-						NetSocDisplay(LED_SOC_0, LED_TURN_ON);
-						NetSocDisplay(LED_SOC_1, LED_TURN_ON);
-						NetSocDisplay(LED_SOC_2, LED_TURN_ON);
-						NetSocDisplay(LED_SOC_3, LED_TURN_ON);
+						if (LightTimer < (UINT16)(LEDFlashPeriod * DutyRatio))
+						{
+							NetSocDisplay(LED_SOC_0, LED_TURN_ON);
+							NetSocDisplay(LED_SOC_1, LED_TURN_ON);
+							NetSocDisplay(LED_SOC_2, LED_TURN_ON);
+							NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
+						}
+						else
+						{
+							NetSocDisplay(LED_SOC_0, LED_TURN_ON);
+							NetSocDisplay(LED_SOC_1, LED_TURN_ON);
+							NetSocDisplay(LED_SOC_2, LED_TURN_OFF);
+							NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
+						}
 					}
-					else if (LightTimer >= (UINT8)(LEDFlashPeriod * DutyRatio) && LightTimer < LEDFlashPeriod)
+					else if (LedBattSoc > 75 && LedBattSoc <= 97)
 					{
-						NetSocDisplay(LED_SOC_0, LED_TURN_ON);
-						NetSocDisplay(LED_SOC_1, LED_TURN_ON);
-						NetSocDisplay(LED_SOC_2, LED_TURN_ON);
-						NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
+						if (LightTimer < (UINT16)(LEDFlashPeriod * DutyRatio))
+						{
+							NetSocDisplay(LED_SOC_0, LED_TURN_ON);
+							NetSocDisplay(LED_SOC_1, LED_TURN_ON);
+							NetSocDisplay(LED_SOC_2, LED_TURN_ON);
+							NetSocDisplay(LED_SOC_3, LED_TURN_ON);
+						}
+						else
+						{
+							NetSocDisplay(LED_SOC_0, LED_TURN_ON);
+							NetSocDisplay(LED_SOC_1, LED_TURN_ON);
+							NetSocDisplay(LED_SOC_2, LED_TURN_ON);
+							NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
+						}
 					}
-					else
+					else if (LedBattSoc > 97 && LedBattSoc <= 100)
 					{
 						NetSocDisplay(LED_SOC_0, LED_TURN_ON);
 						NetSocDisplay(LED_SOC_1, LED_TURN_ON);
 						NetSocDisplay(LED_SOC_2, LED_TURN_ON);
-						NetSocDisplay(LED_SOC_3, LED_TURN_OFF);
-						LightTimer = 0;
+						NetSocDisplay(LED_SOC_3, LED_TURN_ON);
 					}
 				}
-				else if (LedBattSoc > 97 && LedBattSoc <= 100)
-				{
-					NetSocDisplay(LED_SOC_0, LED_TURN_ON);
-					NetSocDisplay(LED_SOC_1, LED_TURN_ON);
-					NetSocDisplay(LED_SOC_2, LED_TURN_ON);
-					NetSocDisplay(LED_SOC_3, LED_TURN_ON);
-				}
 			}
 		}
 	}
+	if (LightTimer > LEDFlashPeriod)
+	{
+		LightTimer = 0;
+	}
+	else
+	{
+		LightTimer = LightTimer + 100;
+	}
+	if (ErrorLightTimer > LEDFlashPeriod)
+	{
+		ErrorLightTimer = 0;
+	}
+	else
+	{
+		ErrorLightTimer = ErrorLightTimer + 100;
+	}
+	return;
 }
 /**
  * @brief : 串口数据解码函数
@@ -2455,7 +2403,7 @@ void UDS_Service(CAN_Msg_Type *CanRxMsg)
 							UDSNegtiveAnswer(0x06, i, UDSSubServiceActionCode[i] << 8 | 0xFF); //重点测试
 						}
 					}
-					else if (UDSSubService[i] == 0x10) //control the heater 31 10 00/01/02
+					else if (UDSSubService[i] == 0x11) //control the heater 31 10 00/01/02
 					{
 						if (UDSSubServiceActionCode[i] <= 0x02) //case 00/01/02
 						{
@@ -2467,7 +2415,7 @@ void UDS_Service(CAN_Msg_Type *CanRxMsg)
 							UDSNegtiveAnswer(0x05, i, UDSSubServiceActionCode[i]);
 						}
 					}
-					else if (UDSSubService[i] == 0x11) //control the main relay  31 11 00/01/02
+					else if (UDSSubService[i] == 0x10) //control the main relay  31 11 00/01/02
 					{
 						if (UDSSubServiceActionCode[i] <= 0x02) //case 00/01/02
 						{

+ 7 - 8
src/AppTaskControl.c

@@ -44,14 +44,13 @@ static void ControlTask(void *arg)
             osDelay(100);
             if (CurrentTime != TimeCounter)
             {
+                UINT16 Buzzerperiod = 400;
                 LEDDisplay();
-                UINT8 Buzzerperiod = 5; //500ms
-
                 if (AppDataInfo.BattLock == FALSE && getbit(UartCmdRecvFlag, 0) == 1)
                 {
-                    relayControlFunc(Buzzerperiod, 0.6);
+                    relayControlFunc(Buzzerperiod, 0.5);
                     RingTimes = RingTimes + 100;
-                    if (RingTimes >= 3 * Buzzerperiod * 100)
+                    if (RingTimes >= 3 * Buzzerperiod)
                     {
                         RingTimes = 0;
                         clrbit(UartCmdRecvFlag, 0);
@@ -59,9 +58,9 @@ static void ControlTask(void *arg)
                 }
                 else if (AppDataInfo.BattLock == TRUE && getbit(UartCmdRecvFlag, 0) == 1)
                 {
-                    relayControlFunc(Buzzerperiod, 0.4);
+                    relayControlFunc(Buzzerperiod, 0.5);
                     RingTimes = RingTimes + 100;
-                    if (RingTimes >= 2 * Buzzerperiod * 100)
+                    if (RingTimes >= 2 * Buzzerperiod)
                     {
                         RingTimes = 0;
                         clrbit(UartCmdRecvFlag, 0);
@@ -69,9 +68,9 @@ static void ControlTask(void *arg)
                 }
                 else if (BuzzerControl == TRUE || getbit(sfmd_st_fltAct, 2) == 1 || UDSSwitch == 1)
                 {
-                    relayControlFunc(Buzzerperiod, 0.4);
+                    relayControlFunc(Buzzerperiod, 0.5);
                 }
-                else if (TimeCounter % 50 == 0)
+                else if (TimeCounter % 10 == 0)
                 {
                     relayControl(FALSE);
                 }

+ 2 - 3
src/AppTaskMain.c

@@ -3,7 +3,7 @@
  * @Date         : 2021-10-14 09:27:15
  * @Version      : V3.0
  * @LastEditors  : ChenJie
- * @LastEditTime : 2021-10-27 11:25:47
+ * @LastEditTime : 2021-10-29 10:23:07
  * @Description  : 主要负责:1.工作模式转换2.定时器定时3.定时保存运行数据4.异常状态重启
  * @FilePath     : \PLAT\project\ec616_0h00\apps\qx_app\src\AppTaskMain.c
  */
@@ -105,8 +105,7 @@ static void MainTask(void *arg)
                 PROC_MAIN_STATE_SWITCH(PROCESS_STATE_LISTEN);
                 break;
             }
-            //if ((BMS_Fota_update_flag != FALSE) || (TCPWorkState != 0x00) || (BattWorkStateDelay != BATT_IDLE_SYM) || (battWorkState != BATT_IDLE_SYM) || (PadInterrupt != 0x00))
-            if (1)
+            if ((BMS_Fota_update_flag != FALSE) || (TCPWorkState != 0x00) || (BattWorkStateDelay != BATT_IDLE_SYM) || (battWorkState != BATT_IDLE_SYM) || (PadInterrupt != 0x00))
             {
                 xTimerReset(work_timer, 0);
             }

+ 1 - 2
src/AppTaskTcp.c

@@ -278,7 +278,6 @@ static void TcpDataInfoAssembleSend()
             clrbit(PadInterrupt, 4);
         }
     }
-    BattSendFreq = 1;
     DebugFeq = BattSendFreq;
     if (send_counter % BattSendFreq == 0 && send_counter != 0)
     {
@@ -570,7 +569,7 @@ static void TcpDataInfoAssembleSend()
         UINT16 BufferLen = 0;
         UINT8 rbuf[1000];
         static UINT8 Debugcounter = 0;
-        if (Debugcounter % 2 == 0)
+        if (Debugcounter % 5 == 0)
         {
             sprintf((char *)rbuf, "A-%x,%d,%d,%x,%x,%x,,%d,%d",
                     battProtectState, AppDataInfo.RelayControl, chargerConnectState, PowerVoltage, BMSupdatestatus, PadInterrupt,

+ 3 - 3
src/AppTaskUart.c

@@ -2,9 +2,9 @@
  * @Author       : ChenJie
  * @Date         : 2021-10-14 09:27:15
  * @LastEditors  : ChenJie
- * @LastEditTime : 2021-10-27 11:03:53
+ * @LastEditTime : 2021-10-29 10:25:03
  * @Description  : file content
- * @FilePath     : \PLAT\project\ec616_0h00\apps\qx_app\src\AppTaskUart.c
+ * @FilePath     : \undefinedc:\Work_Files\Files\4830\SDK\PLAT\project\ec616_0h00\apps\qx_app\src\AppTaskUart.c
  */
 
 #include "AppTaskUart.h"
@@ -292,7 +292,7 @@ void Uart_Cmd_Control(QueueHandle_t UartWriteCmdHandle, UartBuffer UartAnswerDat
 	RelayControlState = getbit((UartAnswerData.data[(0x09 + AppDataInfo.BattCellCount + AppDataInfo.BattTempCount + BMS_OTHER_TEMP) * 2 + 1]), 0);	  //继电器状态,1-继电器断开,0-继电器吸合
 	//控制集中处理
 	UINT8 BcuFltAct = 0;
-	BcuFltAct = sfmd_st_fltAct;
+	BcuFltAct = sfmd_st_fltAct & 0X00; //暂时屏蔽故障动作
 	//控制充电禁止
 	if (getbit(BcuFltAct, 6) == 0)
 	{

+ 106 - 105
src/EmbeddedCoder_src/BCU.c

@@ -19,123 +19,124 @@ void BCU(void)
     {
         switch (gProcess_Bcu_Task)
         {
-            //=========================初始化===============================
-            case PROCESS_STATE_INIT:
-            {
-                BCU_Init();
-                memcpy(blcv_Q_totalCpEi, BcuDataInfo.blcv_Q_totalCpE, sizeof(blcv_Q_totalCpEi));
-                memcpy(blcv_Q_reqCpEi, BcuDataInfo.blcv_Q_reqCpE, sizeof(blcv_Q_reqCpEi));
-                socd_pct_bcuSocEi = BcuDataInfo.socd_pct_bcuSocE;
-                socd_pct_battSocEi = BcuDataInfo.socd_pct_battSocE;
-                sohd_tm_chrgStartStatEi = BcuDataInfo.sohd_tm_chrgStartStatE;
-                sohd_flg_chrgEndEi = BcuDataInfo.sohd_flg_chrgEndE;
-                memcpy(sohv_V_chrgStartStatEi, BcuDataInfo.sohv_V_chrgStartStatE, sizeof(sohv_V_chrgStartStatEi));
-                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));
-                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;
-                ihd_st_EOLState = AppNVMData.EOLState;
-                
-                PROC_BCU_STATE_SWITCH(PROCESS_STATE_WORK);
-                break;
-            }
-            //============================工作模式==========================
-            case PROCESS_STATE_WORK:
+        //=========================初始化===============================
+        case PROCESS_STATE_INIT:
+        {
+            BCU_Init();
+            memcpy(blcv_Q_totalCpEi, BcuDataInfo.blcv_Q_totalCpE, sizeof(blcv_Q_totalCpEi));
+            memcpy(blcv_Q_reqCpEi, BcuDataInfo.blcv_Q_reqCpE, sizeof(blcv_Q_reqCpEi));
+            socd_pct_bcuSocEi = BcuDataInfo.socd_pct_bcuSocE;
+            socd_pct_battSocEi = BcuDataInfo.socd_pct_battSocE;
+            sohd_tm_chrgStartStatEi = BcuDataInfo.sohd_tm_chrgStartStatE;
+            sohd_flg_chrgEndEi = BcuDataInfo.sohd_flg_chrgEndE;
+            memcpy(sohv_V_chrgStartStatEi, BcuDataInfo.sohv_V_chrgStartStatE, sizeof(sohv_V_chrgStartStatEi));
+            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));
+            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;
+            ihd_st_EOLState = AppNVMData.EOLState;
+
+            PROC_BCU_STATE_SWITCH(PROCESS_STATE_WORK);
+            break;
+        }
+        //============================工作模式==========================
+        case PROCESS_STATE_WORK:
+        {
+            while (TRUE)
             {
-                while (TRUE)
+                if (TimeCounter % 10 == 0)
                 {
-                    if (TimeCounter%10==0)
+                    if (gProcess_app == LISTEN)
                     {
-                        if (gProcess_app == LISTEN)
-                        {
-                            PROC_BCU_STATE_SWITCH(PROCESS_STATE_SLEEP);
-                            break;
-                        }
-                        //数据获取
-                        if (BattWorkStateDelay == 0 && battI == 10000)
-                        {
-                            memcpy(appv_V_cellU, battCellU, sizeof(appv_V_cellU));
-                        }
-                        ihd_I_curr = (int16_T)(-(battI - 10000));
-                        memcpy(ihv_V_cellU, battCellU, sizeof(battCellU));
-                        for (i = 0; i < cmnc_num_modTNum; i++)
-                        {
-                            ihv_T_modT[i] = battCellTemp[i];
-                        }
-                        ihd_T_mosT = MOSTemp;
-                        ihd_T_DCPlugT = fastChargeTemp;
-                        ihd_T_ACPlugT = normalChargeTemp;
-                        ihd_T_heatPanT1 = heatTemp1;
-                        ihd_T_heatPanT2 = heatTemp2;
-                        ihd_pct_soc = battSOC * 10;
-                        ihd_pct_soh = battSOH * 10;
-                        ihd_flg_HVILFlt = Lockstatus;
-                        ihd_st_workStat = BattWorkStateDelay;
-                        ihd_flg_urtRecFlt = UartErrorFlag;
-                        ihd_st_chrgConnect = chargerConnectState;
-                        ihd_flg_cellULowFlt = ((battWarningState)&0x01) == 1;
-                        ihd_flg_battULowFlt = ((battWarningState >> 1) & 0x01) == 1;
-                        ihd_flg_cellUOverFlt = ((battWarningState >> 2) & 0x01) == 1;
-                        ihd_flg_battUOverFlt = ((battWarningState >> 3) & 0x01) == 1;
-                        ihd_flg_disChrgCurrOverFlt = ((battWarningState >> 4) & 0x01) == 1;
-                        ihd_flg_chrgCurrOverFlt = ((battWarningState >> 5) & 0x01) == 1;
-                        ihd_flg_disChrgModTOverFlt = ((battWarningState >> 6) & 0x01) == 1;
-                        ihd_flg_chrgModTOverFlt = ((battWarningState >> 7) & 0x01) == 1;
-                        ihd_flg_chrgMosTOverFlt = ((battWarningState >> 11) & 0x01) == 1;
-                        ihd_flg_disChrgMosClosFlt = ((battWarningState >> 18) & 0x01) == 1;
-                        ihd_flg_chrgMosClosFlt = ((battWarningState >> 19) & 0x01) == 1;
-                        ihd_flg_disChrgModTLowFlt = ((battWarningState >> 22) & 0x01) == 1;
-                        ihd_flg_chrgModTLowFlt = ((battWarningState >> 23) & 0x01) == 1;
-                        ihd_flg_currOpenFlt = 0;
-                        ihd_st_chrgMosControl    = ChargeForbiddenControl == 0;
-                        ihd_st_disChrgMosControl = DisChargeForbiddenControl  == 0;
-                        ihd_st_relayControl      = RelayForbiddenControl  == 0;
-                        ihd_flg_DTCClear = ihd_flg_disChrgMosClosFlt;
-                        
-                        //调用算法
-                        SFM();
-                        TMS();
-                        CM();
-                        SPM();
-                        //实时存储
-                        if (socd_flg_EEsave == 1 || ihd_flg_DTCClear)
-                        {
-                            BCUEEDataSave();
-                            ihd_flg_DTCClear = false;
-                        }
+                        PROC_BCU_STATE_SWITCH(PROCESS_STATE_SLEEP);
+                        break;
                     }
-                    osDelay(100);
-                }
-                break;
-            }
-            //======================休眠模式===============================
-            case PROCESS_STATE_SLEEP:
-            {
-                BCUEEDataSave();
-                ihd_tm_parkTime = 0;
-                while (TRUE)
-                {
-                    if (TimeCounter%10==0)
+                    //数据获取
+                    if (BattWorkStateDelay == 0 && battI == 10000)
                     {
-                        ihd_tm_parkTime++;
+                        memcpy(appv_V_cellU, battCellU, sizeof(appv_V_cellU));
                     }
-                    if (gProcess_app == WORK)
+                    ihd_I_curr = (int16_T)(-(battI - 10000));
+                    memcpy(ihv_V_cellU, battCellU, sizeof(battCellU));
+                    for (i = 0; i < cmnc_num_modTNum; i++)
                     {
-                        PROC_BCU_STATE_SWITCH(PROCESS_STATE_INIT);
-                        break;
+                        ihv_T_modT[i] = battCellTemp[i];
+                    }
+                    ihd_T_mosT = MOSTemp;
+                    ihd_T_DCPlugT = fastChargeTemp;
+                    ihd_T_ACPlugT = normalChargeTemp;
+                    ihd_T_heatPanT1 = heatTemp1;
+                    ihd_T_heatPanT2 = heatTemp2;
+                    ihd_pct_soc = battSOC * 10;
+                    ihd_pct_soh = battSOH * 10;
+                    ihd_flg_HVILFlt = Lockstatus;
+                    ihd_st_workStat = BattWorkStateDelay;
+                    ihd_flg_urtRecFlt = UartErrorFlag;
+                    ihd_st_chrgConnect = chargerConnectState;
+                    ihd_flg_cellULowFlt = ((battWarningState)&0x01) == 1;
+                    ihd_flg_battULowFlt = ((battWarningState >> 1) & 0x01) == 1;
+                    ihd_flg_cellUOverFlt = ((battWarningState >> 2) & 0x01) == 1;
+                    ihd_flg_battUOverFlt = ((battWarningState >> 3) & 0x01) == 1;
+                    ihd_flg_disChrgCurrOverFlt = ((battWarningState >> 4) & 0x01) == 1;
+                    ihd_flg_chrgCurrOverFlt = ((battWarningState >> 5) & 0x01) == 1;
+                    ihd_flg_disChrgModTOverFlt = ((battWarningState >> 6) & 0x01) == 1;
+                    ihd_flg_chrgModTOverFlt = ((battWarningState >> 7) & 0x01) == 1;
+                    ihd_flg_chrgMosTOverFlt = ((battWarningState >> 11) & 0x01) == 1;
+                    ihd_flg_disChrgMosClosFlt = ((battWarningState >> 18) & 0x01) == 1;
+                    ihd_flg_chrgMosClosFlt = ((battWarningState >> 19) & 0x01) == 1;
+                    ihd_flg_disChrgModTLowFlt = ((battWarningState >> 22) & 0x01) == 1;
+                    ihd_flg_chrgModTLowFlt = ((battWarningState >> 23) & 0x01) == 1;
+                    ihd_flg_currOpenFlt = 0;
+                    ihd_st_heatForceControl = HeatForceControl;
+                    ihd_st_chrgMosControl = ChargeForbiddenControl == 0;
+                    ihd_st_disChrgMosControl = DisChargeForbiddenControl == 0;
+                    ihd_st_relayControl = RelayForbiddenControl == 0;
+                    ihd_flg_DTCClear = ihd_flg_disChrgMosClosFlt;
+
+                    //调用算法
+                    SFM();
+                    TMS();
+                    CM();
+                    SPM();
+                    //实时存储
+                    if (socd_flg_EEsave == 1 || ihd_flg_DTCClear)
+                    {
+                        BCUEEDataSave();
+                        ihd_flg_DTCClear = false;
                     }
-                    osDelay(100);
                 }
-                break;
+                osDelay(100);
             }
-            default:
+            break;
+        }
+        //======================休眠模式===============================
+        case PROCESS_STATE_SLEEP:
+        {
+            BCUEEDataSave();
+            ihd_tm_parkTime = 0;
+            while (TRUE)
             {
-                PROC_BCU_STATE_SWITCH(PROCESS_STATE_INIT);
-                break;
+                if (TimeCounter % 10 == 0)
+                {
+                    ihd_tm_parkTime++;
+                }
+                if (gProcess_app == WORK)
+                {
+                    PROC_BCU_STATE_SWITCH(PROCESS_STATE_INIT);
+                    break;
+                }
+                osDelay(100);
             }
+            break;
+        }
+        default:
+        {
+            PROC_BCU_STATE_SWITCH(PROCESS_STATE_INIT);
+            break;
+        }
         }
     }
 }

File diff suppressed because it is too large
+ 796 - 464
src/EmbeddedCoder_src/SFM.c


+ 25 - 22
src/EmbeddedCoder_src/SOC.c

@@ -124,7 +124,7 @@ void SOC(void)
             socn_pct_bcuSocEE = socd_pct_bcuSocEi;
         }
         //
-        if (ihd_tm_parkTime > cmnc_tm_parkTime && 0)
+        if (ihd_tm_parkTime > cmnc_tm_parkTime)
         {
             socn_pct_battSocEE = look1_iu16lu16n16tu16_binlcase(sfmd_V_cellUAvrg, (&(cmnm_V_ocv[0])), (&(cmnm_pct_soc[0])), 12U);
         }
@@ -199,9 +199,9 @@ void SOC(void)
     P_Min_Delay[3] = -K[1] * H[0] * P1[2] + P1[3] * (1 - K[1]);
 
     //输出
-    EKFSOCMin = (uint16_T) (soc_Min_Delay * 10);
-    socn_flg_ekfInvalidMin= (deltU > 0.01)||(deltU < -0.01);
-	//printf("2----socmin:%f,Up:%f,U1:%d,sfmd_V_cellUMin:%d,deltU:%f,flg:%d,soc1:%f,K[0]:%f,K[1]:%f\n",soc_Min_Delay,Up_Min_Delay,ihv_V_cellU[0],sfmd_V_cellUMin,deltU,socn_flg_ekfInvalidMin,soc1,K[0],K[1]);
+    EKFSOCMin = (uint16_T)(soc_Min_Delay * 10);
+    socn_flg_ekfInvalidMin = (deltU > 0.01) || (deltU < -0.01);
+    //printf("2----socmin:%f,Up:%f,U1:%d,sfmd_V_cellUMin:%d,deltU:%f,flg:%d,soc1:%f,K[0]:%f,K[1]:%f\n",soc_Min_Delay,Up_Min_Delay,ihv_V_cellU[0],sfmd_V_cellUMin,deltU,socn_flg_ekfInvalidMin,soc1,K[0],K[1]);
     //------------------------EKFSOCmax-----------------------------------
     if (FirstRun_SOC)
     {
@@ -378,7 +378,7 @@ void SOC(void)
         {
             fulCntl = 0;
         }
-        if((fulCntl > 2) || fulFlg)
+        if ((fulCntl > 2) || fulFlg)
         {
             fulFlg = 1;
         }
@@ -489,9 +489,8 @@ void SOC(void)
         statCntl = 0;
     }
     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)(socn_pct_utrackSoc -socn_pct_utrackSoc_Delay) > 20 || (int16_T)(socn_pct_utrackSoc -socn_pct_utrackSoc_Delay) <- 20 ) || statFlg);
+
+    Flg = (FirstRun_SOC || (ihd_st_chrgSta_Delay == 2 && ihd_st_workStat != 2) || (ihd_st_chrgSta_Delay != 2 && ihd_st_workStat == 2) || ((int16_T)(socn_pct_utrackSoc - socn_pct_utrackSoc_Delay) > 20 || (int16_T)(socn_pct_utrackSoc - socn_pct_utrackSoc_Delay) < -20) || statFlg);
 
     ihd_st_chrgSta_Delay = ihd_st_workStat;
     socn_pct_utrackSoc_Delay = socn_pct_utrackSoc;
@@ -580,13 +579,17 @@ void SOC(void)
 
 //-------------------------------------------------------------------------
 real_T docvmath(real_T soc)
-{   
+{
     real_T docv;
     docv = ((((((-1.0936E-13 * pow(soc, 7.0) +
-    3.9249E-11 * pow(soc, 6.0)) + -5.5776E-9 * pow(soc, 5.0)) +
-    3.996E-7 * pow(soc, 4.0)) + -1.5332E-5 * pow(soc, 3.0)) + soc
-    * soc * 0.0003192) + -0.00371 * soc) + 0.02732;
-	return docv;
+                 3.9249E-11 * pow(soc, 6.0)) +
+                -5.5776E-9 * pow(soc, 5.0)) +
+               3.996E-7 * pow(soc, 4.0)) +
+              -1.5332E-5 * pow(soc, 3.0)) +
+             soc * soc * 0.0003192) +
+            -0.00371 * soc) +
+           0.02732;
+    return docv;
 }
 ////
 uint16_T SOC_LookUp(uint16_T battsoc, uint16_T x[3], uint16_T y[3])
@@ -596,27 +599,27 @@ uint16_T SOC_LookUp(uint16_T battsoc, uint16_T x[3], uint16_T y[3])
     {
         bcusoc = y[0];
     }
-	//
+    //
     if (battsoc >= x[2])
     {
         bcusoc = y[2];
     }
-	//
-    if (battsoc > x[0] && battsoc < x[1])   //(x-x0)*(y1-y0)/(x1-x0)+y0
+    //
+    if (battsoc > x[0] && battsoc < x[1]) //(x-x0)*(y1-y0)/(x1-x0)+y0
     {
 
-	   bcusoc =   (uint16_T) ((real_T)((battsoc - x[0]) * 0.1) * (real_T)((y[1] - y[0]) * 0.1) /(real_T)((x[1] - x[0]) * 0.1) * 10)+ y[0];
-	}
-	//
+        bcusoc = (uint16_T)((real_T)((battsoc - x[0]) * 0.1) * (real_T)((y[1] - y[0]) * 0.1) / (real_T)((x[1] - x[0]) * 0.1) * 10) + y[0];
+    }
+    //
     if (battsoc >= x[1] && battsoc < x[2]) //(x-x1)*(y2-y1)/(x2-x1)+y1
     {
-       bcusoc =   (uint16_T) ((real_T)((battsoc - x[1]) * 0.1) * (real_T)((y[2] - y[1]) * 0.1) /(real_T)((x[2] - x[1]) * 0.1) * 10)+ y[1];
+        bcusoc = (uint16_T)((real_T)((battsoc - x[1]) * 0.1) * (real_T)((y[2] - y[1]) * 0.1) / (real_T)((x[2] - x[1]) * 0.1) * 10) + y[1];
     }
-	return bcusoc;
+    return bcusoc;
 }
 //-------------------------------------------------------------------------
 
-uint16_T SOCfitSystem(uint16_T SOC,uint16_T *SOCfit, uint16_T m)
+uint16_T SOCfitSystem(uint16_T SOC, uint16_T *SOCfit, uint16_T m)
 {
     int16_T socdelt;
     socdelt = (int16_T)(SOC - *SOCfit);

Some files were not shown because too many files changed in this diff