Ver código fonte

【V2.3.0.43】 均衡失效故障过滤,取消自主计算的SOC策略

CHENJIE-PC\QiXiang_CHENJIE 3 anos atrás
pai
commit
7d32abf887
5 arquivos alterados com 14 adições e 9 exclusões
  1. 1 2
      inc/Signal.h
  2. 1 1
      inc/app.h
  3. 1 1
      src/Signal.c
  4. 2 2
      src/TcpTask.c
  5. 9 3
      src/UartTask.c

+ 1 - 2
inc/Signal.h

@@ -55,8 +55,8 @@ extern UINT16   ErrorNum[5];//故障代码
 extern UINT8 	TcpSendLen;
 
 extern osMutexId_t Error_Mutex;
+extern INT16  Data_Current ;
 
-#define SOC_TEST
 #ifdef SOC_TEST
 extern UINT8 SOC1;
 extern UINT8 SOC2;
@@ -76,5 +76,4 @@ extern UINT16 Data_40 ;
 extern UINT16 Data_41 ;
 extern UINT16 Data_42 ;
 extern UINT16 Data_43 ;
-extern INT16  Data_Current ;
 #endif

+ 1 - 1
inc/app.h

@@ -51,7 +51,7 @@ extern "C" {
 #define	BLSWVERSION		0x01020000    //BootLoader版本号V1.2.0.0
 #define	DRVSWVERSION		0x01050000     //驱动层版本号V1.4.0.0  驱动层1.5.0.0,增加了三轴
 //#define	APPSWVERSION		0x01020209     
-#define	APPSWVERSION		0x0203002A
+#define	APPSWVERSION		0x0203002B
 //#define	APPSWVERSION		0x0201000E
 //--------------------------------------------------------------------------------
 

+ 1 - 1
src/Signal.c

@@ -84,6 +84,7 @@ UINT8 	TcpSendLen = 0;
 UINT16 ErrorNum[5]={0};
 
 osMutexId_t Error_Mutex = NULL;
+INT16  Data_Current = 0;
 
 #ifdef SOC_TEST
 UINT8 SOC1 = 100;
@@ -104,5 +105,4 @@ UINT16 Data_40 = 0;
 UINT16 Data_41 = 0;
 UINT16 Data_42 = 0;
 UINT16 Data_43 = 0;
-INT16  Data_Current = 0;
 #endif

+ 2 - 2
src/TcpTask.c

@@ -585,8 +585,8 @@ static void TcpDataInfoAssembleSend()
         UINT8 *SendBuffer = NULL;
         UINT8 BufferLen = 0;
         UINT8 rbuf[100];
-        sprintf((char *)rbuf,"%d,%x,%x,%d,%d,%d,%d,%d,,%d,%d,%d,%d,%d,%d,%d",
-        Data_Current,BattRemainCap,battProtectState,SOC2,SOC1,battSOC,AppDataInfo.RelayControl,chargerConnectState,
+        sprintf((char *)rbuf,"%d,%x,%x,%d,%d,,%d,%d,%d,%d,%d,%d,%d",
+        Data_Current,BattRemainCap,battProtectState,AppDataInfo.RelayControl,chargerConnectState,
         AppDataInfo.rentaltype,AppDataInfo.ExpiryTimeArray[0],AppDataInfo.ExpiryTimeArray[1],AppDataInfo.ExpiryTimeArray[2],AppDataInfo.ExpiryTimeArray[3],AppDataInfo.ExpiryTimeArray[4],AppDataInfo.ExpiryTimeArray[5]);
         BufferLen  = strlen(rbuf);
         SendBuffer = malloc(BufferLen+sizeof(DebugMsgInfo));

+ 9 - 3
src/UartTask.c

@@ -375,7 +375,7 @@ static BOOL uartBattInfoDecode(UINT8* dataPtr)
     }
     MOSTemp = dataPtr[(0x06+BATT_CELL_VOL_NUM+BATT_TEMP_NUM)*2+1];
    	packTemp = dataPtr[(0x06+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+1)*2+1];
-    
+    Data_Current = (dataPtr[(0x02+BATT_CELL_VOL_NUM)*2]<<8)|(dataPtr[(0x02+BATT_CELL_VOL_NUM)*2+1]);
     Batt_current = (dataPtr[(0x02+BATT_CELL_VOL_NUM)*2]<<8)|(dataPtr[(0x02+BATT_CELL_VOL_NUM)*2+1]);
     //原始数据:充电为负,放电为正
 	if(battWorkState == 0x02) //充电过程
@@ -445,7 +445,6 @@ static BOOL uartBattInfoDecode(UINT8* dataPtr)
 
 	//SOC问题紧急修复
 	#ifdef SOC_TEST
-	Data_Current = (dataPtr[(0x02+BATT_CELL_VOL_NUM)*2]<<8)|(dataPtr[(0x02+BATT_CELL_VOL_NUM)*2+1]);
 	static UINT8 Soc_change_flag = 0;//0-BMS原始值,1-计算值
 	if((battI>10200U)||(battWorkState==2))//放电电流超过20A,使用上一时刻值,//如果有充电,使用计算值,最大不超过100
 	{
@@ -3149,7 +3148,14 @@ UINT8 BmsErrorDecode(UINT32 battWarningState)
 			ret = ((battWarningState >> 20) & 0x01) == 1;
 			if (ret)
 			{
-				ErrorNumTemp = 22;
+				if(battSOC>95)
+				{
+					ErrorNumTemp = 22;
+				}
+				else
+				{
+					ErrorNumTemp = 0;
+				}
 				PutErrorNum((UINT16 *)ErrorNum,sizeof(ErrorNum),ErrorNumTemp);
 				//str += "ERROR:存在电芯不均衡告警!!\n";
 			}