forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

周巍
2024-04-11 91ef77c00ed797b1048c5187f416e351e646a009
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
#ifndef _SYSTEM_REALTIME_RUN_PARA_H
#define _SYSTEM_REALTIME_RUN_PARA_H
#include "stm32f10x.h"
#include "system_general_para.h"
 
#pragma pack(1)
typedef struct 
{
    u8 hour;
    u8 min;
    u8 sec;                         //¹«ÀúÈÕÔÂÄêÖÜ    
    u8  month;
    u8  date;
    u8  week;
    u16 year;
}calendar_obj;    
 
typedef struct
{
    uint8_t year;    //Ä꣬BCD Âë 00~99
    uint8_t month;    //Ô£¬BCD Âë 01~12
    uint8_t day;    //ÈÕ£¬BCD Âë 01~31
    uint8_t hour;    //ʱ£¬BCD Âë 00~23
    uint8_t min;    //·Ö£¬BCD Âë 00~59
    uint8_t sec;    //Ã룬BCD Âë 00~59
}sClockBCD;
 
typedef struct
{
    //ϵͳ
    u8        system_mode;
    /*¹¤×÷״̬*/
    u16 system_workstatus;
    //»·ÎÂ
    float ambient_temperature;
    //ϵͳÍâÉè±êÖ¾
    u8 system_int_flag;
    u8 system_ble_connect;
    u8 system_gprs_connect;
    u8 system_485_connect;
    u8 system_key4_down;
    u16 system_key4_authorize_cnt; //key4Ð޸IJÎÊýÊÚȨ¼ÆÊý¡£0´ú±íÎÞ°´¼üÊÚȨ£¬°´¼üÊÚȨ60·ÖÖÓÓÐЧ£¬
    u8 system_set_authorize_flag; //ÉèÖÃÊÚȨ±êÖ¾£¬0´ú±íδÊÚȨ£¬²»ÄÜÉèÖã»1´ú±íÓÐÊÚȨ·Ç¼ÆÁ¿Ð޸ģ»2´ú±íÓÐÊÚȨËùÓвÎÊýÐÞ¸Ä
    //ϵͳµÄȨÏÞ±êÖ¾
    u8 system_user;
    
    //µç³Ø
    u8    lith_bat_vol;
    u8    lith_bat_percent;
 
    u8    alka_bat_vol;
    u8    alka_bat_percent;    
    
    //Ìõ¼þ¹Ø·§Ïà¹Ø
    u8 day_up_result;
    u8 previous_hour;  //ÉÏһСʱ
    u8 current_hour;  //µ±Ç°Ð¡Ê±
    u8 no_up_close_day_flag;  // ÎÞÉϱ¨¹Ø·§ÌìÊýµ½±êÖ¾
 
    double        PreviousDayCumulant;//ÉÏÒ»ÌìµÄÀÛ¼Æ×ÜÁ¿£¬ÓÃÓÚÓ뵱ǰÀÛ¼Æ×ÜÁ¿±È½Ï£¬Èç¹ûÏàµÈ´ú±íµ±ÌìÎÞÓÃÆø
    double        PreviousCumulant; //ÉÏÒ»¸öÀÛ»ýÁ¿
    u8                CumulantCloseFlag;//ÀÛ»ýÁ¿¹Ø·§ÌìÊýµ½±êÖ¾
    
    
}SYSTEM_REALTIME_RUN_PARA_T;
 
typedef struct
{
    sClockBCD   meter_time;
    
    double            sc_accumulation;
    double            wc_accumulation;    
    
    double            sc_accumulation_calibration;
    double            wc_accumulation_calibration;    
 
    double            sc_accumulation_error;
    double            wc_accumulation_error;    
    
  float       wc_instant;       
  float       sc_instant;   
 
  float       temperature;
  float       pressure;    
    
    u8          meter_bat_vol;
    u8          mer_bat_percent;
    
    u8          meter_status[4];
    
    float            gas_get_factor;     //ѹËõÒò×Ó
    float       C_coe; //CϵÊý
    float       K_coe; //KϵÊý    
    
    float       reserved1;
    float       reserved2;
    
}LLJ_PARA_T;
 
typedef struct
{
    double   residual_amount;      //Ê£ÓàÁ¿
    
    double   cumulative_gas_usage;
    double   cumulative_fee_usage;
    
    int      current_price;
    
    double   step_cumulative_gas_usage;
    u8       current_step;
    
    u8       billing_base_readable_flag;
    double   rs485_settlement_total_gas_base;
    double   rs485_settlement_balance_base;
    
    double   rs485_settlement_cumulative_gas_usage_base;
    double   rs485_settlement_cumulative_fee_usage_base;
    double   rs485_settlement_step_cumulative_gas_usage_base;
    
    u8       step_billing_first_time_arrive_flag;
}BILLING_PARA_T;
 
 
typedef struct
{
    //É豸ʵʱ״̬
    u8 extern_power_connect_status;
    u8 system_power_in_cnt;
    u8 system_power_out_cnt;    
    u8 cover_open_status;
    u8 mainboard_remove_status;
    
    //¼Æ·ÑÓë·§ÃÅ״̬
    u8 balance_small_1_Status;   
    u8 balance_small_2_Status;    
    u8 balance_small_3_Status;
    u8 balance_small_4_Status;
    u8 balance_small_5_Status;
 
    u8 many_days_no_gas_Status;
    u8 many_days_no_report_Status;
    u8 cumulant_reaches_set_value_Status;    
 
    //µç³ØÓë¶Ô½ÓÉ豸״̬
    u8 lith_bat_low_status;
    u8 lith_bat_down_status;
    u8 lith_bat_remove_status;
    
    u8 alka_bat_low_status;
    u8 alka_bat_down_status;
    u8 alka_bat_remove_status;    
    
    u8 flow_bat_low_status;
    u8 flow_bat_down_status;
    
    u8 rs485_com_status;
    u8 pulse_broken_status;
    u8 valve_bat_low_status;
    u8 valve_bat_down_status;
    u8 rtc_bat_status;
    u8 gprs_com_status;
    u8 Data_Send_failed_time; //ͨѶÊý¾Ý·¢ËÍʧ°Ü´ÎÊý    
    
    //ÎÂѹ״̬
    u8 system_tem_alarm_fault_status;
    u8 system_tem_alarm_up_status;
    u8 system_tem_alarm_up_up_status;
    u8 system_tem_alarm_low_status;
    u8 system_tem_alarm_low_low_status;
    
    u8 system_pre_alarm_fault_status;
    u8 system_pre_alarm_up_status;
    u8 system_pre_alarm_up_up_status;
    u8 system_pre_alarm_low_status;
    u8 system_pre_alarm_low_low_status;
    
    u8 ambient_tem_alarm_up_status;
    u8 ambient_tem_alarm_low_status;
    u8 ambient_temp_sudden_change_status;//»·Î¾ç±ä    
    
    //¼ÆÁ¿×´Ì¬
    
    //ÆäËû״̬
    u8 gas_leak_status;
    u8 lcd_overrun_status;
    u8 lcd_temp_low_status;
 
    u8 flow_up1_status;
    u8 flow_up2_status;
    u8 flow_up3_status;
    
  u8 valve_close_but_flow_status;
    u8 e2p_write_abnormal_status;
    u8 e2p_read_abnormal_status;
    
 
 
}SYSTEM_STATUS_PARA_T;
 
 
 
#pragma pack()
 
/*±¨¾¯Éϱ¨¿ØÖƲÎÊý*/
#define        ALARM_EVERYDAY_TIMES                            2       //ÿÌìÉϱ¨´ÎÊý£¬±ÈÈç2´ú±íÿÌì×î¶à·´¸´±¨¾¯2´Î¡£»Ö¸´Õý³£ÔÙ³öÏÖÒì³£²ÅÄÜ·´¸´±¨¾¯¡£
#define        ALARM_CONTINUE_TIMES                            4       //Á¬Ðø³öÏÖÎÊÌâ´ÎÊý£¬±ÈÈç4´ú±íÁ¬Ðø4´Î¼ì²âµ½Òì³£Ôò±¨¾¯
#define        ALARM_END_CONTINUE_TIMES                            4       //Á¬Ðø³öÏÖÎÊÌâ´ÎÊý£¬±ÈÈç4´ú±íÁ¬Ðø4´Î¼ì²âµ½Òì³£Ôò±¨¾¯
typedef struct    alarm_report_para_t
{
    u8 Last_day;
    
    u8 alarm_all_flag; //×ܱ¨¾¯±êÖ¾
    //¿ª¸Ç
    
    //É豸ʵʱ״̬
    u8 system_start_flag;
    u8 extern_power_connect_flag;
    u8 cover_open_flag;
    u8 mainboard_remove_flag;
    
    //¼Æ·ÑÓë·§ÃÅ״̬
    u8 balance_small_1_flag;   
    u8 balance_small_2_flag;    
    u8 balance_small_3_flag;
    u8 balance_small_4_flag;
    u8 balance_small_5_flag;
 
    u8 many_days_no_gas_flag;
    u8 many_days_no_report_flag;
    u8 cumulant_reaches_set_value_flag;    
 
    u8 valve_op_cl_flag;
    u8 valve_abnormal_flag;
    
    //µç³ØÓë¶Ô½ÓÉ豸״̬
    u8 lith_bat_low_flag;
    u8 lith_bat_down_flag;
    u8 lith_bat_remove_flag;
    
    u8 alka_bat_low_flag;
    u8 alka_bat_down_flag;
    u8 alka_bat_remove_flag;    
    
    u8 flow_bat_low_flag;
    u8 flow_bat_down_flag;
    
    u8 gprs_com_flag;    
    u8 rs485_com_flag;
    u8 rs485_read_small_flag;
    
    u8 pulse_broken_flag;
    u8 valve_bat_low_flag;
    u8 valve_bat_down_flag;
    u8 rtc_bat_flag;
    
    //ÎÂѹ״̬
    u8 system_tem_alarm_fault_flag;
    u8 system_tem_alarm_up_flag;
    u8 system_tem_alarm_up_up_flag;
    u8 system_tem_alarm_low_flag;
    u8 system_tem_alarm_low_low_flag;
    
    u8 system_pre_alarm_fault_flag;
    u8 system_pre_alarm_up_flag;
    u8 system_pre_alarm_up_up_flag;
    u8 system_pre_alarm_low_flag;
    u8 system_pre_alarm_low_low_flag;
    
    u8 ambient_tem_alarm_up_flag;
    u8 ambient_tem_alarm_low_flag;
    u8 ambient_temp_sudden_change_flag;//»·Î¾ç±ä    
    
    //¼ÆÁ¿×´Ì¬
    
    //ÆäËû״̬
    u8 gas_leak_flag;
    u8 lcd_overrun_flag;
    u8 lcd_temp_low_flag;
 
    u8 flow_up1_flag;
    u8 flow_up2_flag;
    u8 flow_up3_flag;
    
  u8 valve_close_but_flow_flag;
    u8 e2p_write_abnormal_flag;
    u8 e2p_read_abnormal_flag;
    
 
    //µ¥ÈÕÉÏ·¢´ÎÊý¿ØÖÆ
    //É豸ʵʱ״̬
    u8 extern_power_connect_cnt;
    u8 cover_open_cnt;
    u8 mainboard_remove_cnt;
    
    //¼Æ·ÑÓë·§ÃÅ״̬
    u8 balance_small_1_cnt;   
    u8 balance_small_2_cnt;    
    u8 balance_small_3_cnt;
    u8 balance_small_4_cnt;
    u8 balance_small_5_cnt;
 
    u8 many_days_no_gas_cnt;
    u8 many_days_no_report_cnt;
    u8 cumulant_reaches_set_value_cnt;    
 
    u8 valve_op_cl_cnt;
    u8 valve_abnormal_cnt;
    
    //µç³ØÓë¶Ô½ÓÉ豸״̬
    u8 lith_bat_low_cnt;
    u8 lith_bat_down_cnt;
    u8 lith_bat_remove_cnt;
    
    u8 alka_bat_low_cnt;
    u8 alka_bat_down_cnt;
    u8 alka_bat_remove_cnt;    
    
    u8 flow_bat_low_cnt;
    u8 flow_bat_down_cnt;
    
    u8 gprs_com_cnt;    
    u8 rs485_com_cnt;
    u8 rs485_read_small_cnt;
    
    u8 pulse_broken_cnt;
    u8 valve_bat_low_cnt;
    u8 valve_bat_down_cnt;
    u8 rtc_bat_cnt;
    
    //ÎÂѹ״̬
    u8 system_tem_alarm_fault_cnt;
    u8 system_tem_alarm_up_cnt;
    u8 system_tem_alarm_up_up_cnt;
    u8 system_tem_alarm_low_cnt;
    u8 system_tem_alarm_low_low_cnt;
    
    u8 system_pre_alarm_fault_cnt;
    u8 system_pre_alarm_up_cnt;
    u8 system_pre_alarm_up_up_cnt;
    u8 system_pre_alarm_low_cnt;
    u8 system_pre_alarm_low_low_cnt;
    
    u8 ambient_tem_alarm_up_cnt;
    u8 ambient_tem_alarm_low_cnt;
    u8 ambient_temp_sudden_change_cnt;//»·Î¾ç±ä    
    
    //¼ÆÁ¿×´Ì¬
    
    //ÆäËû״̬
    u8 gas_leak_cnt;
    u8 lcd_overrun_cnt;
    u8 lcd_temp_low_cnt;
 
    u8 flow_up1_cnt;
    u8 flow_up2_cnt;
    u8 flow_up3_cnt;
    
  u8 valve_close_but_flow_cnt;
    u8 e2p_write_abnormal_cnt;
    u8 e2p_read_abnormal_cnt;
    
    
    //ÆäËû±¨¾¯Óõ½µÄ²ÎÊý
    u8 sys_restart_report_delay_cnt;
    
}ALARM_REPORT_PARA_T;
 
 
void alarm_cnt_clear(void);
 
 
extern calendar_obj   calendar;
extern sClockBCD      Time_BCD_g; //BCD
extern LLJ_PARA_T     llg_data_g;
extern BILLING_PARA_T billing_para_g;
extern SYSTEM_STATUS_PARA_T system_status_para_g;
extern ALARM_REPORT_PARA_T alarm_report_para_g;
 
#endif