#include "powermanage.h"
|
#include "stm32f10x.h"
|
#include "adc.h"
|
#include "RTC.h"
|
#include "para.h"
|
#include "delay.h"
|
#include "fm25v02.h"
|
#include "state_fun_init.h"
|
#include "mem_warning_sizhu_log.h"
|
|
#include "third_telecom_interface.h"
|
|
|
BAT_TEST_PARA Bat_Test_Para;
|
|
/*ÍⲿÄÚ²¿µçÔ´io³õʼ»¯*/
|
|
void Bat_Test_EN_io_dec_init(void)
|
{
|
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitStructure.GPIO_Pin = POWER_ELECTRIC_TEST_PIN_NUM; //amp
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //Ä£ÄâÊäÈë
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
|
GPIO_Init(POWER_ELECTRIC_TEST_PIN_GROUP, &GPIO_InitStructure);
|
}
|
|
void Bat_Test_EN_io_dec_deinit(void)
|
{
|
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitStructure.GPIO_Pin = POWER_ELECTRIC_TEST_PIN_NUM; //amp
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //Ä£ÄâÊäÈë
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
|
GPIO_Init(POWER_ELECTRIC_TEST_PIN_GROUP, &GPIO_InitStructure);
|
}
|
|
|
|
void Bat_Low_io_dec_init(void)
|
{
|
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitStructure.GPIO_Pin = POWER_LOW_PIN_NUM; //
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
|
GPIO_Init(POWER_LOW_PIN_GROUP, &GPIO_InitStructure);
|
}
|
|
void Bat_Low_io_dec_deinit(void)
|
{
|
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitStructure.GPIO_Pin = POWER_LOW_PIN_NUM; //
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
|
GPIO_Init(POWER_LOW_PIN_GROUP, &GPIO_InitStructure);
|
}
|
|
|
void HWIDO_EXPOW_io_dec_init(void)
|
{
|
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitStructure.GPIO_Pin = POWER_SELECT_DEC_PIN_NUM; //amp
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //ÍÆÍìÊä³ö
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
|
GPIO_Init(POWER_SELECT_DEC_PIN_GROUP, &GPIO_InitStructure);
|
}
|
|
void HWIDO_EXPOW_io_dec_deinit(void)
|
{
|
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitStructure.GPIO_Pin = POWER_SELECT_DEC_PIN_NUM; //amp
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //ÍÆÍìÊä³ö
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
|
GPIO_Init(POWER_SELECT_DEC_PIN_GROUP, &GPIO_InitStructure);
|
}
|
|
|
|
|
/*µÍѹ±¨¾¯io*/
|
void undervol_io_power_init(void)
|
{
|
GPIO_InitTypeDef GPIO_InitStructure;
|
|
GPIO_InitStructure.GPIO_Pin = UNDERVOL_PIN_NUM; //amp
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
|
GPIO_Init(UNDERVOL_PIN_GROUP, &GPIO_InitStructure);
|
|
//
|
|
|
}
|
|
|
/*µÍѹ±¨¾¯io*/
|
void lowvol_io_power_init(void)
|
{
|
GPIO_InitTypeDef GPIO_InitStructure;
|
|
GPIO_InitStructure.GPIO_Pin = LOWVOL_PIN_NUM; //amp
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
|
GPIO_Init(LOWVOL_PIN_GROUP, &GPIO_InitStructure);
|
|
/**/
|
|
|
}
|
|
/*µÍѹ±¨¾¯io*/
|
void undervol_io_power_deinit(void)
|
{
|
GPIO_InitTypeDef GPIO_InitStructure;
|
|
GPIO_InitStructure.GPIO_Pin = UNDERVOL_PIN_NUM; //amp
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //ÍÆÍìÊä³ö
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
|
GPIO_Init(UNDERVOL_PIN_GROUP, &GPIO_InitStructure);
|
|
//
|
|
|
}
|
|
|
/*µÍѹ±¨¾¯io*/
|
void lowvol_io_power_deinit(void)
|
{
|
GPIO_InitTypeDef GPIO_InitStructure;
|
|
GPIO_InitStructure.GPIO_Pin = LOWVOL_PIN_NUM; //amp
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //ÍÆÍìÊä³ö
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
|
GPIO_Init(LOWVOL_PIN_GROUP, &GPIO_InitStructure);
|
|
/**/
|
|
|
}
|
|
|
|
|
/*Êä³öÂö³å*/
|
void undervol_io_power(void)
|
{
|
/**/
|
|
undervol_io_power_init();
|
UNDERVOL_SIGNL_HIGH
|
delay_ms(500);
|
UNDERVOL_SIGNL_LOW
|
// undervol_io_power_deinit();
|
|
}
|
|
|
/*Êä³öÂö³å*/
|
void undervol_io_power_high(void)
|
{
|
/**/
|
|
undervol_io_power_init();
|
UNDERVOL_SIGNL_HIGH
|
|
|
}
|
/*Êä³öÂö³å*/
|
void undervol_io_power_low(void)
|
{
|
/**/
|
undervol_io_power_init();
|
UNDERVOL_SIGNL_LOW
|
// undervol_io_power_deinit();
|
|
|
}
|
|
/*Êä³öÂö³å*/
|
void lowvol_io_power(void)
|
{
|
/**/
|
lowvol_io_power_init();
|
LOWVOL_SIGNL_HIGH
|
delay_ms(500);
|
LOWVOL_SIGNL_LOW
|
// lowvol_io_power_deinit();
|
}
|
|
void lowvol_io_power_high(void)
|
{
|
/**/
|
|
lowvol_io_power_init();
|
LOWVOL_SIGNL_HIGH
|
|
|
}
|
/*Êä³öÂö³å*/
|
void lowvol_io_power_low(void)
|
{
|
/**/
|
lowvol_io_power_init();
|
LOWVOL_SIGNL_LOW
|
// lowvol_io_power_deinit();
|
|
|
}
|
|
|
|
/*¶ÁÈ¡µçÔ´io ״̬*/
|
u8 power_io_get(void)
|
{
|
u32 status;
|
|
|
status = GPIOC->IDR & (1 << 2); //PC2¸ß´ú±íµç³Ø¹©µç£¬µÍ´ú±íÍâµç
|
status = status >> 2;
|
|
//return POWER_BAT;
|
|
if( 0 == status )
|
{
|
return POWER_EXTERN;
|
}else
|
{
|
return POWER_BAT;
|
}
|
|
|
}
|
|
|
|
/*±¨¾¯ÐźÅÏßÊä³ö
|
µÍѹÐźţº µç³ØµçѹµÍÓÚ5.6VʱPE10£¨LP_ALM£©Êä³ö10Ãë¸ßµçƽ
|
¹Ø·§ÐźţºÓйط§ÐèҪʱ£¬PE9£¨CV_ALM£©Êä³ö10Ãë¸ßµçƽ¡£
|
ÐèÒª¹Ø·§µÄ±¨¾¯ÓУº1. µç³ØµçѹµÍÓÚ5.1V
|
2. Óз´ÏòÁ÷Á¿£¬¾ßÌå¼û·´ÏòÁ÷Á¿´¦Àí²¿·Ö
|
|
*/
|
void Alarm_pluse_out()
|
{
|
//¹Ø·§ÅжÏ
|
// if((Bat_Test_Para.lith_bat_down_flag == 1)||(v20_system_para_g.system_backward_flow_flag==1))
|
if(Bat_Test_Para.lith_bat_down_flag == 1)
|
{
|
|
Bat_Test_Para.lith_bat_down_alarm_line_output = 1;
|
}else
|
{
|
Bat_Test_Para.lith_bat_down_alarm_line_output = 0;
|
}
|
|
//µÍµçÅжÏ
|
if(Bat_Test_Para.lith_bat_low_flag == 1)
|
{
|
if(Bat_Test_Para.lith_bat_low_alarm_line_cnt == 0)
|
{
|
Bat_Test_Para.lith_bat_low_alarm_line_output = 1;
|
Bat_Test_Para.lith_bat_low_alarm_line_cnt = 3600;
|
}else
|
{
|
Bat_Test_Para.lith_bat_low_alarm_line_cnt --;
|
}
|
|
}else
|
{
|
Bat_Test_Para.lith_bat_low_alarm_line_cnt = 0;
|
}
|
|
|
|
/*¹Ø·§±¨¾¯ÐźÅÏßÊä³ö*/
|
if(Bat_Test_Para.lith_bat_down_alarm_line_output == 1)
|
{
|
/*³ÖÐøÀ¸ß*/
|
|
undervol_io_power_high();
|
// if(v20_system_para_g.system_close_valve_alarm_time < 15)
|
// {
|
// v20_system_para_g.system_close_valve_alarm_time ++;
|
// }else
|
// {
|
// Bat_Test_Para.lith_bat_down_alarm_line_output = 0;
|
// v20_system_para_g.system_close_valve_alarm_time = 15;
|
// }
|
//
|
// /**/
|
// if(v20_system_para_g.system_close_valve_alarm_time < 3)
|
// {
|
// undervol_io_power_low();
|
// }else if(v20_system_para_g.system_close_valve_alarm_time < 13)
|
// {
|
// undervol_io_power_high();
|
// }else
|
// {
|
// undervol_io_power_low();
|
// }
|
}else
|
{
|
v20_system_para_g.system_close_valve_alarm_time = 0;
|
undervol_io_power_low();
|
}
|
|
|
/*µÍµçѹ±¨¾¯ÏßÊä³ö*/
|
if(Bat_Test_Para.lith_bat_low_alarm_line_output == 1)
|
{
|
/*Êä³ö10SµÄÂö³å*/
|
|
|
if(v20_system_para_g.system_lowvoltage_time < 15)
|
{
|
v20_system_para_g.system_lowvoltage_time ++;
|
}else
|
{
|
Bat_Test_Para.lith_bat_low_alarm_line_output = 0;
|
v20_system_para_g.system_lowvoltage_time = 15;
|
}
|
|
/**/
|
if(v20_system_para_g.system_lowvoltage_time < 3)
|
{
|
lowvol_io_power_low();
|
}else if(v20_system_para_g.system_lowvoltage_time < 13)
|
{
|
lowvol_io_power_high();
|
}else
|
{
|
lowvol_io_power_low();
|
}
|
}else
|
{
|
v20_system_para_g.system_lowvoltage_time = 0;
|
lowvol_io_power_low();
|
}
|
|
|
}
|
|
|
|
|
/*ÖÜÆÚÐÔ¶ÁÈ¡µçѹ´¦Àíº¯Êý
|
Âß¼ÊÇÔÚ0µã0·Ö0-1ÃëµÄʱºò´ò¿ªPC0£¬È»ºóÏÂÒ»ÖÜÆÚ£¨ÏÂÒ»Ãë)²É¼¯µç³Øµçѹ£¬¹Ø±ÕPC0£¬ÎªÁË·ÀÖ¹PC0û¹Ø±Õ£¬ÔÚ3-4ÃëµÄʱºò¼ÌÐøÖ´ÐйرÕ
|
*/
|
void get_bat_voltage_Pro(void)
|
{
|
|
// /*¶ÏµçÅжÏ*/
|
// Bat_Low_io_dec_init();
|
//
|
// if(POWER_LOW_PIN_READ==0)
|
// {
|
// if(Bat_Test_Para.BAT_Low_Time_Cnt<250)
|
// {
|
// Bat_Test_Para.BAT_Low_Time_Cnt++;
|
// }
|
// }else
|
// {
|
// if(Bat_Test_Para.BAT_Low_Time_Cnt>=2)
|
// {
|
//
|
// }
|
// Bat_Test_Para.BAT_Low_Time_Cnt = 0;
|
// }
|
//
|
// if(Bat_Test_Para.BAT_Low_Time_Cnt==2) //Á¬Ðø2Ãë¼ì²âµ½µÍµçƽ£¬´ú±íµôµç
|
// {
|
// /*¶Ïµç´¦Àí£¬±£´æÖØÒªÊý¾ÝºÍ¼Ç¼*/
|
//
|
// flow_para_emergency_save();
|
//
|
//// if(v20_system_para_g.system_extern_power_connect_flag == ACTIVE)
|
//// {
|
//
|
//// }
|
// }
|
//
|
// Bat_Low_io_dec_deinit();
|
|
|
|
/*µç³Ø¼ì²â´¦Àí*/
|
if((calendar.hour==23)&&(calendar.min==57)&&(calendar.sec<2)) //·ÀÖ¹0Ãë¿ÉÄÜ´í¹ý£¬ËùÒÔСÓÚ2£¬ 0ÃëºÍ1Ãë¶¼¿ÉÒÔ
|
{
|
Bat_Test_Para.BAT_Period_arrival = 1;
|
}
|
|
|
if((Bat_Test_Para.BAT_Period_arrival ==1)||(Bat_Test_Para.BAT_Test_Key_Flag==1)||(Bat_Test_Para.BAT_Test_power_INIT_Flag==1))
|
{
|
Bat_Test_Para.BAT_Test_Run_Flag =1;
|
Bat_Test_Para.BAT_Period_arrival = 0;
|
Bat_Test_Para.BAT_Test_Key_Flag = 0;
|
Bat_Test_Para.BAT_Test_power_INIT_Flag = 0;
|
}
|
|
|
if(Bat_Test_Para.BAT_Test_Run_Flag==1)
|
{
|
if(Bat_Test_Para.BAT_Test_Time_Cnt==10)
|
{
|
//10Sºó£¬Çå³ý±êÖ¾.
|
Bat_Test_Para.BAT_Test_Run_Flag = 0;
|
Bat_Test_Para.BAT_Test_Time_Cnt = 0;
|
}else
|
{
|
Bat_Test_Para.BAT_Test_Time_Cnt++;
|
}
|
|
if(Bat_Test_Para.BAT_Test_Time_Cnt ==1)
|
{
|
//µÚÒ»Ãë´ò¿ªPC0£¬¼ì²âµç³ØÐèÒªÌáǰÖÁÉÙ500ms
|
Bat_Test_EN_io_dec_init();
|
delay_ms(1);
|
POWER_ELECTRIC_TEST_HIGH;//´ò¿ªPC0 BAT TEST
|
}else if(Bat_Test_Para.BAT_Test_Time_Cnt ==2)
|
{
|
//µÚ¶þÃ룬¿ªÊ¼¼ì²â
|
//Èç¹ûÉÏÒ»´Î²É¼¯µçѹ´óÓÚµÍѹֵ£¬¶øÕâÒ»´Î²É¼¯Ð¡ÓÚµÍѹֵ£¬ÔòÔٲɼ¯Ò»´Î£¬¼õÉÙµçѹ²É¼¯´íÎó¶øµ¼ÖÂÎó²úÉúµÍѹ±¨¾¯µÄ¸ÅÂÊ¡£Èç¹ûÉÏÒ»´Î²É¼¯¾ÍСÓÚµÍѹֵ£¬ÔòÖ»²É¼¯Ò»´Î
|
if(v20_system_para_g.system_bat_power >=battery_para_g.lith_power_low_valve*10)
|
{
|
vol_get_data(); //²É¼¯µç³Øµçѹ
|
if(v20_system_para_g.system_bat_power < battery_para_g.lith_power_low_valve*10 )
|
{
|
vol_get_data(); //²É¼¯µç³Øµçѹ
|
}
|
}else
|
{
|
vol_get_data(); //²É¼¯µç³Øµçѹ
|
}
|
|
|
POWER_ELECTRIC_TEST_LOW; //¼ì²âÍê¿ÉÒÔÁ¢¼´¹Ø±ÕPC0
|
// Bat_Test_EN_io_dec_deinit();
|
|
|
if(Bat_Test_Para.Lith_low_pin_status_Flag==2)
|
{
|
//³öÏÖPC6µÍµçƽ£¬ÔòÅÐ¶Ïµç³ØµçѹÊÇ·ñ´óÓÚǷѹֵ£¬Èç¹ûÊÇ£¬Ôò´ú±íÊÇµç³ØÒÆ³ý£¬¶ø²»ÊÇÕý³£µÄµç³ØÇ·Ñ¹£¬Õý³£µÄµç³ØÇ·Ñ¹Í¨¹ýÊ×´Îµç³Øµçѹ½µµ½Ç·Ñ¹ÖµÒÔÏÂÀ´Åжϡ£
|
Bat_Test_Para.Lith_low_pin_status_Flag = 0;
|
|
// if(system_alarm_ctrl_word_g.alarm_ctl_send.lith_remove == 1)
|
if(1) //¸Ã¹¦ÄÜÏȳ£¿ª
|
{
|
if(v20_system_para_g.system_bat_power > battery_para_g.lith_power_down_valve*10 )
|
{
|
if(Bat_Test_Para.Lith_removal_status_Flag != 1)
|
{
|
Bat_Test_Para.Lith_removal_status_Flag = 1;
|
|
system_alarm_log_data_handle(ALARM_CLASS_BAT_POWER, ALARM_HAPPEN + ALARM_ID_LITH_BAT_REMOVAL);
|
flow_para_emergency_save(); //±£´æÖØÒª²ÎÊý
|
|
if(alarm_report_para_g.lith_battery_removal_cnt<ALARM_EVERYDAY_TIMES)
|
{
|
alarm_report_para_g.lith_battery_removal_flag =1;
|
}
|
if(alarm_report_para_g.lith_battery_removal_cnt<250)
|
{
|
alarm_report_para_g.lith_battery_removal_cnt ++;
|
}
|
}
|
}else
|
{
|
Bat_Test_Para.Lith_removal_status_Flag = 0;
|
alarm_report_para_g.lith_battery_removal_flag =0;
|
alarm_report_para_g.lith_battery_removal_cnt =0;
|
|
}
|
}else
|
{
|
Bat_Test_Para.Lith_removal_status_Flag = 0;
|
alarm_report_para_g.lith_battery_removal_flag =0;
|
alarm_report_para_g.lith_battery_removal_cnt =0;
|
}
|
|
}else if(Bat_Test_Para.Lith_low_pin_status_Flag==1)
|
{
|
Bat_Test_Para.Lith_low_pin_status_Flag = 0;
|
if(system_alarm_ctrl_word_g.alarm_ctl_word.lith_remove == 1)
|
{
|
if(v20_system_para_g.system_bat_power > (battery_para_g.lith_power_down_valve*10 +50))
|
{
|
if(Bat_Test_Para.Lith_removal_status_Flag ==1)
|
{
|
Bat_Test_Para.Lith_removal_status_Flag = 0;
|
alarm_report_para_g.lith_battery_removal_flag =0;
|
alarm_report_para_g.lith_battery_removal_cnt =0;
|
system_alarm_log_data_handle(ALARM_CLASS_BAT_POWER, ALARM_HAPPEN + ALARM_ID_SYSTEM_START);
|
}
|
}
|
}
|
|
}else
|
{
|
Bat_Low_io_dec_init();
|
if(POWER_LOW_PIN_READ==1)
|
{
|
if(Bat_Test_Para.Lith_removal_status_Flag ==1)
|
{
|
//Èç¹û´¦ÓÚµç³ØÒÆ³ý״̬£¬¼ì²âµ½PC6µçƽΪ¸ß£¬ÔòÔÙ¼ì²âÒ»´Î£¬È·¶¨ÊǸßÖ®ºó£¬»Ö¸´×´Ì¬
|
delay_ms(10);
|
if(POWER_LOW_PIN_READ==1)
|
{
|
Bat_Test_Para.Lith_removal_status_Flag = 0;
|
alarm_report_para_g.lith_battery_removal_flag =0;
|
alarm_report_para_g.lith_battery_removal_cnt =0;
|
}
|
}
|
}
|
}
|
}
|
}
|
|
|
if(Bat_Test_Para.lith_bat_replace_flag==1)
|
{
|
Bat_Test_Para.lith_bat_replace_flag = 0;
|
if(v20_system_para_g.system_bat_power>=7.0)
|
{
|
FM25V02_data_write_uint16(BAT1_TIME_SAVE_ADDR, 0);
|
FM25V02_data_write_uint16(BAT2_TIME_SAVE_ADDR, 0);
|
v20_system_para_g.system_bat_work_period1 = 0;
|
v20_system_para_g.system_bat_work_period2 = 0;
|
system_alarm_log_data_handle(ALARM_CLASS_BAT_POWER, ALARM_HAPPEN + ALARM_ID_SYSTEM_START);
|
}
|
}
|
|
|
/*±¨¾¯ÐźÅÏßÊä³ö£¬°üÀ¨µÍѹÐźź͹ط§ÐźÅ*/
|
// Alarm_pluse_out(); ///jlcתÓÃΪµç»úÇý¶¯AB
|
|
|
|
/*µç³ØµçÁ¿¼Çʱ*/
|
if(v20_system_para_g.system_extern_power_connect_flag == NOACTIVE)
|
{
|
v20_system_para_g.system_bat_work_period1 ++;
|
if(v20_system_para_g.system_bat_work_period1 >= 3600)
|
{
|
v20_system_para_g.system_bat_work_period1 = 0;
|
v20_system_para_g.system_bat_work_period2 ++;
|
if(v20_system_para_g.system_bat_work_period2 > 65530)
|
{
|
v20_system_para_g.system_bat_work_period2 = 0;
|
}
|
|
FM25V02_data_write_uint16(BAT1_TIME_SAVE_ADDR, v20_system_para_g.system_bat_work_period1);
|
FM25V02_data_write_uint16(BAT2_TIME_SAVE_ADDR, v20_system_para_g.system_bat_work_period2);
|
}else if((v20_system_para_g.system_bat_work_period1 % 600)==0)
|
{
|
FM25V02_data_write_uint16(BAT1_TIME_SAVE_ADDR, v20_system_para_g.system_bat_work_period1);
|
}
|
|
if(v20_system_para_g.system_bat_work_period2 > 65530)
|
{
|
v20_system_para_g.system_bat_work_period2 = 0;
|
}
|
|
}
|
|
if(v20_system_para_g.system_bat_power < battery_para_g.lith_power_low_valve*10 )
|
{
|
Bat_Test_Para.lith_bat_Vol_low_flag = 1;
|
}
|
else if(v20_system_para_g.system_bat_power > (battery_para_g.lith_power_low_valve*10 + 20) )
|
{
|
Bat_Test_Para.lith_bat_Vol_low_flag = 0;
|
}
|
|
if(v20_system_para_g.system_bat_power < battery_para_g.lith_power_down_valve*10 )
|
{
|
Bat_Test_Para.lith_bat_Vol_down_flag = 1;
|
}
|
else if((v20_system_para_g.system_bat_power > (battery_para_g.lith_power_down_valve*10 + 20) ))
|
{
|
Bat_Test_Para.lith_bat_Vol_down_flag = 0;
|
}
|
|
if(v20_system_para_g.system_bat_work_period2 >= BAT_TIME_SCALE4)
|
{
|
Bat_Test_Para.lith_bat_Time_down_flag = 1;
|
}
|
else if(v20_system_para_g.system_bat_work_period2 >= (BAT_TIME_SCALE4*(1-0.01*BAT_PERSENT_LCD_2)))
|
{
|
Bat_Test_Para.lith_bat_Time_low_flag = 1;
|
}
|
else
|
{
|
Bat_Test_Para.lith_bat_Time_down_flag = 0;
|
Bat_Test_Para.lith_bat_Time_low_flag = 0;
|
}
|
|
|
if((Bat_Test_Para.lith_bat_Time_low_flag == 1) || (Bat_Test_Para.lith_bat_Vol_low_flag == 1))
|
{
|
if(system_alarm_ctrl_word_g.alarm_ctl_word.lith_low == 1)
|
{
|
if(Bat_Test_Para.lith_bat_low_flag != 1)
|
{
|
Bat_Test_Para.lith_bat_low_flag = 1;
|
system_alarm_log_data_handle(ALARM_CLASS_BAT_POWER, ALARM_HAPPEN + ALARM_ID_LITH_BAT_LOW);
|
|
if(alarm_report_para_g.lith_battery_low_power_cnt<ALARM_EVERYDAY_TIMES)
|
{
|
alarm_report_para_g.lith_battery_low_power_flag =1;
|
}
|
if(alarm_report_para_g.lith_battery_low_power_cnt<250)
|
{
|
alarm_report_para_g.lith_battery_low_power_cnt ++;
|
}
|
}
|
}else
|
{
|
Bat_Test_Para.lith_bat_low_flag = 0;
|
alarm_report_para_g.lith_battery_low_power_flag = 0;
|
alarm_report_para_g.lith_battery_low_power_cnt = 0;
|
}
|
}
|
else
|
{
|
if(Bat_Test_Para.lith_bat_low_flag != 0)
|
{
|
Bat_Test_Para.lith_bat_low_flag = 0;
|
system_alarm_log_data_handle(ALARM_CLASS_BAT_POWER, ALARM_END + ALARM_ID_LITH_BAT_LOW);
|
}
|
}
|
|
if((Bat_Test_Para.lith_bat_Vol_down_flag == 1) || (Bat_Test_Para.lith_bat_Time_down_flag == 1))
|
{
|
if(system_alarm_ctrl_word_g.alarm_ctl_word.lith_down == 1)
|
{
|
if(Bat_Test_Para.lith_bat_down_flag != 1)
|
{
|
Bat_Test_Para.lith_bat_down_flag = 1;
|
flow_para_emergency_save(); //ÿ´Î¼ì²âµ½Ç·Ñ¹¶¼±£´æÖØÒª²ÎÊý
|
|
system_alarm_log_data_handle(ALARM_CLASS_BAT_POWER, ALARM_HAPPEN + ALARM_ID_LITH_BAT_DOWN);
|
|
if(alarm_report_para_g.lith_battery_down_power_cnt<ALARM_EVERYDAY_TIMES)
|
{
|
alarm_report_para_g.lith_battery_down_power_flag =1;
|
}
|
if(alarm_report_para_g.lith_battery_down_power_cnt<250)
|
{
|
alarm_report_para_g.lith_battery_down_power_cnt ++;
|
}
|
}
|
|
}else
|
{
|
Bat_Test_Para.lith_bat_down_flag = 0;
|
alarm_report_para_g.lith_battery_down_power_flag = 0;
|
alarm_report_para_g.lith_battery_down_power_cnt = 0;
|
}
|
}
|
else
|
{
|
if(Bat_Test_Para.lith_bat_down_flag != 0)
|
{
|
Bat_Test_Para.lith_bat_down_flag = 0;
|
system_alarm_log_data_handle(ALARM_CLASS_BAT_POWER, ALARM_END + ALARM_ID_LITH_BAT_DOWN);
|
}
|
}
|
|
Bat_percent_change(); //¸ù¾Ýµç³ØµçѹºÍµç³ØÊ±¼ä¼ÆÊý£¬¼ÆËãÊ£ÓàµçÁ¿°Ù·Ö±È
|
|
}
|
|
/*µç³Ø°Ù·Ö±Èת»»£¬½áºÏµç³ØÊ¹ÓÃʱ¼ä£¬¸úÏÔʾͬÀí£¬µ±µç³Øµçѹ¸ßÓڵ͵çֵʱ£¬
|
ÓÃµç³ØÊ±¼ä¼ÆËã°Ù·Ö±È£¬µ±µç³ØµçѹµÍÓڵ͵çֵʱ£¬ÓÃµç³Øµçѹ¼ÆËã°Ù·Ö±È¡£
|
*/
|
void Bat_percent_change(void)
|
{
|
if(Bat_Test_Para.lith_bat_down_flag == 1)
|
{
|
//Ƿѹ£¬ÏÔʾ¿Õ
|
v20_system_para_g.system_bat_power_percent = 0;
|
|
}else if(Bat_Test_Para.lith_bat_low_flag == 1)
|
{
|
//µÍѹ£¬ÏÔʾ1¸ñ
|
if(Bat_Test_Para.lith_bat_Time_low_flag == 1)
|
{
|
v20_system_para_g.system_bat_power_percent = (BAT_TIME_SCALE4 - v20_system_para_g.system_bat_work_period2) *100.0 / BAT_TIME_SCALE4; //µç³ØÊ±¼ä¼ÆÊý´Ó0µ½32000£¬ËùÒÔ
|
}
|
else if(Bat_Test_Para.lith_bat_Vol_low_flag == 1)
|
{
|
if(v20_system_para_g.system_bat_power <= battery_para_g.lith_power_low_valve * 10)
|
{
|
v20_system_para_g.system_bat_power_percent = 0.2*100.0 * (v20_system_para_g.system_bat_power - battery_para_g.lith_power_down_valve*10) / ((battery_para_g.lith_power_low_valve - battery_para_g.lith_power_down_valve)*10) ; //Ôݶ¨³¬¹ý7.2VΪÂúµç
|
}
|
else
|
v20_system_para_g.system_bat_power_percent = BAT_PERSENT_LCD_2; //Ôݶ¨³¬¹ý7.2VΪÂúµç
|
}
|
if(v20_system_para_g.system_bat_power_percent > BAT_PERSENT_LCD_2)
|
v20_system_para_g.system_bat_power_percent = BAT_PERSENT_LCD_2; //Ôݶ¨³¬¹ý7.2VΪÂúµç
|
|
if(v20_system_para_g.system_bat_power_percent < 0)
|
v20_system_para_g.system_bat_power_percent = 0;
|
}else
|
{
|
if(v20_system_para_g.system_bat_work_period2 < BAT_TIME_SCALE4)
|
{
|
v20_system_para_g.system_bat_power_percent = (BAT_TIME_SCALE4 - v20_system_para_g.system_bat_work_period2) *100.0 / BAT_TIME_SCALE4; //µç³ØÊ±¼ä¼ÆÊý´Ó0µ½32000£¬ËùÒÔ
|
}else
|
{
|
v20_system_para_g.system_bat_power_percent = 0;
|
}
|
}
|
if(v20_system_para_g.system_bat_power_percent > 100)
|
{
|
v20_system_para_g.system_bat_power_percent = 100;
|
}
|
}
|