Commit 56507836 authored by 李冠华's avatar 李冠华

feat:混动车型增加单次工作时长工作逻辑

parent f8e0c73a
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
DataTimeStruct_st_t Time; DataTimeStruct_st_t Time;
uint16_t u16EngineTimeCount;
void Data_Time_KL30_Init(void) void Data_Time_KL30_Init(void)
{ {
...@@ -10,27 +11,46 @@ void Data_Time_KL30_Init(void) ...@@ -10,27 +11,46 @@ void Data_Time_KL30_Init(void)
Time.SingleMin = 0U; Time.SingleMin = 0U;
Time.TotalHour = 0U; Time.TotalHour = 0U;
Time.SingleValid = 0U; Time.SingleValid = 0U;
Time.KeepTimeCount = 0U;
u16EngineTimeCount = 0U;
} }
void Data_Time_KL15_Init(void) void Data_Time_KL15_Init(void)
{ {
Time.KeepTimeCount = 0U;
u16EngineTimeCount = 0U;
} }
void Data_Time_Single_Working_Hours(void) void Data_Time_Single_Working_Hours(void)
{ {
uint8_t Clock_all = 0; #if (PART_NUMBER == RMR42E_60)
if ((Common_Get_IG_Sts() == COMMON_POWER_ON) && (Charge_OFF_Flag == 0) && (Get_CAN_Power_State() != KEY_OFF) && (Get_CAN_Power_State() != PKEY_ON) && (System_Indicator_CANFlag != 1)) uint8_t Clock_all = 0;
{ if ((Common_Get_IG_Sts() == COMMON_POWER_ON) && (Charge_OFF_Flag == 0) && (Get_CAN_Power_State() != KEY_OFF) && (Get_CAN_Power_State() != PKEY_ON) && (System_Indicator_CANFlag != 1))
Clock_all = Get_CAN_Num_MMCU_SingleWorkingHours(); {
Time.SingleHour = Clock_all / 10U; Clock_all = Get_CAN_Num_MMCU_SingleWorkingHours();
Time.SingleMin = (Clock_all % 10U) * 6U; Time.SingleHour = Clock_all / 10U;
Time.SingleValid = 1; Time.SingleMin = (Clock_all % 10U) * 6U;
} Time.SingleValid = 1;
else }
{ else
Time.SingleValid = 0; {
} Time.SingleValid = 0;
}
#else
if (Get_CAN_Power_State() == KEY_ACC)
{
Time.SingleHour = (uint8_t)(Time.KeepTimeCount / 3600U);
Time.SingleMin = (uint8_t)((Time.KeepTimeCount % 3600U) / 60U);
Time.SingleValid = 1;
}
else
{
Time.SingleHour = 0U;
Time.SingleMin = 0U;
Time.SingleValid = 0U;
}
#endif
} }
uint32_t u32Data_read[1] = {0}; uint32_t u32Data_read[1] = {0};
...@@ -98,6 +118,23 @@ void Data_CumulativeWorkHours_EEPROM_Write(void) ...@@ -98,6 +118,23 @@ void Data_CumulativeWorkHours_EEPROM_Write(void)
} }
} }
/*发动机运行时间计时函数,为防止计时误差大,放在50μs中断中运行*/
void Single_Working_Hours_Count(void)
{
#if (PART_NUMBER == G54_A01)
if(g_ReadyStatus == 1U)
{
u16EngineTimeCount++ ;
if(u16EngineTimeCount == 20000U)
{
Time.KeepTimeCount++;
u16EngineTimeCount = 0U;
}
}
#endif
}
/****************************************************************************** /******************************************************************************
函数名:Get_SingleHour_Display 函数名:Get_SingleHour_Display
功 能:获取单次工作时长小时数函数 功 能:获取单次工作时长小时数函数
......
...@@ -11,6 +11,7 @@ typedef struct //__attribute__((aligned(4))) ...@@ -11,6 +11,7 @@ typedef struct //__attribute__((aligned(4)))
uint8_t SingleMin; /*单次计时分钟*/ uint8_t SingleMin; /*单次计时分钟*/
uint8_t SingleValid; /*单次工作时间有效状态*/ uint8_t SingleValid; /*单次工作时间有效状态*/
uint32_t TotalHour; /*累计计时小时*/ uint32_t TotalHour; /*累计计时小时*/
uint32_t KeepTimeCount; /*单次工作时长自主计时,单位s*/
}DataTimeStruct_st_t; }DataTimeStruct_st_t;
...@@ -20,6 +21,7 @@ extern void Data_Time_KL15_Init(void); ...@@ -20,6 +21,7 @@ extern void Data_Time_KL15_Init(void);
extern void Data_Time_Single_Working_Hours(void); extern void Data_Time_Single_Working_Hours(void);
extern void Data_Time_Total_Working_Hours(void); extern void Data_Time_Total_Working_Hours(void);
extern void Data_CumulativeWorkHours_EEPROM_Write(void); extern void Data_CumulativeWorkHours_EEPROM_Write(void);
extern void Single_Working_Hours_Count(void);
extern uint8_t Get_SingleHour_Display(void); extern uint8_t Get_SingleHour_Display(void);
extern uint8_t Get_SingleMin_Display(void); extern uint8_t Get_SingleMin_Display(void);
......
...@@ -101,4 +101,5 @@ void Sys_Exact_50us_Tasks(void) ...@@ -101,4 +101,5 @@ void Sys_Exact_50us_Tasks(void)
task_1ms = 0U; task_1ms = 0U;
eeprom_1ms_timeCount(); eeprom_1ms_timeCount();
} }
Single_Working_Hours_Count();
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment