forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-06-12 f03cf3ae7a36954e64fc014e6bb7afd20c5a5247
Function/STORAGE/system_mem_para.c
@@ -3,6 +3,12 @@
#include "eeprom.h"
#include "system_eep_mem_manage.h"
#include "rs485_data_analysis_pro.h"
#include "pulse_and_alarm_line.h"
#include "system_flash_mem_manage.h"
#include "sizhu_history_record.h"
#include "sizhu_alarm_record.h"
#include "sizhu_event_record.h"
#include "sizhu_para_modify_record.h"
SYSTEM_EEP_IDENTIFICATION_T system_eep_id_g = {         \
   .eep_para_init_config_id = EEP_PARA_INIT_ID,       \
@@ -26,13 +32,16 @@
FLOW_METER_PARA_T   flow_meter_para_g ={                \
   .flow_meter_conn_type = FLOW_METER_CONN_RS485, \
   .flow_meter_conn_type = FLOW_METER_CONN_RS485_AND_PULSE, \
   .flow_meter_code = SIZHUMODBUSV2_0,                 \
   .pulse_coe   = 1.0,                             \
   .pulse_width = 50,                                        \
   .baudrate_code =    BAUDRATE_9600,                       \
   .parity_bit = PARITY_NONE,                               \
   .output_voltage_code = RS485_V1_5V,           \
   .slave_address = 1, };
   .slave_address = 1,                                        \
   .broken_line_multiplex = BROKEN_LINE_MUTIPLEX_NONE,    \
};
TEM_PRE_PARA_T tem_pre_para_g = {    \
   .tem_up_limit = 70,                   \
@@ -82,7 +91,7 @@
   .ip_port2 = 9692,                                           \
   .ip2_connect_type = LINK_TCP,                       \
   .bat_power_data_interval = 60,                       \
   .ext_power_data_interval = 60,                       \
   .ext_power_data_interval = 5,                       \
   .time_start_type = WRC_TIME_START_INTERVAL,     \
   .bat_power_send_interval = 1440,                    \
   .ext_power_send_interval = 60,                       \
@@ -109,6 +118,31 @@
};
LOG_SIZHU_HISTORY_CTRL_T      log_sizhu_history_ctrl_g = {      \
   .per_month_log.log_addr_save = HISTORY_MONTH_START_ADDR,    \
   .per_day_log.log_addr_save = HISTORY_DAY_START_ADDR,    \
   .per_hour_log.log_addr_save = HISTORY_HOUR_START_ADDR,    \
   .per_interval_log.log_addr_save = HISTORY_INTERVAL_START_ADDR,    \
};
LOG_ALARM_CTRL_T log_alarm_ctrl_g ={      \
   .system_alarm_log.log_addr_save = SYSTEM_ALARM_LOG_START_ADDR,    \
};
LOG_EVENT_CTRL_T log_event_ctrl_g ={      \
   .valve_operation_log.log_addr_save = VALVE_OPERATION_EVENT_LOG_START_ADDR,    \
   .factory_reset_log.log_addr_save = FACTORY_RESET_EVENT_LOG_START_ADDR,    \
   .set_time_log.log_addr_save = SET_TIME_EVENT_LOG_START_ADDR,    \
};
LOG_PARA_MODIFY_CTRL_T   log_para_modify_ctrl_g = {      \
   .basic_info_modify_log.log_addr_save = BASIC_INFO_MODIFY_LOG_START_ADDR,    \
   .cumulate_modify_log.log_addr_save = CUMULATE_MODIFY_LOG_START_ADDR,    \
   .balance_modify_log.log_addr_save = BALANCE_MODIFY_LOG_START_ADDR,    \
   .flow_meter_para_modify_log.log_addr_save = FLOWMETER_PARA_MODIFY_LOG_START_ADDR,    \
   .conditional_close_valve_para_modify_log.log_addr_save = CONDITIONAL_CLOSE_VALVE_CTRL_MODIFY_LOG_START_ADDR,    \
   .fun_ctrl_word_modify_log.log_addr_save = FUN_CTRL_MODIFY_LOG_START_ADDR,    \
   .alarm_ctrl_word_modify_log.log_addr_save = ALARM_CTRL_MODIFY_LOG_START_ADDR,    \
   .close_valve_ctrl_word_modify_log.log_addr_save = VALVE_CTRL_BYTES_MODIFY_LOG_START_ADDR,    \
};
//EEPROM²ÎÊýдÈëºÍ¶ÁÈ¡¼ì²é,Ö»Ö§³Ö1024¸ö×Ö½ÚµÄдÈëÓë¶ÁÈ¡¼ì²é
ErrorStatus   eepWriteAndReadCheck(uint8_t * write_data,uint32_t addr,uint16_t length)
{
@@ -117,9 +151,11 @@
   if(length >1024)   
      return FAIL;
   
   EEPROM_CTRL_ENABLE;
   EEPROM_MultipleWrite(write_data,addr,length);
   
   EEPROM_MultipleRead(buf_l,addr,length);
   EEPROM_CTRL_DISABLE;
   
   return ucharcmp(write_data,buf_l,length);
}
@@ -128,6 +164,8 @@
ErrorStatus   eepABWriteAndReadCheck(uint8_t * write_data,uint32_t addrA,uint32_t addrB,uint16_t length)
{
   ErrorStatus   return_flag = PASS;
   if(eepWriteAndReadCheck(write_data,addrA,length)==FAIL)
   {
      if(eepWriteAndReadCheck(write_data,addrA,length)==FAIL)
@@ -159,6 +197,7 @@
   if(length >1024)   
      return FAIL;
   
   EEPROM_CTRL_ENABLE;
   for(count_i=0;count_i< read_times;count_i++)
   {
      memset (buf_l,0,sizeof (buf_l));
@@ -171,6 +210,7 @@
         break;
      }
   }
   EEPROM_CTRL_DISABLE;
   
   if(read_flag == PASS)
   {
@@ -178,6 +218,7 @@
      return PASS;
   }else
   {
      EEPROM_CTRL_ENABLE;
      for(count_i=0;count_i< read_times;count_i++)
      {
         memset (buf_l,0,sizeof (buf_l));
@@ -195,9 +236,11 @@
      {
         arrayA_2_arrayB(buf_l, read_data, length, LITTLE_ENDIAN) ;
         EEPROM_MultipleWrite(buf_l,addrA,length);//AÇøÐ£Ñé´íÎó£¬BÇøÕýÈ·£¬Ôò½«BÇøÊý¾ÝдÈëAÇø
         EEPROM_CTRL_DISABLE;
         return PASS;
      }else
      {
         EEPROM_CTRL_DISABLE;
         return FAIL;
      }            
   }   
@@ -270,6 +313,261 @@
//¼¸¸ö¿ØÖÆ×Ö³õʼ»¯Ð´Èë
ErrorStatus   CtrlWordParaDefaultInit(void)
{
   ErrorStatus return_flag = PASS;
   SAVE_FUN_CTRL_WORD_T   save_fun_ctrl_word_l;
   SAVE_ALARM_CTRL_WORD_T   save_alarm_ctrl_word_l;
   SAVE_VALVE_CTRL_WORD_T   save_valve_ctrl_word_l;
//   SYSTEM_FUNCTION_CTRL_WORD_T    system_function_ctrl_word_l = {        \
//      .fun_ctrl_word.billing_type = 0x02,                                       \
//   };
//   SYSTEM_ALARM_CTRL_WORD_T       system_alarm_ctrl_word_l= {.alarm_ctl_word={
//      .system_start = 1,
//      .power_state = 1,
//      .valve_error = 1,
//      .valve_state_change = 1,
//      .set_cumulate_up_to = 1,
//      .no_use_gas_date_up_to = 1,
//      .no_gprs_date_up_to = 1,
//      .balance_small_3 = 1,
//      .lith_low = 1,
//      .lith_down  = 1,
//      .lith_remove = 1,
//      .alka_low = 1,
//      .alka_down = 1,
//      .alka_remove = 1,
//      .gprs_status = 1,  //Ô¶´«Ê§°ÜÖ»±¨¾¯£¬²»Éϱ¨
//      .RS485_err = 1,
//      .RS485_lessen = 1,
//      .broken_line = 1,
//      .temp_err = 1,
//      .cpu_temp_up = 1,
//      .cpu_temp_down = 1,
//      .press_err = 1,
//      .lcd_up = 1,
//      .cl_have_flow = 1,
//      }
//   };
//
//   SYSTEM_ALARM_CTRL_WORD_T     system_alarm_report_ctrl_word_l= {.alarm_ctl_word={
//      .system_start = 1,
//      .power_state = 1,
//      .valve_error = 1,
//      .valve_state_change = 1,
//      .set_cumulate_up_to = 1,
//      .no_use_gas_date_up_to = 1,
//      .no_gprs_date_up_to = 1,
//      .balance_small_3 = 1,
//      .lith_low = 1,
//      .lith_down  = 1,
//      .lith_remove = 1,
//      .alka_low = 1,
//      .alka_down = 1,
//      .alka_remove = 1,
//      //.gprs_status = 1,  //Ô¶´«Ê§°ÜÖ»±¨¾¯£¬²»Éϱ¨
//      .RS485_err = 1,
//      .RS485_lessen = 1,
//      .broken_line = 1,
//      .temp_err = 1,
//      .cpu_temp_up = 1,
//      .cpu_temp_down = 1,
//      .press_err = 1,
//      .lcd_up = 1,
//      .cl_have_flow = 1,
//      }
//   };
//
//   VALVE_CTL_BYTES_UNION_T valve_ctl_bytes_l = {.valve_ctrl_bytes = {
//      {0},
//      {0},
//      {0},
//      {.lith_down_need_close_valve_flag =1,.lith_down_close_valve_type = 1,.lith_remove_need_close_valve_flag =1,.lith_remove_close_valve_type =1,
//      //.alka_down_need_close_valve_flag= 1,.alka_down_close_valve_type = 1,.alka_remove_need_close_valve_flag =1,.alka_remove_close_valve_type =1,
//      },
//      {0},
//      {0},
//      {0},
//      {0},
//      {0},
//      {0},
//      {0},}
//   };
   arrayA_2_arrayB((uint8_t*)&system_function_ctrl_word_g,(uint8_t*)&save_fun_ctrl_word_l.fun_ctrl_word,sizeof(system_function_ctrl_word_g),LITTLE_ENDIAN);
   arrayA_2_arrayB((uint8_t*)&system_alarm_ctrl_word_g,(uint8_t*)&save_alarm_ctrl_word_l.alarm_ctrl_word,sizeof(system_alarm_ctrl_word_g),LITTLE_ENDIAN);
   arrayA_2_arrayB((uint8_t*)&system_alarm_report_ctrl_word_g,(uint8_t*)&save_alarm_ctrl_word_l.alarm_report_ctrl_word,sizeof(system_alarm_report_ctrl_word_g),LITTLE_ENDIAN);
   arrayA_2_arrayB((uint8_t*)&valve_ctl_bytes_g,(uint8_t*)&save_valve_ctrl_word_l.valve_ctrl_word,sizeof(valve_ctl_bytes_g),LITTLE_ENDIAN);
   if(paraCalcCrcAndWriteEepAB((uint8_t * )&save_fun_ctrl_word_l,SYSTEM_FUNCTION_CTRL_WORD_ADDR,SYSTEM_FUNCTION_CTRL_WORD_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(save_fun_ctrl_word_l))==FAIL)
      return_flag = FAIL;
   if(paraCalcCrcAndWriteEepAB((uint8_t * )&save_alarm_ctrl_word_l,SYSTEM_ALARM_CTRL_WORD_ADDR,SYSTEM_ALARM_CTRL_WORD_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(save_alarm_ctrl_word_l))==FAIL)
      return_flag = FAIL;
   if(paraCalcCrcAndWriteEepAB((uint8_t * )&save_valve_ctrl_word_l,VALVE_CTL_BYTES_ADDR,VALVE_CTL_BYTES_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(save_valve_ctrl_word_l))==FAIL)
      return_flag = FAIL;
   return return_flag;
}
//¼¸¸ö¿ØÖÆ×Ö¶ÁÈ¡
ErrorStatus   CtrlWordParaReadFromEep(void)
{
   ErrorStatus return_flag = PASS;
   SAVE_FUN_CTRL_WORD_T   save_fun_ctrl_word_l;
   SAVE_ALARM_CTRL_WORD_T   save_alarm_ctrl_word_l;
   SAVE_VALVE_CTRL_WORD_T   save_valve_ctrl_word_l;
   if(   eepABReadCheck((uint8_t * )&save_fun_ctrl_word_l,SYSTEM_FUNCTION_CTRL_WORD_ADDR,SYSTEM_FUNCTION_CTRL_WORD_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(save_fun_ctrl_word_l)) == FAIL)
   {
      return_flag = FAIL;
   }else
   {
      arrayA_2_arrayB((uint8_t*)&save_fun_ctrl_word_l.fun_ctrl_word,(uint8_t*)&system_function_ctrl_word_g,sizeof(system_function_ctrl_word_g),LITTLE_ENDIAN);
   }
   if(   eepABReadCheck((uint8_t * )&save_alarm_ctrl_word_l,SYSTEM_ALARM_CTRL_WORD_ADDR,SYSTEM_ALARM_CTRL_WORD_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(save_alarm_ctrl_word_l)) == FAIL)
   {
      return_flag = FAIL;
   }else
   {
      arrayA_2_arrayB((uint8_t*)&save_alarm_ctrl_word_l.alarm_ctrl_word,(uint8_t*)&system_alarm_ctrl_word_g,sizeof(system_alarm_ctrl_word_g),LITTLE_ENDIAN);
      arrayA_2_arrayB((uint8_t*)&save_alarm_ctrl_word_l.alarm_report_ctrl_word,(uint8_t*)&system_alarm_report_ctrl_word_g,sizeof(system_alarm_report_ctrl_word_g),LITTLE_ENDIAN);
   }
   if(   eepABReadCheck((uint8_t * )&save_valve_ctrl_word_l,VALVE_CTL_BYTES_ADDR,VALVE_CTL_BYTES_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(save_valve_ctrl_word_l)) == FAIL)
   {
      return_flag = FAIL;
   }else
   {
      arrayA_2_arrayB((uint8_t*)&save_valve_ctrl_word_l.valve_ctrl_word,(uint8_t*)&valve_ctl_bytes_g,sizeof(valve_ctl_bytes_g),LITTLE_ENDIAN);
   }
}
//ÈÕÖ¾¿ØÖƲÎÊý³õʼ»¯Ð´Èë
ErrorStatus   LogCtrlParaDefaultInit(void)
{
   ErrorStatus return_flag = PASS;
   log_sizhu_history_ctrl_g.per_month_log.log_count = 0;
   log_sizhu_history_ctrl_g.per_month_log.log_addr_save = HISTORY_MONTH_START_ADDR;
   log_sizhu_history_ctrl_g.per_day_log.log_count = 0;
   log_sizhu_history_ctrl_g.per_day_log.log_addr_save = HISTORY_DAY_START_ADDR;
   log_sizhu_history_ctrl_g.per_hour_log.log_count = 0;
   log_sizhu_history_ctrl_g.per_hour_log.log_addr_save = HISTORY_HOUR_START_ADDR;
   log_sizhu_history_ctrl_g.per_interval_log.log_count = 0;
   log_sizhu_history_ctrl_g.per_interval_log.log_addr_save = HISTORY_INTERVAL_START_ADDR;
   log_alarm_ctrl_g.system_alarm_log.log_count = 0;
   log_alarm_ctrl_g.system_alarm_log.log_addr_save = SYSTEM_ALARM_LOG_START_ADDR;
   log_event_ctrl_g.valve_operation_log.log_count = 0;
   log_event_ctrl_g.valve_operation_log.log_addr_save = VALVE_OPERATION_EVENT_LOG_START_ADDR;
   log_event_ctrl_g.factory_reset_log.log_count = 0;
   log_event_ctrl_g.factory_reset_log.log_addr_save = FACTORY_RESET_EVENT_LOG_START_ADDR;
   log_event_ctrl_g.set_time_log.log_count = 0;
   log_event_ctrl_g.set_time_log.log_addr_save = SET_TIME_EVENT_LOG_START_ADDR;
   log_para_modify_ctrl_g.basic_info_modify_log.log_count = 0;
   log_para_modify_ctrl_g.basic_info_modify_log.log_addr_save = BASIC_INFO_MODIFY_LOG_START_ADDR;
   log_para_modify_ctrl_g.cumulate_modify_log.log_count = 0;
   log_para_modify_ctrl_g.cumulate_modify_log.log_addr_save = CUMULATE_MODIFY_LOG_START_ADDR;
   log_para_modify_ctrl_g.balance_modify_log.log_count = 0;
   log_para_modify_ctrl_g.balance_modify_log.log_addr_save = BALANCE_MODIFY_LOG_START_ADDR;
   log_para_modify_ctrl_g.flow_meter_para_modify_log.log_count = 0;
   log_para_modify_ctrl_g.flow_meter_para_modify_log.log_addr_save = FLOWMETER_PARA_MODIFY_LOG_START_ADDR;
   log_para_modify_ctrl_g.conditional_close_valve_para_modify_log.log_count = 0;
   log_para_modify_ctrl_g.conditional_close_valve_para_modify_log.log_addr_save = CONDITIONAL_CLOSE_VALVE_CTRL_MODIFY_LOG_START_ADDR;
   log_para_modify_ctrl_g.fun_ctrl_word_modify_log.log_count = 0;
   log_para_modify_ctrl_g.fun_ctrl_word_modify_log.log_addr_save = FUN_CTRL_MODIFY_LOG_START_ADDR;
   log_para_modify_ctrl_g.alarm_ctrl_word_modify_log.log_count = 0;
   log_para_modify_ctrl_g.alarm_ctrl_word_modify_log.log_addr_save = ALARM_CTRL_MODIFY_LOG_START_ADDR;
   log_para_modify_ctrl_g.close_valve_ctrl_word_modify_log.log_count = 0;
   log_para_modify_ctrl_g.close_valve_ctrl_word_modify_log.log_addr_save = VALVE_CTRL_BYTES_MODIFY_LOG_START_ADDR;
   if(paraCalcCrcAndWriteEepAB((uint8_t * )&log_sizhu_history_ctrl_g,LOG_SIZHU_HISTORY_CTRL_ADDR,LOG_SIZHU_HISTORY_CTRL_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(log_sizhu_history_ctrl_g))==FAIL)
      return_flag = FAIL;
   if(paraCalcCrcAndWriteEepAB((uint8_t * )&log_alarm_ctrl_g,LOG_ALARM_CTRL_ADDR,LOG_ALARM_CTRL_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(log_alarm_ctrl_g))==FAIL)
      return_flag = FAIL;
   if(paraCalcCrcAndWriteEepAB((uint8_t * )&log_event_ctrl_g,LOG_EVENT_CTRL_ADDR,LOG_EVENT_CTRL_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(log_event_ctrl_g))==FAIL)
      return_flag = FAIL;
   if(paraCalcCrcAndWriteEepAB((uint8_t * )&log_para_modify_ctrl_g,LOG_PARA_MODIFY_CTRL_ADDR,LOG_PARA_MODIFY_CTRL_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(log_para_modify_ctrl_g))==FAIL)
      return_flag = FAIL;
   return return_flag;
}
//ÈÕÖ¾¿ØÖƲÎÊý³õʼ»¯¶ÁÈ¡
ErrorStatus   LogCtrlParaReadFromEep(void)
{
   ErrorStatus return_flag = PASS;
   if(   eepABReadCheck((uint8_t * )&log_sizhu_history_ctrl_g,LOG_SIZHU_HISTORY_CTRL_ADDR,LOG_SIZHU_HISTORY_CTRL_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(log_sizhu_history_ctrl_g)) == FAIL)
   {
      log_sizhu_history_ctrl_g.per_month_log.log_count = 0;
      log_sizhu_history_ctrl_g.per_month_log.log_addr_save = HISTORY_MONTH_START_ADDR;
      log_sizhu_history_ctrl_g.per_day_log.log_count = 0;
      log_sizhu_history_ctrl_g.per_day_log.log_addr_save = HISTORY_DAY_START_ADDR;
      log_sizhu_history_ctrl_g.per_hour_log.log_count = 0;
      log_sizhu_history_ctrl_g.per_hour_log.log_addr_save = HISTORY_HOUR_START_ADDR;
      log_sizhu_history_ctrl_g.per_interval_log.log_count = 0;
      log_sizhu_history_ctrl_g.per_interval_log.log_addr_save = HISTORY_INTERVAL_START_ADDR;
      paraCalcCrcAndWriteEepAB((uint8_t * )&log_sizhu_history_ctrl_g,LOG_SIZHU_HISTORY_CTRL_ADDR,LOG_SIZHU_HISTORY_CTRL_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(log_sizhu_history_ctrl_g));
      return_flag = FAIL;
   }
   if(   eepABReadCheck((uint8_t * )&log_alarm_ctrl_g,LOG_ALARM_CTRL_ADDR,LOG_ALARM_CTRL_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(log_alarm_ctrl_g)) == FAIL)
   {
      log_alarm_ctrl_g.system_alarm_log.log_count = 0;
      log_alarm_ctrl_g.system_alarm_log.log_addr_save = SYSTEM_ALARM_LOG_START_ADDR;
      paraCalcCrcAndWriteEepAB((uint8_t * )&log_alarm_ctrl_g,LOG_ALARM_CTRL_ADDR,LOG_ALARM_CTRL_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(log_alarm_ctrl_g));
      return_flag = FAIL;
   }
   if(   eepABReadCheck((uint8_t * )&log_event_ctrl_g,LOG_EVENT_CTRL_ADDR,LOG_EVENT_CTRL_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(log_event_ctrl_g)) == FAIL)
   {
      log_event_ctrl_g.valve_operation_log.log_count = 0;
      log_event_ctrl_g.valve_operation_log.log_addr_save = VALVE_OPERATION_EVENT_LOG_START_ADDR;
      log_event_ctrl_g.factory_reset_log.log_count = 0;
      log_event_ctrl_g.factory_reset_log.log_addr_save = FACTORY_RESET_EVENT_LOG_START_ADDR;
      log_event_ctrl_g.set_time_log.log_count = 0;
      log_event_ctrl_g.set_time_log.log_addr_save = SET_TIME_EVENT_LOG_START_ADDR;
      paraCalcCrcAndWriteEepAB((uint8_t * )&log_event_ctrl_g,LOG_EVENT_CTRL_ADDR,LOG_EVENT_CTRL_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(log_event_ctrl_g));
      return_flag = FAIL;
   }
   if(   eepABReadCheck((uint8_t * )&log_para_modify_ctrl_g,LOG_PARA_MODIFY_CTRL_ADDR,LOG_PARA_MODIFY_CTRL_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(log_para_modify_ctrl_g)) == FAIL)
   {
      log_para_modify_ctrl_g.basic_info_modify_log.log_count = 0;
      log_para_modify_ctrl_g.basic_info_modify_log.log_addr_save = BASIC_INFO_MODIFY_LOG_START_ADDR;
      log_para_modify_ctrl_g.cumulate_modify_log.log_count = 0;
      log_para_modify_ctrl_g.cumulate_modify_log.log_addr_save = CUMULATE_MODIFY_LOG_START_ADDR;
      log_para_modify_ctrl_g.balance_modify_log.log_count = 0;
      log_para_modify_ctrl_g.balance_modify_log.log_addr_save = BALANCE_MODIFY_LOG_START_ADDR;
      log_para_modify_ctrl_g.flow_meter_para_modify_log.log_count = 0;
      log_para_modify_ctrl_g.flow_meter_para_modify_log.log_addr_save = FLOWMETER_PARA_MODIFY_LOG_START_ADDR;
      log_para_modify_ctrl_g.conditional_close_valve_para_modify_log.log_count = 0;
      log_para_modify_ctrl_g.conditional_close_valve_para_modify_log.log_addr_save = CONDITIONAL_CLOSE_VALVE_CTRL_MODIFY_LOG_START_ADDR;
      log_para_modify_ctrl_g.fun_ctrl_word_modify_log.log_count = 0;
      log_para_modify_ctrl_g.fun_ctrl_word_modify_log.log_addr_save = FUN_CTRL_MODIFY_LOG_START_ADDR;
      log_para_modify_ctrl_g.alarm_ctrl_word_modify_log.log_count = 0;
      log_para_modify_ctrl_g.alarm_ctrl_word_modify_log.log_addr_save = ALARM_CTRL_MODIFY_LOG_START_ADDR;
      log_para_modify_ctrl_g.close_valve_ctrl_word_modify_log.log_count = 0;
      log_para_modify_ctrl_g.close_valve_ctrl_word_modify_log.log_addr_save = VALVE_CTRL_BYTES_MODIFY_LOG_START_ADDR;
      paraCalcCrcAndWriteEepAB((uint8_t * )&log_para_modify_ctrl_g,LOG_PARA_MODIFY_CTRL_ADDR,LOG_PARA_MODIFY_CTRL_ADDR + PARA_EEP_B_OFFSET_ADDR,sizeof(log_para_modify_ctrl_g));
      return_flag = FAIL;
   }
   return return_flag;
}
//?ËùÓвÎÊý³õʼ»¯ÎªÄ¬ÈÏÖµ²¢Ð´ÈëEEPROM
void allParaDefaultInit(void)
{
@@ -281,13 +579,21 @@
   //É豸»ù´¡ÐÅÏ¢³õʼ»¯Ð´Èë
   if(EquipmentBasicInfoDefaultInit()==FAIL) return_flag = FAIL;
   
   //?¼ÌÐø²¹³ä£¬°üÀ¨¿ØÖÆÈÕÖ¾´æ´¢µÄ²ÎÊý
   //?¼ÌÐø²¹³ä
   
   //ʵʱÊý¾Ý³õʼ»¯Ð´Èë
   
   //×îÖÕÅжÏreturn_flag==FAIL£¬Ôò±¨¾¯´æ´¢Òì³££¬Èç¹û»¹ÓÐÕâ¸ö±¨¾¯µÄ»°
   //¼¸¸ö¿ØÖÆ×Ö³õʼ»¯Ð´Èë
   if(CtrlWordParaDefaultInit()==FAIL) return_flag = FAIL;
   
   //ÈÕÖ¾¿ØÖƲÎÊý
   if(LogCtrlParaDefaultInit()==FAIL) return_flag = FAIL;
   //×îÖÕÅжÏreturn_flag==FAIL£¬Ôò±¨¾¯´æ´¢Òì³££¬Èç¹û»¹ÓÐÕâ¸ö±¨¾¯µÄ»°
   if(return_flag==FAIL){
      ;
   }
}
@@ -303,11 +609,18 @@
   //É豸»ù´¡ÐÅÏ¢¶ÁÈ¡
   if(EquipmentBasicInfoReadFromEep()==FAIL) return_flag = FAIL;
   
   //?¼ÌÐø²¹³ä
   //¼¸¸ö¿ØÖÆ×Ö¶ÁÈ¡
   if(CtrlWordParaReadFromEep()==FAIL) return_flag = FAIL;
   
   //?¼ÌÐø²¹³ä£¬°üÀ¨¿ØÖÆÈÕÖ¾´æ´¢µÄ²ÎÊý
   //ÈÕÖ¾¿ØÖÆÐÅÏ¢¶ÁÈ¡
   if(LogCtrlParaReadFromEep()==FAIL) return_flag = FAIL;
   
   //×îÖÕÅжÏreturn_flag==FAIL£¬Ôò±¨¾¯´æ´¢Òì³££¬Èç¹û»¹ÓÐÕâ¸ö±¨¾¯µÄ»°
   if(return_flag==FAIL){
      ;
   }
}