Sfoglia il codice sorgente

新增了加热策略,修改了加热bug

CHENJIE-PC\QiXiang_CHENJIE 3 anni fa
parent
commit
fc7bc9d43d
1 ha cambiato i file con 18 aggiunte e 12 eliminazioni
  1. 18 12
      src/UartTask.c

+ 18 - 12
src/UartTask.c

@@ -113,6 +113,7 @@ static void UartTask(void* arg)
 	}
     //上电起始控制区域
 	UINT8 ret = 0x00;
+	UINT8 HeatSwitch = 0;
     while (1)
     {
         switch (gProcess_Uart_Task)
@@ -153,14 +154,11 @@ static void UartTask(void* arg)
 					{
 						PROC_UART_STATE_SWITCH(PROCESS_UART_STATE_READ);
 					}
-					#ifdef USING_PRINTF
-                        printf("[%d]PinValue:%X,RelayControl:%x,Relaystate:%x\n",__LINE__,slpManGetWakeupPinValue()&(0x01<<2),(UartReadMsg.data[(0x1B+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+BATT_OTHER_TEMP_NUM)*2])&0x80,(UartReadMsg.data[(0x09+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+BATT_OTHER_TEMP_NUM)*2]+1)&0x80);
-                    #endif
-					if((slpManGetWakeupPinValue()&(0x01<<2))==0)//继电器测试
+					if(maxCellVol>4000&&maxCellVol<6000)//继电器测试
 					{
 						AppDataInfo.RelayControl=TRUE;
 					}
-					else
+					else if(maxCellVol<3800)
 					{
 						AppDataInfo.RelayControl=FALSE;
 					} 
@@ -197,7 +195,6 @@ static void UartTask(void* arg)
 						PROC_UART_STATE_SWITCH(PROCESS_UART_STATE_UPDATE);
 						break;
 					}
-					
 				}
 				if(battWorkState ==0x00 && AppNVMData.isBattLocked==TRUE && ((UartReadMsg.data[(0x1B+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+BATT_OTHER_TEMP_NUM)*2+1])&0x03)!=0x00 && Timer_count%10==0)//try to lock
 				{
@@ -251,6 +248,14 @@ static void UartTask(void* arg)
 					osMessageQueuePut(UartWriteCmdHandle,&UartWriteData,0,1000);
 					PROC_UART_STATE_SWITCH(PROCESS_UART_STATE_READ);
 				}
+				if(Timer_count%50==0 && BattHeaterSwitch(&HeatSwitch)==TRUE)
+				{
+					UartWriteData.WriteCmd = 0x02;
+					UartWriteData.Data[0] = 0x00;
+					UartWriteData.Data[1] = HeatSwitch&0xFF;
+					osMessageQueuePut(UartWriteCmdHandle,&UartWriteData,0,1000);
+					PROC_UART_STATE_SWITCH(PROCESS_UART_STATE_READ);
+				}
                 break;
             }
             case PROCESS_UART_STATE_READ:
@@ -712,21 +717,22 @@ BOOL BattHeaterSwitch(UINT8* heaterSwitch)
 	UINT8 i =0;	
 	UINT8 currentSwitchState = 0;
 	//get the current switch state and the cell temp
-	currentSwitchState = battMOSSwitchState & 0x01;
-	if(currentSwitchState==0) 	//当前状态为关闭,判断是否应该开启
+	currentSwitchState = battHeatEnableState&0x01;
+
+	if(currentSwitchState==0)  //当前状态为关闭,判断是否应该开启
 	{
-		if(minCellTemp<=5+40 && maxCellTemp<25+40 && battSOC>=12)//温度偏移为40 
+		if(minCellTemp<5+40 && minCellTemp>=-29+40 && maxCellTemp<25+40)//温度偏移为40 
 		{
 			*heaterSwitch = 1;
 			isNeedtoSwitch = true;
 		}
 	}
-	else  						//当前状态为开启,判断是否应该关闭
+	else        //当前状态为开启,判断是否应该关闭
 	{
-		if(minCellTemp>10+40 || maxCellTemp>30+40 || battSOC<10)
+		if(minCellTemp>=10+40 || maxCellTemp>=30+40)
 		{
 			*heaterSwitch = 0;
-			isNeedtoSwitch= true;
+			isNeedtoSwitch = true;
 		}
 	}
 	return isNeedtoSwitch;