#include "sizhu_alarm_record.h"
|
#include "sizhu_ctrl_word.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"
|
|
//ALARM_REPORT_PARA_T alarm_report_para_g;
|
|
|
|
|
/******************************************
|
* func: system_alarm_log_record_save
|
* desc: ±¨¾¯ÈÕÖ¾´æ´¢
|
* input: alarm_type±¨¾¯ÀàÐÍ£»para_alarm_ptrÐèÒª´æ´¢µÄÊý¾Ý
|
* output: none
|
* return: none
|
*****************************************/
|
uint8_t system_alarm_log_record_save(uint8_t alarm_type, uint8_t * para_alarm_ptr)
|
{
|
// void *alarm_ptr;
|
//
|
// 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_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_ctrl_g.system_alarm_log.log_addr_save = SYSTEM_ALARM_LOG_STORAGE_START_ADDR;
|
// }else
|
// {
|
// 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_ctrl_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_ctrl_g.system_alarm_log.log_count ++;
|
// }
|
//
|
// 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;
|
}
|
|
|
uint8_t system_alarm_log_record_read(uint8_t alarm_type, uint32_t addr, uint8_t * para_alarm_ptr)
|
{
|
|
return 1;
|
|
|
}
|
|
|
/******************************************
|
* func: system_alarm_log_data_handle
|
* desc: ϵͳ±¨¾¯ÈÕÖ¾ÐèÒª´æ´¢µÄÊý¾Ý´¦Àí
|
* input: alarm_type±¨¾¯ÀàÐÍ£»alarm_ID±¨¾¯ID
|
* output: none
|
* return: none
|
*****************************************/
|
void system_alarm_log_data_handle(uint8_t alarm_type, uint16_t alarm_ID)
|
{
|
// LOG_SIZHU_SYS_ALARM_SAVE_T alarm_now_data;
|
// alarm_now_data.serial_number =0;
|
//
|
// alarm_now_data.Sample_year = HEX2BCD((uint8_t)(calendar.year-2000));
|
// alarm_now_data.Sample_month = HEX2BCD(calendar.month);
|
// alarm_now_data.Sample_day = HEX2BCD(calendar.date);
|
// alarm_now_data.Sample_hour = HEX2BCD(calendar.hour);
|
// alarm_now_data.Sample_min = HEX2BCD(calendar.min);
|
// alarm_now_data.Sample_sec = HEX2BCD(calendar.sec);
|
//
|
// alarm_now_data.alarm_id = alarm_ID;
|
//
|
// alarm_now_data.StandardGasUsageTotal = cal_gas_para_g.ctotal;
|
// alarm_now_data.WorkingGasUsageTotal = cal_gas_para_g.utotal;
|
// alarm_now_data.ReverseStandardGasUsageTotal = cal_gas_para_g.fanctotal;
|
// alarm_now_data.ReverseWorkingGasUsageTotal = cal_gas_para_g.fanutotal;
|
//
|
// alarm_now_data.Standardvec = cal_gas_para_g.signed_cvol * 3600;
|
// alarm_now_data.Workingvec = cal_gas_para_g.signed_uvol * 3600;
|
//
|
// alarm_now_data.Temperature = cal_gas_para_g.corrected_medium_tem;
|
// alarm_now_data.Pressure = cal_gas_para_g.corrected_medium_pre;
|
//
|
// alarm_now_data.ambient_tem = cal_gas_para_g.ambient_temperature;
|
//
|
// alarm_now_data.lith_bat_v = v20_system_para_g.system_bat_power *0.1;
|
// alarm_now_data.alka_bat_v = 0;
|
//
|
// alarm_now_data.status_word.status_word_union[0] = system_status_word_g.status_word_union[0];
|
// alarm_now_data.status_word.status_word_union[1] = system_status_word_g.status_word_union[1];
|
// alarm_now_data.status_word.status_word_union[2] = system_status_word_g.status_word_union[2];
|
// alarm_now_data.status_word.status_word_union[3] = system_status_word_g.status_word_union[3];
|
// alarm_now_data.status_word.status_word_union[4] = system_status_word_g.status_word_union[4];
|
// alarm_now_data.status_word.status_word_union[5] = system_status_word_g.status_word_union[5];
|
//
|
//
|
// system_alarm_log_record_save(alarm_type, (uint8_t *) (&alarm_now_data));
|
|
}
|
|
|
|
|
/*±¨¾¯¼Ç¼´æ´¢
|
*ÓиöÐòºÅÎÊÌ⣬ĿǰϣÍûÐòºÅÒ»Ö±Ôö¼Ó£¬µ«ÊÇÒòΪÐèҪûÓд洢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){
|
|
}
|
}
|