#include "system_mem_para.h"
|
#include "mbcrc1.h"
|
#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, \
|
.eep_para_patch_id = LAST_PATCH_ID, \
|
};
|
EQUIPMENT_BASIC_INF_T equipment_basic_inf_g={
|
.product_type= DM_SCM_SZV103, \
|
.caliber_type = DN50_TYPE, \
|
.serial_number = {0x07,0x10,0x50,0x82,0x40,0x69,0x00,0x01,0xff,0xff}, \
|
.valve_type = VM_HADE, \
|
.equipment_type = EM_SIFRCT,};
|
|
MAIN_EQUIPM_HARDWARE_SOFTWARE_INF_T main_equipment_hardware_software_inf_g;
|
LCD_EQUIPM_HARDWARE_SOFTWARE_INF_T lcd_equipment_hardware_software_inf_g;
|
WIRELESS_EQUIPM_HARDWARE_SOFTWARE_INF_T wireless_equipment_hardware_software_inf_g;
|
__IO SAVE_REALTIME_DATA_T save_realtime_data_g;
|
|
__IO SAVE_VALVE_PARA_T save_valve_para_g={ \
|
.valve_status = VALVE_NONE, \
|
.valve_lock_state = VL_UNLOCK,};
|
|
|
FLOW_METER_PARA_T flow_meter_para_g ={ \
|
.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, \
|
.broken_line_multiplex = BROKEN_LINE_MUTIPLEX_NONE, \
|
};
|
|
TEM_PRE_PARA_T tem_pre_para_g = { \
|
.tem_up_limit = 70, \
|
.tem_up_up_limit = 70, \
|
.tem_low_limit = -20, \
|
.tem_low_low_limit = -25, \
|
.ambient_tem_up_limit = 60, \
|
.ambient_tem_low_limit = -25, \
|
.pre_up_limit = 1600, \
|
.pre_up_up_limit = 1920, \
|
.pre_low_limit = 70, \
|
.pre_low_low_limit = 70, \
|
};
|
|
MEASURE_FREEZE_PARA_T measure_freeze_para_g = { \
|
.freeze_interval = 60, \
|
.daily_freeze_time_BCD = {0x00,0x00}, \
|
};
|
|
BAT_PARA_T bat_para_g = { \
|
.lith_bat_low_v = 55, \
|
.lith_bat_under_v = 50, \
|
.alka_bat_low_v = 55, \
|
.alka_bat_under_v = 50, \
|
.lith_bat_max_hour = 26280, \
|
.lith_bat_used_hour = 0, \
|
.lith_bat_used_sec = 0, \
|
};
|
|
LOGIN_PASSWORD_T login_passeord_g = { \
|
.PC_general_user_password = {0x68,0x68}, \
|
.PC_advanced_user_password = {0x52,0x86}, \
|
.PC_manage_user_password = {0x75,0x97}, \
|
};
|
|
UP_COMM_PARA_T up_comm_para_g = { \
|
.slave_address = 1, \
|
.baudrate_code = BAUDRATE_115200, \
|
.parity_bit = PARITY_NONE, \
|
};
|
|
WRC_PARA_SIZHU_T wrc_para_sizhu_g = { \
|
.ip1 = {39,108,81,105}, \
|
.ip_port1 = 9692, \
|
.ip1_connect_type = LINK_TCP, \
|
.ip2 = {120,77,85,236}, \
|
.ip_port2 = 9692, \
|
.ip2_connect_type = LINK_TCP, \
|
.bat_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, \
|
.send_first_time_BCD ={0x05,0x20} , \
|
.timing_send_num = 1, \
|
.timing_send_time_BCD = {{0x05,0x20}}, \
|
.retransmission_interval = 10, \
|
.retransmission_num = 0, \
|
.comm_timeout_time =120, \
|
.KVer_AES_128[0] ={8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0}, \
|
};
|
WRC_DATA_NUM_CTRL_PARA_SIZHU_T wrc_data_num_ctrl_para_sizhu_g={ \
|
.report_data_save_num = 0, \
|
.report_data_left_num = 0, \
|
};
|
|
BILLING_VALVE_CTRL_PATA_T billing_valve_ctrl_para_g = { \
|
.balance_valve_ctrl_byte = {0}, \
|
.conditional_valve_ctrl_byte = {0}, \
|
.balance_small_value = {500,100,0,0,0}, \
|
.cumulate_flow_threshold = 0, \
|
.no_wrc_days = 15, \
|
.no_use_gas_days = 0, \
|
};
|
|
|
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)
|
{
|
uint8_t buf_l[1024];
|
|
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);
|
}
|
|
//EEPROM²ÎÊýABÇø¶à·ÝдÈëºÍ¶ÁÈ¡¼ì²é
|
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)
|
{
|
return_flag = FAIL;
|
}
|
}
|
|
if(eepWriteAndReadCheck(write_data,addrB,length)==FAIL)
|
{
|
if(eepWriteAndReadCheck(write_data,addrB,length)==FAIL)
|
{
|
return_flag = FAIL;
|
}
|
}
|
|
return return_flag;
|
}
|
|
//EEPROM²ÎÊý¶ÁÈ¡²¢¼ì²é£¬Ö»Ö§³Ö×î´ó1024×Ö½Ú¶ÁÈ¡
|
ErrorStatus eepABReadCheck(uint8_t * read_data,uint32_t addrA,uint32_t addrB,uint16_t length)
|
{
|
ErrorStatus read_flag = FAIL;
|
uint16_t CRC16_MODBUS;
|
uint8_t buf_l[1024]={0};
|
const uint8_t read_times = 2;
|
uint8_t count_i = 0;
|
|
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));
|
EEPROM_MultipleRead(buf_l,addrA,length);
|
CRC16_MODBUS = usMBCRC16(0xFFFF, &buf_l[CRC16_MODBUS_OFFSET], length - CRC16_MODBUS_OFFSET );
|
|
if((buf_l[1]*256 + buf_l[0])==CRC16_MODBUS)
|
{
|
read_flag = PASS;
|
break;
|
}
|
}
|
EEPROM_CTRL_DISABLE;
|
|
if(read_flag == PASS)
|
{
|
arrayA_2_arrayB(buf_l, read_data, length, LITTLE_ENDIAN) ;
|
return PASS;
|
}else
|
{
|
EEPROM_CTRL_ENABLE;
|
for(count_i=0;count_i< read_times;count_i++)
|
{
|
memset (buf_l,0,sizeof (buf_l));
|
EEPROM_MultipleRead(buf_l,addrB,length);
|
CRC16_MODBUS = usMBCRC16(0xFFFF, &buf_l[CRC16_MODBUS_OFFSET], length - CRC16_MODBUS_OFFSET );
|
|
if((buf_l[1]*256 + buf_l[0])==CRC16_MODBUS)
|
{
|
read_flag = PASS;
|
break;
|
}
|
}
|
|
if(read_flag == PASS)
|
{
|
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;
|
}
|
}
|
}
|
|
//²ÎÊý¼ÆËãCRCºóÔÙдÈëAB´æ´¢Çø
|
ErrorStatus paraCalcCrcAndWriteEepAB(uint8_t * write_data,uint32_t addrA,uint32_t addrB,uint16_t length)
|
{
|
uint16_t CRC16_MODBUS;
|
|
CRC16_MODBUS = usMBCRC16(0xFFFF, write_data + CRC16_MODBUS_OFFSET, length - CRC16_MODBUS_OFFSET );
|
|
*write_data = CRC16_MODBUS&0xff;
|
*(write_data + 1) = (CRC16_MODBUS>>8)&0xff;
|
|
if(eepABWriteAndReadCheck(write_data,addrA,addrB,length) == FAIL)
|
{
|
return FAIL;
|
}else
|
{
|
return PASS;
|
}
|
}
|
|
|
//ϵͳ´æ´¢±êʶ³õʼ»¯Ð´Èë
|
ErrorStatus systemEepIdDefaultInit(void)
|
{
|
system_eep_id_g.eep_para_init_config_id = EEP_PARA_INIT_ID;
|
system_eep_id_g.eep_para_patch_id = LAST_PATCH_ID;
|
memset(system_eep_id_g.reserve,0,sizeof (system_eep_id_g.reserve));
|
|
return paraCalcCrcAndWriteEepAB((uint8_t * )&system_eep_id_g,SYSTEM_EEP_ID_ADDR,SYSTEM_EEP_ID_ADDR + PARA_EEP_B_OFFSET_ADDR,SYSTEM_EEP_IDENTIFICATION_LENGTH);
|
}
|
|
//ϵͳ´æ´¢±êʶ¶ÁÈ¡
|
ErrorStatus systemEepIdReadFromEep(void)
|
{
|
if( eepABReadCheck((uint8_t * )&system_eep_id_g,SYSTEM_EEP_ID_ADDR,SYSTEM_EEP_ID_ADDR + PARA_EEP_B_OFFSET_ADDR,SYSTEM_EEP_IDENTIFICATION_LENGTH) == FAIL)
|
{
|
systemEepIdDefaultInit();
|
return FAIL;
|
}else
|
{
|
return PASS;
|
}
|
}
|
|
|
|
//É豸»ù´¡ÐÅÏ¢³õʼ»¯Ð´Èë
|
ErrorStatus EquipmentBasicInfoDefaultInit(void)
|
{
|
return paraCalcCrcAndWriteEepAB((uint8_t * )&equipment_basic_inf_g,BASIC_INFORMATION_OF_EQUIPMENT_ADDR,BASIC_INFORMATION_OF_EQUIPMENT_ADDR + PARA_EEP_B_OFFSET_ADDR,EQUIPMENT_BASIC_INF_LENGTH);
|
}
|
|
//É豸»ù´¡ÐÅÏ¢¶ÁÈ¡
|
ErrorStatus EquipmentBasicInfoReadFromEep(void)
|
{
|
if( eepABReadCheck((uint8_t * )&equipment_basic_inf_g,BASIC_INFORMATION_OF_EQUIPMENT_ADDR,BASIC_INFORMATION_OF_EQUIPMENT_ADDR + PARA_EEP_B_OFFSET_ADDR,EQUIPMENT_BASIC_INF_LENGTH) == FAIL)
|
{
|
EquipmentBasicInfoDefaultInit();
|
return FAIL;
|
}else
|
{
|
return PASS;
|
}
|
}
|
|
|
|
|
|
|
|
//¼¸¸ö¿ØÖÆ×Ö³õʼ»¯Ð´Èë
|
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)
|
{
|
ErrorStatus return_flag = PASS;
|
//ϵͳ´æ´¢±êʶ³õʼ»¯Ð´Èë
|
if(systemEepIdDefaultInit()==FAIL) return_flag = FAIL;
|
|
|
//É豸»ù´¡ÐÅÏ¢³õʼ»¯Ð´Èë
|
if(EquipmentBasicInfoDefaultInit()==FAIL) return_flag = FAIL;
|
|
//?¼ÌÐø²¹³ä
|
|
//ʵʱÊý¾Ý³õʼ»¯Ð´Èë
|
|
//¼¸¸ö¿ØÖÆ×Ö³õʼ»¯Ð´Èë
|
if(CtrlWordParaDefaultInit()==FAIL) return_flag = FAIL;
|
|
//ÈÕÖ¾¿ØÖƲÎÊý
|
if(LogCtrlParaDefaultInit()==FAIL) return_flag = FAIL;
|
|
|
//×îÖÕÅжÏreturn_flag==FAIL£¬Ôò±¨¾¯´æ´¢Òì³££¬Èç¹û»¹ÓÐÕâ¸ö±¨¾¯µÄ»°
|
if(return_flag==FAIL){
|
;
|
}
|
}
|
|
|
|
|
//?ËùÓвÎÊýÖ±½Ó¶ÁÈ¡
|
void allParaReadFromEep(void)
|
{
|
ErrorStatus return_flag = PASS;
|
//ϵͳ´æ´¢±êʶ¶ÁÈ¡
|
if(systemEepIdReadFromEep()==FAIL) return_flag = FAIL;
|
|
//É豸»ù´¡ÐÅÏ¢¶ÁÈ¡
|
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){
|
;
|
}
|
}
|
|
|
|
//²¹¶¡1
|
void eepParaPatchPro_1(void)
|
{
|
//¿Õ
|
}
|
|
//²¹¶¡2
|
void eepParaPatchPro_2(void)
|
{
|
//½«ÐèÒª³õʼ»¯µÄ²ÎÊýÐÞ¸ÄÖ®ºó£¬ÔÙÖØÐ´洢
|
|
}
|
|
|
void allParaPatchPro(void)
|
{
|
uint8_t patch_id_need_write = 0 ; //·Ç0´ú±íÐèÒªÖØÐÂдpatch_idµ½´æ´¢
|
|
//¿ÉÒÔ¿¼ÂDz¹¶¡±êʶµÄʶ±ð£¬Ò»°ãÀ´ËµÐ¡ÓÚEEP_PARA_PATCH_ID_1 »òÕß´óÓÚ0x50000000ÊÇ´íÎóµÄ£¬³öÏÖ×ÖĸҲÊÇ´íÎóµÄ
|
|
|
if(system_eep_id_g.eep_para_patch_id < EEP_PARA_PATCH_ID_1)
|
{
|
eepParaPatchPro_1();
|
system_eep_id_g.eep_para_patch_id = EEP_PARA_PATCH_ID_1;
|
patch_id_need_write = 1;
|
|
}
|
|
|
//´Ë´¦¼ÌÐøÔö¼ÓºóÐø²¹¶¡
|
// if(system_eep_id_g.eep_para_patch_id < EEP_PARA_PATCH_ID_2)
|
// {
|
// eepParaPatchPro_2();
|
// system_eep_id_g.eep_para_patch_id = EEP_PARA_PATCH_ID_2;
|
// patch_id_need_write = 1;
|
// }
|
|
|
|
|
if(patch_id_need_write!=0)
|
{
|
paraCalcCrcAndWriteEepAB((uint8_t * )&system_eep_id_g,SYSTEM_EEP_ID_ADDR,SYSTEM_EEP_ID_ADDR + PARA_EEP_B_OFFSET_ADDR,SYSTEM_EEP_IDENTIFICATION_LENGTH);
|
}
|
}
|