| | |
| | | #include "sizhu_alarm_record.h" |
| | | #include "sizhu_ctrl_word.h" |
| | | #include "eeprom.h" |
| | | #include "system_mem_para.h" |
| | | #include "rs485_data_analysis_pro.h" |
| | | #include "power_manage.h" |
| | | #include "mbcrc1.h" |
| | | #include "system_flash_mem_manage.h" |
| | | #include "system_eep_mem_manage.h" |
| | | |
| | | LOG_ALARM_CTRL_T log_alarm_para_g; |
| | | //ALARM_REPORT_PARA_T alarm_report_para_g; |
| | | |
| | | |
| | | /****************************************** |
| | | * func: system_alarm_log_eeprom_default_init |
| | | * desc: ±¨¾¯ÈÕÖ¾´æ´¢²ÎÊý³õʼ»¯ÎªÄ¬ÈÏÖµ |
| | | * input: none |
| | | * output: none |
| | | * return: none |
| | | *****************************************/ |
| | | uint8_t system_alarm_log_eeprom_default_init(void) |
| | | { |
| | | // log_alarm_para_g.system_alarm_log.log_count = 0; |
| | | // log_alarm_para_g.system_alarm_log.log_addr_save = SYSTEM_ALARM_LOG_STORAGE_START_ADDR; |
| | | // EEPROM_data_write_uint16 ( log_alarm_para_g.system_alarm_log.log_count, SYSTEM_ALARM_LOG_COUNT_ADDR ); |
| | | // EEPROM_data_write_uint32 ( log_alarm_para_g.system_alarm_log.log_addr_save, SYSTEM_ALARM_LOG_SAVE_ADDR ); |
| | | // |
| | | // log_alarm_para_g.class_measure_abn.log_count = 0; |
| | | // log_alarm_para_g.class_measure_abn.log_addr_save = MEASURE_ALARM_LOG_STORAGE_START_ADDR; |
| | | // EEPROM_data_write_uint16 ( log_alarm_para_g.class_measure_abn.log_count, MEASURE_ALARM_LOG_COUNT_ADDR ); |
| | | // EEPROM_data_write_uint32 ( log_alarm_para_g.class_measure_abn.log_addr_save, MEASURE_ALARM_LOG_SAVE_ADDR ); |
| | | |
| | | // log_alarm_para_g.valve_action_log.log_count = 0; |
| | | // log_alarm_para_g.valve_action_log.log_addr_save = VALVE_ACTION_LOG_STORAGE_START_ADDR; |
| | | // EEPROM_data_write_uint16 ( log_alarm_para_g.valve_action_log.log_count, VALVE_ACTION_LOG_COUNT_ADDR ); |
| | | // EEPROM_data_write_uint32 ( log_alarm_para_g.valve_action_log.log_addr_save, VALVE_ACTION_LOG_SAVE_ADDR ); |
| | | return 0; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /****************************************** |
| | | * func: system_alarm_log_eeprom_default_init |
| | | * desc: ±¨¾¯ÈÕÖ¾´æ´¢²ÎÊý´Ó´æ´¢ÖлñÈ¡ |
| | | * input: none |
| | | * output: none |
| | | * return: none |
| | | *****************************************/ |
| | | uint8_t system_alarm_log_record_only_read_init(void) |
| | | { |
| | | |
| | | // log_alarm_para_g.system_alarm_log.log_count = eeprom_data_read_uint16 ( SYSTEM_ALARM_LOG_COUNT_ADDR ); |
| | | // log_alarm_para_g.system_alarm_log.log_addr_save = eeprom_data_read_uint32 ( SYSTEM_ALARM_LOG_SAVE_ADDR ); |
| | | // |
| | | // if((log_alarm_para_g.system_alarm_log.log_addr_save > SYSTEM_ALARM_LOG_STORAGE_END_ADDR)||(log_alarm_para_g.system_alarm_log.log_addr_save < SYSTEM_ALARM_LOG_STORAGE_START_ADDR)) |
| | | // { |
| | | // log_alarm_para_g.system_alarm_log.log_count = 0; |
| | | // log_alarm_para_g.system_alarm_log.log_addr_save = SYSTEM_ALARM_LOG_STORAGE_START_ADDR; |
| | | // } |
| | | return 0; |
| | | } |
| | | |
| | | |
| | | /****************************************** |
| | |
| | | { |
| | | // void *alarm_ptr; |
| | | // |
| | | // eeprom_multiple_data_write( (uint8_t *)para_alarm_ptr, log_alarm_para_g.system_alarm_log.log_addr_save, SYSTEM_ALARM_LOG_STORAGE_LENGTH ); |
| | | // eeprom_multiple_data_write( (uint8_t *)para_alarm_ptr, log_alarm_ctrl_g.system_alarm_log.log_addr_save, SYSTEM_ALARM_LOG_STORAGE_LENGTH ); |
| | | // |
| | | // if((log_alarm_para_g.system_alarm_log.log_addr_save >= SYSTEM_ALARM_LOG_STORAGE_END_ADDR)||(log_alarm_para_g.system_alarm_log.log_addr_save < SYSTEM_ALARM_LOG_STORAGE_START_ADDR)) |
| | | // if((log_alarm_ctrl_g.system_alarm_log.log_addr_save >= SYSTEM_ALARM_LOG_STORAGE_END_ADDR)||(log_alarm_ctrl_g.system_alarm_log.log_addr_save < SYSTEM_ALARM_LOG_STORAGE_START_ADDR)) |
| | | // { |
| | | // log_alarm_para_g.system_alarm_log.log_addr_save = SYSTEM_ALARM_LOG_STORAGE_START_ADDR; |
| | | // log_alarm_ctrl_g.system_alarm_log.log_addr_save = SYSTEM_ALARM_LOG_STORAGE_START_ADDR; |
| | | // }else |
| | | // { |
| | | // log_alarm_para_g.system_alarm_log.log_addr_save = log_alarm_para_g.system_alarm_log.log_addr_save + SYSTEM_ALARM_LOG_STORAGE_LENGTH; |
| | | // log_alarm_ctrl_g.system_alarm_log.log_addr_save = log_alarm_ctrl_g.system_alarm_log.log_addr_save + SYSTEM_ALARM_LOG_STORAGE_LENGTH; |
| | | // } |
| | | // |
| | | // if(log_alarm_para_g.system_alarm_log.log_count >= SYSTEM_ALARM_LOG_NUM) |
| | | // if(log_alarm_ctrl_g.system_alarm_log.log_count >= SYSTEM_ALARM_LOG_NUM) |
| | | // { |
| | | // log_alarm_para_g.system_alarm_log.log_count = SYSTEM_ALARM_LOG_NUM; |
| | | // log_alarm_ctrl_g.system_alarm_log.log_count = SYSTEM_ALARM_LOG_NUM; |
| | | // }else |
| | | // { |
| | | // log_alarm_para_g.system_alarm_log.log_count ++; |
| | | // log_alarm_ctrl_g.system_alarm_log.log_count ++; |
| | | // } |
| | | // |
| | | // EEPROM_data_write_uint16 ( log_alarm_para_g.system_alarm_log.log_count, SYSTEM_ALARM_LOG_COUNT_ADDR ); |
| | | // EEPROM_data_write_uint32 ( log_alarm_para_g.system_alarm_log.log_addr_save, SYSTEM_ALARM_LOG_SAVE_ADDR ); |
| | | // EEPROM_data_write_uint16 ( log_alarm_ctrl_g.system_alarm_log.log_count, SYSTEM_ALARM_LOG_COUNT_ADDR ); |
| | | // EEPROM_data_write_uint32 ( log_alarm_ctrl_g.system_alarm_log.log_addr_save, SYSTEM_ALARM_LOG_SAVE_ADDR ); |
| | | return 0; |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | |
| | | |
| | | /*±¨¾¯¼Ç¼´æ´¢ |
| | | *ÓиöÐòºÅÎÊÌ⣬ĿǰϣÍûÐòºÅÒ»Ö±Ôö¼Ó£¬µ«ÊÇÒòΪÐèҪûÓд洢EEP£¬ËùÒÔÖ»ÄܶÁÈ¡ÉÏÒ»Ìõ¼Ç¼£¬ÔÚÉÏÒ»Ìõ¼Ç¼µÄ»ù´¡ÉÏ+1 |
| | | */ |
| | | void sizhuAlarmRecord(ALARM_TRIGGER_TYPE trigger_type,uint16_t alarm_id) |
| | | { |
| | | LOG_SIZHU_SYS_ALARM_SAVE_T sizhu_alarm_log_l; |
| | | LOG_SIZHU_SYS_ALARM_SAVE_T previous_log_l; |
| | | uint32_t previous_addr = 0; |
| | | |
| | | return; //?û¾¹ý²âÊÔ£¬ÏÈÆÁ±Î |
| | | |
| | | arrayA_2_arrayB((uint8_t *)&sys_clockBCD_g,(uint8_t *)&sizhu_alarm_log_l.record_time_BCD,sizeof(sys_clockBCD_g), LITTLE_ENDIAN); |
| | | |
| | | sizhu_alarm_log_l.forward_cumulate_sc = save_realtime_data_g.realtime_flow_data_s.forward_cumulate_sc; // ÕýÏò±ê¿öÀÛ»ýÁ¿ |
| | | sizhu_alarm_log_l.forward_cumulate_wc = save_realtime_data_g.realtime_flow_data_s.forward_cumulate_wc; |
| | | sizhu_alarm_log_l.instant_sc = flow_meter_data_g.instant_sc; |
| | | sizhu_alarm_log_l.instant_wc = flow_meter_data_g.instant_wc; |
| | | sizhu_alarm_log_l.temperature = flow_meter_data_g.temperature; |
| | | sizhu_alarm_log_l.pressure = flow_meter_data_g.pressure; |
| | | sizhu_alarm_log_l.ambient_tem = pwr_vol_g.mcu_temperature; |
| | | sizhu_alarm_log_l.lith_bat_v = pwr_vol_g.lith_vcc * 10; |
| | | sizhu_alarm_log_l.alka_bat_v = pwr_vol_g.alka_vcc * 10; |
| | | arrayA_2_arrayB((uint8_t *)&system_status_word_g.status_word_union,(uint8_t *)&sizhu_alarm_log_l.status_word,sizeof(SYSTEM_STATUS_WORD_T), LITTLE_ENDIAN); |
| | | sizhu_alarm_log_l.current_price = save_realtime_data_g.realtime_billing_data_s.price_now; |
| | | sizhu_alarm_log_l.residual_amount = save_realtime_data_g.realtime_billing_data_s.balance_now; |
| | | |
| | | switch(trigger_type){ |
| | | case ALARM_HAPPEN:sizhu_alarm_log_l.alarm_id = alarm_id;break; |
| | | case ALARM_END:sizhu_alarm_log_l.alarm_id = 0x1000+alarm_id;break; //+0x1000´ú±í±¨¾¯½áÊø£¬Ê¶±ðµÚ4λΪ1 |
| | | default : break; |
| | | } |
| | | |
| | | FLASH_LOG_ADDR_CHECK(log_alarm_ctrl_g.system_alarm_log,SYSTEM_ALARM_LOG_START_ADDR,SYSTEM_ALARM_LOG_LENGTH,SYSTEM_ALARM_LOG_MAX_NUM); |
| | | if(log_alarm_ctrl_g.system_alarm_log.log_count != 0){ |
| | | previous_addr = FlashLogPreviousAddrGet(log_alarm_ctrl_g.system_alarm_log.log_addr_save,SYSTEM_ALARM_LOG_START_ADDR,SYSTEM_ALARM_LOG_LENGTH,SYSTEM_ALARM_LOG_END_ADDR); |
| | | if(FlashMultipleReadAndCrcCheck((uint8_t *)&previous_log_l,previous_addr,SYSTEM_ALARM_LOG_LENGTH)== PASS) |
| | | sizhu_alarm_log_l.serial_number = previous_log_l.serial_number +1; |
| | | else |
| | | sizhu_alarm_log_l.serial_number = 0; |
| | | }else{ |
| | | sizhu_alarm_log_l.serial_number = 0; |
| | | } |
| | | |
| | | //¼ÆËãCRC |
| | | sizhu_alarm_log_l.CRC16_MODBUS = usMBCRC16(0xFFFF, (uint8_t * )&sizhu_alarm_log_l.record_time_BCD, sizeof(LOG_SIZHU_SYS_ALARM_SAVE_T) - sizeof(sizhu_alarm_log_l.CRC16_MODBUS) ); |
| | | |
| | | FlashMultipleWriteAndReadCheck((uint8_t *)&sizhu_alarm_log_l,log_alarm_ctrl_g.system_alarm_log.log_addr_save,SYSTEM_ALARM_LOG_LENGTH); |
| | | FLASH_LOG_CRTL_PARA_HANDLE(log_alarm_ctrl_g.system_alarm_log,SYSTEM_ALARM_LOG_START_ADDR,SYSTEM_ALARM_LOG_LENGTH,SYSTEM_ALARM_LOG_MAX_NUM); |
| | | //?²ÎÊý´æ´¢ |
| | | 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){ |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | |