forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-06-12 f03cf3ae7a36954e64fc014e6bb7afd20c5a5247
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#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);
#endif