Commit 63eebee0 authored by 李俭双's avatar 李俭双

feat:增加车速数据处理

parent d20dd765
......@@ -168,10 +168,7 @@ uint32_t Common_GetSocTime(void)
*/
uint32_t Data_Km_To_Mile(uint32_t Km)
{
//Km *= 621;
//Km /= 1000;
Km *= 100;
Km /= 161;
Km = (Km * 64u) / 103u;
return Km;
}
/**
......
......@@ -69,81 +69,35 @@ void Data_Vehicle_Speed_Processing_Service(void)
uint16_t Delta;
uint32_t VSpeed;
uint32_t VSpeedCal;
//uint8_t ESC_VehicleSpeedvalid;
uint8_t ESC_VehicleSpeedState;
uint32_t Vehicle_Speed;
Vehicle_Speed = Get_CAN_CH0_ID_101_Sig_ECU_Vehicle_Speed( );
//ESC_VehicleSpeedvalid = Get_CAN_CH0_ID_330_Sig_ESC_Vehicle_speed_valid( );
ESC_VehicleSpeedState = Get_CAN_CH0_ID_101_Sig_ECU_Vehicle_Speed_State( );
// 第1步:获取实际车速值及车速有效性
if( Common_Get_IG_Sts( ) == COMMON_POWER_ON )
{
if ((CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x101_Msg_Count) == CAN_SIG_LOST) || (Vehicle_Speed > 0XFF))
{
/* 先判断掉线 */
if (CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x101_Msg_Count) == CAN_SIG_LOST)
{
DataVSpeedValid = 0;
DataVSpeedActual = 0;
DataVSpeedSampler.Backup = 0;
}
#if 0
else if ( ESC_VehicleSpeedvalid == 1 )//发送can无效标志位
{
if ( DataVSpeedSampler.Timer1 <= 10 ) /* 10帧无效 */
{
if ( DataVSpeedValid )//判断车速是否有效,有效采集10次,车速等于上次值
{
DataVSpeedSampler.Timer1++;
DataVSpeedActual = DataVSpeedSampler.Backup;
}
else//无效,不采集,车速=0
{
DataVSpeedSampler.Timer1 = 10;
DataVSpeedActual = 0;
DataVSpeedSampler.Backup = 0;
}
}
else//不采集就,车速=0
{
DataVSpeedValid = 0;
DataVSpeedActual = 0;
DataVSpeedSampler.Backup = 0;
}
}
#endif
else /* 收到无效值 */
{
if ( DataVSpeedSampler.Timer <= 100 ) /* 100帧无效值 */
{
if ( DataVSpeedValid )
{
DataVSpeedSampler.Timer++;
DataVSpeedActual = DataVSpeedSampler.Backup;
}
else
{
DataVSpeedSampler.Timer = 100;
DataVSpeedActual = 0;
DataVSpeedSampler.Backup = 0;
}
}
else // 接收到100帧无效值
if (ESC_VehicleSpeedState == 1)
{
DataVSpeedValid = 0;
DataVSpeedActual = 0;
DataVSpeedSampler.Backup = 0;
}
}
}
else //车速在线且有效
else
{
if ( DataVSpeedValid == 0 )
{
DataVSpeedValid = 1;
VSpeed = Vehicle_Speed;
// VSpeed *= 9;
// VSpeed >>= 4;
DataVSpeedActual = VSpeed * 10;
}
else
......@@ -164,13 +118,13 @@ void Data_Vehicle_Speed_Processing_Service(void)
{
DataVSpeedSampler.Cnt = 0;
VSpeed = DataVSpeedSampler.Buffer [ 1 ];
//VSpeed *= 9;
//VSpeed >>= 4;
DataVSpeedActual = VSpeed * 10;
}
DataVSpeedSampler.Timer = 0;
DataVSpeedSampler.Timer1 = 0;
DataVSpeedSampler.Backup = DataVSpeedActual;
DataVSpeedValid = 1;
}
}
}
}
......@@ -251,8 +205,8 @@ void Data_Vehicle_Speed_Processing_Service(void)
else
{
DataVSPeedDamping.Speed += Delta;
if ( DataVSPeedDamping.Speed > 1200 )
DataVSPeedDamping.Speed = 1200;
if ( DataVSPeedDamping.Speed > 1990 )
DataVSPeedDamping.Speed = 1990;
}
}
else // 显示值正在向实际值减小,则维持当前方向调节增加速度
......@@ -300,8 +254,8 @@ void Data_Vehicle_Speed_Processing_Service(void)
else
{
DataVSPeedDamping.Speed += Delta;
if ( DataVSPeedDamping.Speed > 1200 )
DataVSPeedDamping.Speed = 1200;
if ( DataVSPeedDamping.Speed > 1990 )
DataVSPeedDamping.Speed = 1990;
}
}
else // 显示值当前是减小方向
......@@ -336,12 +290,14 @@ void Data_Vehicle_Speed_Processing_Service(void)
if ( DataVSpeedValid )
{
VSpeedCal *= 108;
VSpeedCal *= 107;
VSpeedCal /= 100;
if((VSpeedCal % 10) >= 5)
VSpeedCal = VSpeedCal + 10;
if(VSpeedCal > 1990)
{
VSpeedCal += 5; /* 四舍五入 */
VSpeedCal = 1990;
}
DataVSpeedDisp = ( uint16_t )VSpeedCal;
}
else
......@@ -366,24 +322,21 @@ uint16_t Get_DispVechileSpeed(void)
uint16_t Vspeed = 0;
if(Get_Dis_KM_Unit() == 0) /* KM */
{
if ( DataVSpeedDisp >= 1200 )
if ( DataVSpeedDisp >= 1990 )
{
DataVSpeedDisp = 1200;
DataVSpeedDisp = 1990;
}
Vspeed = DataVSpeedDisp;
}
else //if (Get_Dis_KM_Unit() == 1) /* MILE */
else /* MILE */
{
Vspeed = Data_Km_To_Mile(DataVSpeedDisp);
if ( Vspeed >= 750 )
if ( Vspeed >= 1230 )
{
Vspeed = 750;
Vspeed = 1230;
}
}
// else
// {
// ;
// }
return Vspeed;
}
......
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