0922-Percent_tracking_check(void)

mt_battery_100Percent_tracking_check(void)
{
	if(bat_vol_is_full)	//电池电压满
	{
		if(UI_SOC >= 100)
		{
			if(charging_is_full_reset_meter)	//三者都满才正常
			{
				return TURE;
			}
			else
			{
				return FALSE;
			}
		}
		else
		{
			if(timer_counter >= 3)	//30s更新时返回正常
			{
				timer_counter = 1;
				UI_SOC++;
				return TURE;
			}
			else
			{
				retrurn FALSE;
			}
		}
	}
	else	//电池电压不满
	{
		if(UI_SOC >= 99)
		{
			UI_SOC = 99;
			return FALSE;
		}
	}
}
返回TURE只有两种情况
1、只有当电池电压满且UI_SOC满且充电满
2、电池电压电压满时UI_SOC未满且到达30秒更新时间
其余都会返回FALSE
mt_battery_0Percent_tracking_check(void)
{
	if(UI_SOC <= 0)
	{
		UI_SOC = 0;
	}
	else
	{
		UI_SOC--;
	}
	
	return TURE;
}
该函数永远返回真
void mt_battery_nPercent_tracking_check()
{
	if(BMT_status.nPrecent_UI_SOC_check_point == 0)
	{
		return FALSE;
	}
	
	if(bat_vol_nPercent <= 15% && UI_SOC >= 15%)
	{
		if(time_counter == 2)
		{
			UI_SOC--;
			return TURE;
		}
		else
		{
			time_counter = 1;
			return FALSE;
		}
	}
	else if(bat_vol_nPercent >= 15% && UI_SOC == 15%)
	{
		return TURE;
	}
	else
	{
		return FALSE;
	}
}
当电池电压到达15%时候,若电量高于15%,则需要用电压等且等20s电量更新返回TURE,若果时间没到20s,则返回FALSE
当电量先到15%,电池电压大于15%时候返回TURE
其余情况返回FALSE
sync_UI_percent_to_real();
{
	if(UI_SOC > SOC)	//耗电比较严重,上层的显示要底层
	{
		if(time_60s_ok)	//防止跳跃过大
		{
			UI_SOC--;
		}
	}
	else				//充电
	{
		if(UI_SOC < SOC)
		{
			UI_SOC++;
		}
		else
		{
			UI_SOC = SOC;
		}
	}
}
该函数用于实现UI_SOC和SOC的同步
battery_update()
{
	//电池数据BTM_status;
	
	if(charger_exist)
	{
		if(battery_exist)
		{
			if(bat_vol < v_0percent_tracking)
			{
				status = mt_battery_0Percent_tracking_check();
			}
			else
			{
				status = mt_battery_100Percent_tracking_check();
			}
		}
		else
		{
			UI_SOC = 0;
		}
	}
	else
	{
			if(bat_vol < v_0percent_tracking)
			{
				status = mt_battery_0Percent_tracking_check();
			}
			else
			{
				status = mt_battery_nPercent_tracking_check();
			}		
	}
	
	if(status == TURE)
	{
		battery_meter_reset();
	}
	else
	{
		if(is_chargering || bat_full)
		{
			UI_SOC = 100;
		}
		else
		{
			sync_UI_percent_to_real();
		}
	}
}
1、可以看到整个电池数据更新的时候,必须先判断charger是否存在,同时判断电池是否存在,当充电器和电池同时存在时,若果电池电压小于0check点的电压时,做0check点的UI_SOC校准(UI_SOC--),否则,做100check点的校准(UI_SOC++)
2、当只有电池存在时候,若果电池电压小于0check点的电压时,做0check点的UI_SOC校准(UI_SOC--),否则做15%的check点的校准,具体来说,如果电池电压先到15%且电量大于15%时候,20更新时间未到,则返回FALSE,20s时间到,返回当电量先到15%时候且电池电压大于15%时候,返回TURE</span>
3、当check完成(0check/15%check/100check)后,根据返回的TURE和FALSE进入不同的处理,当返回FALSE且电池未充满时候,同步更新底层SOC和上层显示的UI_SOC
发布了22 篇原创文章 · 获赞 5 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章