Browse Source

【V2.3.0.42】 新增过低电压增加睡眠时间,取消SOC_TEST测试,不允许充电采用最高电压判定

CHENJIE-PC\QiXiang_CHENJIE 3 years ago
parent
commit
6d6f34dae4
4 changed files with 15 additions and 5 deletions
  1. 1 1
      inc/app.h
  2. 10 0
      src/MainTask.c
  3. 2 2
      src/Signal.c
  4. 2 2
      src/UartTask.c

+ 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		0x02030029
+#define	APPSWVERSION		0x0203002A
 //#define	APPSWVERSION		0x0201000E
 //--------------------------------------------------------------------------------
 

+ 10 - 0
src/MainTask.c

@@ -285,6 +285,16 @@ static void MainTask(void* arg)
             case PROCESS_STATE_SLEEP:
             {
                 Sleep_flag = true;
+                if((minCellVol<2800 && minCellVol>0)||(maxCellVol<3000 && maxCellVol>0))
+                {
+                    AppNVMData.appDataModify = TRUE;
+                    AppNVMData.sleepTime = 60;
+                }
+                else if((minCellVol>4000&&minCellVol<6000) && AppNVMData.sleepTime==60)
+                {
+                    AppNVMData.appDataModify = TRUE;
+                    AppNVMData.sleepTime = 10;
+                }
                 if(AppNVMData.appDataModify)
                 {
                     appSaveNVMData();

+ 2 - 2
src/Signal.c

@@ -62,8 +62,8 @@ UINT8   HeatForceControl = 0x00;
 UINT8   AvgBattTemp = 0x00;
 //declear the UINT16 vars
 UINT16	battCellU[28] = {0xFFFF};
-UINT16	minCellVol = 0xFFFF;
-UINT16	maxCellVol = 0xFFFF;
+UINT16	minCellVol = 0;
+UINT16	maxCellVol = 0;
 UINT16	battPackVol = 0xFFFF;
 UINT16	battI = 0xFFFF;
 UINT16	nbHwVersion = 0xFFFF;

+ 2 - 2
src/UartTask.c

@@ -192,7 +192,7 @@ static void UartTask(void* arg)
 					}
 				}
 				//限制充电测试
-				if((battSOC>=95)&&(BattWorkStateDelay ==0x02)&&(((UartReadMsg.data[(0x1B+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+BATT_OTHER_TEMP_NUM)*2+1])&0x02)!=0x00)&&(UartBattInfoRecvFlag==TRUE))//try to lock lock the charge 
+				if((maxCellVol>4170&&maxCellVol<6000)&&(BattWorkStateDelay ==0x02)&&(((UartReadMsg.data[(0x1B+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+BATT_OTHER_TEMP_NUM)*2+1])&0x02)!=0x00)&&(UartBattInfoRecvFlag==TRUE))//try to lock lock the charge 
 				{
 					#ifdef USING_PRINTF
                         printf("[%d]try to lock charge \n",__LINE__);
@@ -202,7 +202,7 @@ static void UartTask(void* arg)
 					UartWriteData.Data[1] = 0x00|((UartReadMsg.data[(0x1B+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+BATT_OTHER_TEMP_NUM)*2+1])&0x01);
 					osMessageQueuePut(UartWriteCmdHandle,&UartWriteData,0,0);
 				}
-				else if((battSOC<=90)&&(((UartReadMsg.data[(0x1B+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+BATT_OTHER_TEMP_NUM)*2+1])&0x02)!=0x02)&&(UartBattInfoRecvFlag==TRUE))//try to unlock lock the charge 
+				else if((maxCellVol<4100&&maxCellVol>0)&&(((UartReadMsg.data[(0x1B+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+BATT_OTHER_TEMP_NUM)*2+1])&0x02)!=0x02)&&(UartBattInfoRecvFlag==TRUE))//try to unlock lock the charge 
 				{
 					#ifdef USING_PRINTF
                         printf("[%d]try to unlock charge \n",__LINE__);