|
@@ -1,194 +0,0 @@
|
|
-
|
|
|
|
-#include "BCU.h"
|
|
|
|
-
|
|
|
|
-static StaticTask_t gProcess_Bcu_Task_t;
|
|
|
|
-static UINT8 gProcess_Bcu_TaskStack[PROC_BCU_TASK_STACK_SIZE];
|
|
|
|
-static osThreadId_t BcuTaskId = NULL;
|
|
|
|
-static process_Bcu gProcess_Bcu_Task;
|
|
|
|
-#define PROC_BCU_STATE_SWITCH(a) (gProcess_Bcu_Task = a)
|
|
|
|
-
|
|
|
|
-//======================================================
|
|
|
|
-void BCU(void)
|
|
|
|
-{
|
|
|
|
- uint16_T i;
|
|
|
|
-
|
|
|
|
- UINT32 locateTimeCounter = 0;
|
|
|
|
- osDelay(5000);
|
|
|
|
- PROC_BCU_STATE_SWITCH(PROCESS_STATE_INIT);
|
|
|
|
-
|
|
|
|
- while (TRUE)
|
|
|
|
- {
|
|
|
|
- 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:
|
|
|
|
- {
|
|
|
|
- while (TRUE)
|
|
|
|
- {
|
|
|
|
- //osDelay(100);
|
|
|
|
- //if (locateTimeCounter != TimeCounter)
|
|
|
|
- if (TimeCounter%10==0)
|
|
|
|
- {
|
|
|
|
- printf("TimeCounter:%d\n",TimeCounter);
|
|
|
|
- //locateTimeCounter = TimeCounter;
|
|
|
|
-
|
|
|
|
- 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();
|
|
|
|
-
|
|
|
|
- //==============================shi shi cun chu=======
|
|
|
|
- if (socd_flg_EEsave == 1 || ihd_flg_DTCClear)
|
|
|
|
- {
|
|
|
|
- BCUEEDataSave();
|
|
|
|
- ihd_flg_DTCClear = false;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- osDelay(100);
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- //----------------------------------------------------------------------------------------------------
|
|
|
|
- case PROCESS_STATE_SLEEP:
|
|
|
|
- {
|
|
|
|
- BCUEEDataSave();
|
|
|
|
- //
|
|
|
|
- ihd_tm_parkTime = 0;
|
|
|
|
- while (TRUE)
|
|
|
|
- {
|
|
|
|
- osDelay(1000);
|
|
|
|
- ihd_tm_parkTime++;
|
|
|
|
- if (gProcess_app == WORK)
|
|
|
|
- {
|
|
|
|
- PROC_BCU_STATE_SWITCH(PROCESS_STATE_INIT);
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- default:
|
|
|
|
- {
|
|
|
|
- PROC_BCU_STATE_SWITCH(PROCESS_STATE_INIT);
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-//=================================================================================
|
|
|
|
-void BCU_Init(void)
|
|
|
|
-{
|
|
|
|
- SFM_Init();
|
|
|
|
- TMS_Init();
|
|
|
|
- //CM_Init();
|
|
|
|
- SPM_Init();
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-//================================================================================
|
|
|
|
-void AppTaskBcuInit(void *arg)
|
|
|
|
-{
|
|
|
|
- osThreadAttr_t task_attr;
|
|
|
|
- memset(&task_attr, 0, sizeof(task_attr));
|
|
|
|
- memset(gProcess_Bcu_TaskStack, 0xA5, PROC_BCU_TASK_STACK_SIZE);
|
|
|
|
- task_attr.name = "Bcu_Task";
|
|
|
|
- task_attr.stack_mem = gProcess_Bcu_TaskStack;
|
|
|
|
- task_attr.stack_size = PROC_BCU_TASK_STACK_SIZE;
|
|
|
|
- task_attr.priority = osPriorityBelowNormal7;
|
|
|
|
- task_attr.cb_mem = &gProcess_Bcu_Task_t;
|
|
|
|
- task_attr.cb_size = sizeof(StaticTask_t);
|
|
|
|
- BcuTaskId = osThreadNew(BCU, NULL, &task_attr);
|
|
|
|
-}
|
|
|
|
-//=================================================================================
|
|
|
|
-void BCUEEDataSave(void)
|
|
|
|
-{
|
|
|
|
- memcpy(BcuDataInfo.blcv_Q_totalCpE, blcv_Q_totalCpEo, sizeof(blcv_Q_totalCpEo));
|
|
|
|
- memcpy(BcuDataInfo.blcv_Q_reqCpE, blcv_Q_reqCpEo, sizeof(blcv_Q_reqCpEo));
|
|
|
|
- BcuDataInfo.socd_pct_bcuSocE = socd_pct_bcuSocEo;
|
|
|
|
- BcuDataInfo.socd_pct_battSocE = socd_pct_battSocEo;
|
|
|
|
- BcuDataInfo.sohd_tm_chrgStartStatE = sohd_tm_chrgStartStatEo;
|
|
|
|
- BcuDataInfo.sohd_flg_chrgEndE = sohd_flg_chrgEndEo;
|
|
|
|
- memcpy(BcuDataInfo.sohv_V_chrgStartStatE, sohv_V_chrgStartStatEo, sizeof(sohv_V_chrgStartStatEo));
|
|
|
|
- BcuDataInfo.sohd_Q_chrgE = sohd_Q_chrgEo;
|
|
|
|
- memcpy(BcuDataInfo.sohv_Q_packCapArrE, sohv_Q_packCapArrEo, sizeof(sohv_Q_packCapArrEo));
|
|
|
|
- memcpy(BcuDataInfo.sohv_Q_cellCapArrE, sohv_Q_cellCapArrEo, sizeof(sohv_Q_cellCapArrEo));
|
|
|
|
- BcuDataInfo.sfmd_flg_mainCirClosFltE = sfmd_flg_mainCirClosFltEo;
|
|
|
|
- BcuDataInfo.sfmd_flg_heatCirClosFltE = sfmd_flg_heatCirClosFltEo;
|
|
|
|
- BcuDataInfo.sfmd_flg_heatCirOpenFltE = sfmd_flg_heatCirOpenFltEo;
|
|
|
|
- BcuDataInfo.sfmd_flg_heatRunFltE = sfmd_flg_heatRunFltEo;
|
|
|
|
- BcuDataInfo.appDataModify = TRUE;
|
|
|
|
-}
|
|
|