#ifndef _SIZHU_HISTORY_RECORD_H #define _SIZHU_HISTORY_RECORD_H #include "sizhu_ctrl_word.h" #include "system_general_para.h" #include "system_mem_para.h" #include "system_flash_mem_manage.h" typedef enum { HISTORY_TYPE_HOUR = 1U, HISTORY_TYPE_DAY, HISTORY_TYPE_MONTH, HISTORY_TYPE_INTERVAL } HISTORY_TYPE; // ÀúÊ·¼Ç¼ÀàÐÍ /*ÀúÊ·¼Ç¼´æ´¢¿ØÖÆ*/ //ԼǼ #define HISTORY_MONTH_START_ADDR MONTH_HISTORY_RECORD_STORAGE_START_ADDR #define HISTORY_MONTH_LENGTH sizeof(SIZHU_HISTORY_MDH_T) #define HISTORY_MONTH_MAX_NUM 120U #define HISTORY_MONTH_END_ADDR HISTORY_MONTH_START_ADDR + HISTORY_MONTH_LENGTH * (HISTORY_MONTH_MAX_NUM -1) //Ìì¼Ç¼ #define HISTORY_DAY_START_ADDR DAY_HISTORY_RECORD_STORAGE_START_ADDR #define HISTORY_DAY_LENGTH sizeof(SIZHU_HISTORY_MDH_T) #define HISTORY_DAY_MAX_NUM 730U #define HISTORY_DAY_END_ADDR HISTORY_DAY_START_ADDR + HISTORY_DAY_LENGTH * (HISTORY_DAY_MAX_NUM -1) //Сʱ¼Ç¼ #define HISTORY_HOUR_START_ADDR HOUR_HISTORY_RECORD_STORAGE_START_ADDR #define HISTORY_HOUR_LENGTH sizeof(SIZHU_HISTORY_MDH_T) #define HISTORY_HOUR_MAX_NUM 4400U #define HISTORY_HOUR_END_ADDR HISTORY_HOUR_START_ADDR + HISTORY_HOUR_LENGTH * (HISTORY_HOUR_MAX_NUM -1) //¼ä¸ô¼Ç¼ #define HISTORY_INTERVAL_START_ADDR INTERVAL_HISTORY_RECORD_STORAGE_START_ADDR #define HISTORY_INTERVAL_LENGTH sizeof(SIZHU_HISTORY_INTERVAL_T) #define HISTORY_INTERVAL_MAX_NUM 1000U #define HISTORY_INTERVAL_END_ADDR HISTORY_INTERVAL_START_ADDR + HISTORY_INTERVAL_LENGTH * (HISTORY_INTERVAL_MAX_NUM -1) #pragma pack(1) //¼ä¸ô¶³½áÈÕÖ¾ÄÚÈÝ typedef struct { uint16_t CRC16_MODBUS; sClockBCD record_time_BCD; double forward_cumulate_sc; // ÕýÏò±ê¿öÀÛ»ýÁ¿ double forward_cumulate_wc; float instant_sc; float instant_wc; float temperature; float pressure; u32 current_price; double residual_amount; double cumulate_gas_usage; double cumulate_fee_usage; uint8_t lith_bat_v; uint8_t lith_bat_per; uint8_t alka_bat_v; uint8_t alka_bat_per; SYSTEM_STATUS_WORD_T status_word; }SIZHU_HISTORY_INTERVAL_T; //84 //Ô¡¢ÈÕ¡¢Ê±ÈÕÖ¾ÄÚÈÝ typedef struct { uint16_t CRC16_MODBUS; sClockBCD record_time_BCD; double forward_cumulate_sc; // ÕýÏò±ê¿öÀÛ»ýÁ¿ double forward_cumulate_wc; float instant_sc; float instant_wc; float temperature; float pressure; u32 current_price; double residual_amount; }SIZHU_HISTORY_MDH_T; #pragma pack() uint8_t sizhu_historical_record_clean(uint32_t epprom_begin_addr, LOG_SIZHU_CTRL_T * log_run_ptr); uint8_t sizhu_historical_record_save(uint8_t logtype, SIZHU_HISTORY_MDH_T * log_run_ptr); uint8_t sizhu_period_historical_record_save(uint8_t logtype, SIZHU_HISTORY_INTERVAL_T * log_run_ptr); // uint16_t sizhu_historical_period_log(void); uint16_t sizhu_historical_hour_log(void); uint16_t sizhu_historical_day_log(void); uint16_t sizhu_historical_month_log(void); uint32_t sizhu_historical_record_read(uint8_t logtype, uint32_t addr, SIZHU_HISTORY_MDH_T * log_run_ptr); uint8_t sizhu_historical_read_init(u32 * read_addr, u16 * save_count, uint8_t logtype); void sizhuHistoryRecord(sClockBCD sys_clockBCD_in); extern FlagStatus interval_report_record_flag; #endif