|
@@ -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;
|