Commit 628ee544 authored by 张金硕's avatar 张金硕

🐞 fix:修改水温bug,正常、开路、短路三个状态切换三秒后直接显示对应格数

parent e36b41b2
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
#include "Hysteresis.h" #include "Hysteresis.h"
#define FAST_TIME 15 //20*20 400ms变化一格 #define FAST_TIME 15 //20*20 400ms变化一格
#define NORMAL_TIME 500 //500*20 10s变化一格 #define NORMAL_TIME 500 //500*20 10s变化一格
#define Disconnected_TIME 25 //掉线时间 #define Disconnected_TIME 1 //掉线时间
#pragma ghs section bss = ".myNonInitArea" #pragma ghs section bss = ".myNonInitArea"
//_Data_Cng Data_Cng_Percent; //_Data_Cng Data_Cng_Percent;
//_Data_Cng Data_Cng_Pressure; //_Data_Cng Data_Cng_Pressure;
...@@ -19,6 +19,8 @@ DataCoolantTempSamplerStruct DataResCoolantTempSampler ; ...@@ -19,6 +19,8 @@ DataCoolantTempSamplerStruct DataResCoolantTempSampler ;
uint8_t u8SelfCheckTime_Finish; uint8_t u8SelfCheckTime_Finish;
#define SelfCheckTime 60 #define SelfCheckTime 60
uint16_t TEMP_SPEED; uint16_t TEMP_SPEED;
uint8_t Lost_Flag;
uint16_t Lost_Time;
uint16_t time_temp; uint16_t time_temp;
uint16_t time_power_on = 0; uint16_t time_power_on = 0;
uint16_t time_lost = 0; uint16_t time_lost = 0;
...@@ -114,6 +116,7 @@ void TEMP_KL30_Init ( void ) ...@@ -114,6 +116,7 @@ void TEMP_KL30_Init ( void )
DataCoolantTemp_Dis.u8_CurSeg = 0; DataCoolantTemp_Dis.u8_CurSeg = 0;
DataCoolantTemp.TEMPSetp = 0; DataCoolantTemp.TEMPSetp = 0;
DataCoolantTemp.u8_ResStatus = 0; DataCoolantTemp.u8_ResStatus = 0;
DataCoolantTemp.u8_Last_ResStatus = 0;
TEMP_SPEED = 0; TEMP_SPEED = 0;
time_power_on = 0; time_power_on = 0;
time_lost = 0; time_lost = 0;
...@@ -133,6 +136,7 @@ void TEMP_KL15_Init ( void ) ...@@ -133,6 +136,7 @@ void TEMP_KL15_Init ( void )
DataCoolantTemp.u16Res_ADValue = 0; DataCoolantTemp.u16Res_ADValue = 0;
DataCoolantTemp.u8Res_ADValid = 0; DataCoolantTemp.u8Res_ADValid = 0;
DataCoolantTemp.u8_ResStatus = 0; DataCoolantTemp.u8_ResStatus = 0;
DataCoolantTemp.u8_Last_ResStatus = 0;
DataCoolantTemp_Dis.u8_CurSeg = 0; DataCoolantTemp_Dis.u8_CurSeg = 0;
DataResCoolantTempSampler.Cnt = 0; DataResCoolantTempSampler.Cnt = 0;
DataCoolantTemp.TEMPMode = 0; DataCoolantTemp.TEMPMode = 0;
...@@ -147,7 +151,7 @@ void Data_Coolant_Temp_Processing_Service ( void ) ...@@ -147,7 +151,7 @@ void Data_Coolant_Temp_Processing_Service ( void )
uint16_t Coolant_Temperature; uint16_t Coolant_Temperature;
uint32_t Temp; uint32_t Temp;
uint8_t i; uint8_t i;
Coolant_Temperature = Get_CAN_CH0_ID_101_Sig_ECU_Engine_Temperature(); Coolant_Temperature = Get_CAN_CH0_ID_101_Sig_ECU_Engine_Temperature();
//can //can
if (SYS_OPR_STAT_IGN_ON ) if (SYS_OPR_STAT_IGN_ON )
...@@ -175,7 +179,7 @@ void Data_Coolant_Temp_Processing_Service ( void ) ...@@ -175,7 +179,7 @@ void Data_Coolant_Temp_Processing_Service ( void )
else if(Coolant_Temperature <= 2430) else if(Coolant_Temperature <= 2430)
{ {
Coolant_Temperature =0; Coolant_Temperature =0;
DataCoolantTemp.u8Can_Valid = 0; DataCoolantTemp.u8Can_Valid = 1;
} }
else else
{ {
...@@ -249,7 +253,7 @@ void Data_Coolant_Temp_Processing_Service ( void ) ...@@ -249,7 +253,7 @@ void Data_Coolant_Temp_Processing_Service ( void )
} }
else else
{ {
DataCoolantTemp.u8_ResStatus = 3;//当前状态为开路 DataCoolantTemp.u8_Last_ResStatus = 3;//当前状态为开路
DataCoolantTemp.u8Res_Valid = 0 ; DataCoolantTemp.u8Res_Valid = 0 ;
DataCoolantTemp.u16Res_Actual = 0 ; DataCoolantTemp.u16Res_Actual = 0 ;
DataResCoolantTempSampler.ResOpen_InActTimer = 0; DataResCoolantTempSampler.ResOpen_InActTimer = 0;
...@@ -274,7 +278,7 @@ void Data_Coolant_Temp_Processing_Service ( void ) ...@@ -274,7 +278,7 @@ void Data_Coolant_Temp_Processing_Service ( void )
} }
if(DataCoolantTemp.u8Can_Valid || DataCoolantTemp.u8Res_Valid ) if(DataCoolantTemp.u8Can_Valid || DataCoolantTemp.u8Res_Valid )
{ {
DataCoolantTemp.u8_ResStatus = 1;//当前状态正常 DataCoolantTemp.u8_Last_ResStatus = 1;//当前状态正常
} }
if (DataCoolantTemp.u8Can_Valid == 1) if (DataCoolantTemp.u8Can_Valid == 1)
{ {
...@@ -285,20 +289,21 @@ void Data_Coolant_Temp_Processing_Service ( void ) ...@@ -285,20 +289,21 @@ void Data_Coolant_Temp_Processing_Service ( void )
DataCoolantTemp.Temp_Value = DataCoolantTemp.u16Res_Actual; DataCoolantTemp.Temp_Value = DataCoolantTemp.u16Res_Actual;
if(DataCoolantTemp.u16Res_ADValue < 40) if(DataCoolantTemp.u16Res_ADValue < 40)
{ {
DataCoolantTemp.u8_ResStatus = 2;//当前状态为短路 DataCoolantTemp.u8_Last_ResStatus = 2;//当前状态为短路
DataCoolantTemp.TEMPMode = 2;
} }
} }
else else
{ {
if(DataCoolantTemp.u8_ResStatus != 3) if(DataCoolantTemp.u8_Last_ResStatus != 3)
{ {
DataCoolantTemp.u8_ResStatus = 0; DataCoolantTemp.u8_Last_ResStatus = 0;
} }
DataCoolantTemp.Temp_Value = 0; DataCoolantTemp.Temp_Value = 0;
} }
TEMP_Gauges_Cal(); TEMP_Gauges_Cal();
time_power_on++; time_power_on++;
TEMP_SPEED = NORMAL_TIME;
if(time_power_on >= 100)//上电延时获取数据 if(time_power_on >= 100)//上电延时获取数据
{ {
time_power_on = 100; time_power_on = 100;
...@@ -306,18 +311,28 @@ void Data_Coolant_Temp_Processing_Service ( void ) ...@@ -306,18 +311,28 @@ void Data_Coolant_Temp_Processing_Service ( void )
if(DataCoolantTemp.u8Can_Valid||DataCoolantTemp.u8Res_Valid) if(DataCoolantTemp.u8Can_Valid||DataCoolantTemp.u8Res_Valid)
{ {
time_lost = 0; time_lost = 0;
if(DataCoolantTemp.TEMPMode == 3)//掉线 if(DataCoolantTemp.TEMPMode ==3)//掉线
{ {
TEMP_SPEED = FAST_TIME; if(DataCoolantTemp.u8_ResStatus != 3)
{
Lost_Flag = 1;
time_temp = 0;
}
} }
else if(DataCoolantTemp.TEMPMode == 0)//自检 else if (DataCoolantTemp.TEMPMode == 2)
{ {
DataCoolantTemp_Dis.u8_CurSeg = DataCoolantTemp.TEMPSetp; if(DataCoolantTemp.u8_ResStatus != 2)
{
Lost_Flag = 1;
time_temp = 0;
}
} }
if(DataCoolantTemp.TEMPMode == 3) else if(DataCoolantTemp.TEMPMode == 0)//自检
{ {
DataCoolantTemp.TEMP_Fastime = 100; DataCoolantTemp_Dis.u8_CurSeg = DataCoolantTemp.TEMPSetp;
} }
DataCoolantTemp.TEMPMode = 1; DataCoolantTemp.TEMPMode = 1;
} }
else else
...@@ -329,28 +344,42 @@ void Data_Coolant_Temp_Processing_Service ( void ) ...@@ -329,28 +344,42 @@ void Data_Coolant_Temp_Processing_Service ( void )
if(DataCoolantTemp.TEMPMode != 3) if(DataCoolantTemp.TEMPMode != 3)
{ {
DataCoolantTemp.TEMPMode = 3; DataCoolantTemp.TEMPMode = 3;
TEMP_SPEED = NORMAL_TIME; time_temp = 0;
Lost_Flag = 1;
} }
DataCoolantTemp.TEMPSetp = 0; DataCoolantTemp.TEMPSetp = 0;
} }
} }
} }
// if(DataCoolantTemp.u8_ResStatus==0)
time_temp ++; // {
// DataCoolantTemp.u8_ResStatus = DataCoolantTemp.u8_Last_ResStatus;
if(DataCoolantTemp.TEMP_Fastime>0) // }
if(DataCoolantTemp.u8_ResStatus != DataCoolantTemp.u8_Last_ResStatus)
{ {
DataCoolantTemp.TEMP_Fastime--; Lost_Time++;
} if(Lost_Time > 150)
if(DataCoolantTemp.TEMP_Fastime==0)
{
if(DataCoolantTemp.TEMPSetp == DataCoolantTemp_Dis.u8_CurSeg)
{ {
TEMP_SPEED = NORMAL_TIME; DataCoolantTemp.u8_ResStatus = DataCoolantTemp.u8_Last_ResStatus;
time_temp = 0; Lost_Time = 0;
} Lost_Flag = 0;
DataCoolantTemp_Dis.u8_CurSeg = DataCoolantTemp.TEMPSetp;
}
}
// if(Lost_Flag)
// {
// Lost_Time++;
// if(Lost_Time > 150)
// {
// DataCoolantTemp.u8_ResStatus = DataCoolantTemp.u8_Last_ResStatus;
// Lost_Time = 0;
// Lost_Flag = 0;
// DataCoolantTemp_Dis.u8_CurSeg = DataCoolantTemp.TEMPSetp;
// }
// }
} time_temp ++;
if(time_temp>=TEMP_SPEED) if(time_temp>=TEMP_SPEED)
{ {
......
...@@ -31,7 +31,8 @@ typedef struct ...@@ -31,7 +31,8 @@ typedef struct
uint8_t TEMPSetp; uint8_t TEMPSetp;
uint8_t TEMPMode; uint8_t TEMPMode;
uint16_t TEMP_Fastime ; uint16_t TEMP_Fastime ;
uint8_t u8_ResStatus; // uint8_t u8_ResStatus;
uint8_t u8_Last_ResStatus;
}DataCoolantTempStruct; //水温数据结构 }DataCoolantTempStruct; //水温数据结构
......
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