forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-06-12 f03cf3ae7a36954e64fc014e6bb7afd20c5a5247
Function/STORAGE/system_mem_para.h
@@ -3,18 +3,22 @@
#include "define_all.h"
#include "system_general_para.h"
#include "extern_rtc.h"
#include "valve_control.h"
#include "wireless_remote_comm.h"
#include "sizhu_ctrl_word.h"
#include "rs485_read_data.h"
#define SOFT_SERIAL_NUMBER1   0x05
#define SOFT_SERIAL_NUMBER2   0x00
#define SOFT_SERIAL_NUMBER3   0x05
#define SOFT_SERIAL_NUMBER4   0x07
#define   EEP_PARA_INIT_ID    0x24041601          //BCD¸ñʽYYMMDDXX£¬²»ÄܳöÏÖ×Öĸ
#define   EEP_PARA_INIT_ID    0x24060605          //BCD¸ñʽYYMMDDXX£¬²»ÄܳöÏÖ×Öĸ
#define LAST_PATCH_ID         EEP_PARA_PATCH_ID_1    //BCD¸ñʽYYMMDDXX£¬²»ÄܳöÏÖ×Öĸ£¬×¢Òâ´Ë´¦Ö¸Ïò×îºóÒ»¸ö²¹¶¡
/************²¹¶¡±êʶ¶¨ÒåÇø£¬³ÖÐøÔö¼Ó£¬BCD¸ñʽYYMMDDXX£¬²»ÄܳöÏÖ×Öĸ************/
/************ÿ´ÎÔö¼ÓºóLAST_PATCH_IDÖ¸Ïò×îºóÒ»¸ö²¹¶¡***************************/
#define   EEP_PARA_PATCH_ID_1    0x24041601
#define   EEP_PARA_PATCH_ID_1            0x24060605
/****************************************************/
 
@@ -22,7 +26,7 @@
#define   CRC16_MODBUS_OFFSET  sizeof(uint16_t)
//ϵͳ²¹¶¡±êʶ
//ϵͳÅäÖòÎÊý±êʶ
typedef struct 
{
   uint16_t   CRC16_MODBUS;
@@ -35,21 +39,22 @@
}SYSTEM_EEP_IDENTIFICATION_T;
#define   SYSTEM_EEP_IDENTIFICATION_LENGTH        sizeof(SYSTEM_EEP_IDENTIFICATION_T)
//É豸»ù´¡ÐÅÏ¢
typedef struct equipment_basic_inf
{
   uint16_t   CRC16_MODBUS;
   char  specification_model[20];//¹æ¸ñÐͺÅ
   DEVICE_MODEL      product_type; //²úÆ·ÀàÐÍ
   CALIBER_MODEL      caliber_model;//¿Ú¾¶ 1/2/3/4/5/6/7/8´ú±í050/080/100/150/200/025/032/040
   DEVICE_TYPE      product_type; //²úÆ·ÀàÐÍ
   CALIBER_TYPE      caliber_type;//¿Ú¾¶ 1/2/3/4/5/6/7/8´ú±í050/080/100/150/200/025/032/040
   uint8_t       serial_number[10];//³ö³§±àºÅ£¬BCDĿǰֻÓÃǰ8×Ö½Ú£¬16룬ºó2×Ö½Ú²¹FFH¡£
   uint8_t      manufactuer_code[2];//³§¼Ò´úÂë,×ÔÓã¬ÓÃÓÚʶ±ðÉ豸ÓÃ;£¬±ÈÈçÊÇаÂÌùÅÆ£¬Ôò³§¼Ò´úÂë±íʾΪа£¬¸Ä´úÂë¿ÉÓÃÓÚÉÏλ»úʶ±ð£¬ÉÏλ»úʹÓÃÕßҲΪа£¬Ôò¿É½øÐвÙ×÷¡£
   VALVE_MODEL    valve_type;//·§ÃÅÐͺÅ0:ÎÞ·§ÃÅ£»1£ºÅôÊ¢·§Ì壻2:¹þµÂ·§Ì壻ÆäËû£¬Ä¬ÈϹþµÂ·§Ìå
   EQUIPMENT_MODEL      equipment_type;//É豸ÀàÐÍ,10H±íʾ¡°Ò»ÌåʽÁ÷Á¿Ô¶´«ÖÕ¶Ë
   VALVE_TYPE    valve_type;//·§ÃÅÐͺÅ0:ÎÞ·§ÃÅ£»1£ºÅôÊ¢·§Ì壻2:¹þµÂ·§Ì壻ÆäËû£¬Ä¬ÈϹþµÂ·§Ìå
   EQUIPMENT_TYPE      equipment_type;//É豸ÀàÐÍ
   uint8_t   reserve[32];
}EQUIPMENT_BASIC_INF_T;
#define   EQUIPMENT_BASIC_INF_LENGTH        sizeof(EQUIPMENT_BASIC_INF_T)
//É豸ÈíÓ²¼þÐÅÏ¢
typedef struct main_equipment_hardware_software_inf
{
   uint16_t   CRC16_MODBUS;
@@ -63,6 +68,7 @@
}MAIN_EQUIPM_HARDWARE_SOFTWARE_INF_T;
#define   MAIN_EQUIPM_HARDWARE_SOFTWARE_INF_LENGTH        sizeof(MAIN_EQUIPM_HARDWARE_SOFTWARE_INF_T)
//LCD°åÈíÓ²¼þÐÅÏ¢
typedef struct lcd_equipment_hardware_software_inf
{
   uint16_t   CRC16_MODBUS;
@@ -76,6 +82,7 @@
}LCD_EQUIPM_HARDWARE_SOFTWARE_INF_T;
#define   LCD_EQUIPM_HARDWARE_SOFTWARE_INF_LENGTH        sizeof(LCD_EQUIPM_HARDWARE_SOFTWARE_INF_T)
//ÎÞÏßͨѶ°åÈíÓ²¼þÐÅÏ¢
typedef struct wireless_equipment_hardware_software_inf
{
   uint16_t   CRC16_MODBUS;
@@ -90,7 +97,7 @@
#define   WIRELESS_EQUIPM_HARDWARE_SOFTWARE_INF_LENGTH        sizeof(WIRELESS_EQUIPM_HARDWARE_SOFTWARE_INF_T)
//ʵʱ²ÎÊý
typedef struct{
   uint16_t   CRC16_MODBUS;
   sClockBCD record_time_BCD;
@@ -98,17 +105,18 @@
   {
      double forward_cumulate_sc; // ÕýÏò±ê¿öÀÛ»ýÁ¿
      double forward_cumulate_wc;
      double cal_cumulate_reserve[2];         // ±ê¶¨ÀÛ»ýÁ¿_Ô¤Áô
      double err_forward_cumulate_reserve[2]; // ´íÎóÀÛ»ýÁ¿_Ô¤Áô
      double cal_cumulate_sc;         // ±ê¶¨ÀÛ»ýÁ¿
      double cal_cumulate_wc;
      double err_forward_cumulate_sc; // ´íÎóÀÛ»ýÁ¿
      double err_forward_cumulate_wc;
   }realtime_flow_data_s;
   struct realtime_billing_data
   {
      uint8_t price_type_mode_now;  //¼Æ·ÑÀàÐÍ£¬  µ¥Ò»¼Æ·Ñ¡¢½×ÌݼƷѡ¢·Öʱ¼Æ·Ñ
      uint32_t price_now;       //µ¥¼Û£¬·Å´ó10000±¶
      double use_fee_sum;    //×ÜÓÃÆø½ð¶î
      double balance_now;
      double use_fee_sum;    //×ÜÓÃÆø½ð¶î£¬Ö÷Òª±í¶Ë¼Æ·Ñͳ¼ÆÓÃ
      double use_gas_sum;    //×ÜÓÃÆøÁ¿£¬Ö÷Òª±í¶Ë¼Æ·Ñͳ¼ÆÓÃ
      double ladder_cumulate_sc;  //½×ÌÝÄÚ×ÜÓÃÁ¿
      uint8_t   ladder_now;  //µ±Ç°½×ÌÝ
      
@@ -116,7 +124,7 @@
      double   SC_base ; //×ÜÁ¿»ùÊý
      double   balance_base ;//Óà¶î»ùÊý
      double   gas_use_base ;//×ÜÓÃÆøÁ¿»ùÊý
      double   fee_use__base ;//×ÜÓÃÆø½ð¶î»ùÊý
      double   fee_use_base ;//×ÜÓÃÆø½ð¶î»ùÊý
      double   ladder_SC_base ;//½×ÌÝÓÃÆøÁ¿»ùÊý
      
      double   ladder_first_time_up_flag; //½×ÌݼƷѵÚÒ»¸öÖÜÆÚʱ¼äµ½´ï±êÖ¾
@@ -130,19 +138,243 @@
//ͳ¼Æ²ÎÊý£¬ÔÝʱ²»×ö
//·§ÃÅÏà¹Ø²ÎÊý
typedef struct 
{
   VALVE_STATE_T      valve_state ;
   uint16_t   CRC16_MODBUS;
   VALVE_STATUS      valve_status ;
   VALVE_LOCK_STATE_T      valve_lock_state;  //·§ÃÅËø¶¨×´Ì¬
   uint16_t      open_times;//¿ª·§´ÎÊý
   uint16_t      close_times;//¹Ø·§´ÎÊý   
   uint16_t      valve_close_ID ;//¹Ø·§Ô­Òò  µÈÓÚ±¨¾¯ID
   uint16_t      valve_close_ID ;//¹Ø·§Ô­Òò £¬×λΪ1´ú±íǿֱÐԹط§£¬ÆäÓàλµÈÓÚ±¨¾¯ID,·§ÃÅ´ò¿ªÖ®ºóÇåÁã¡£
   
   
}SAVE_VALVE_PARA_T;
//Á÷Á¿¼Æ²ÎÊý
typedef struct
{
   uint16_t   CRC16_MODBUS;
   FLOW_METER_CONN_TYPE   flow_meter_conn_type;
   uint16_t flow_meter_code;
   float   pulse_coe;
   uint16_t   pulse_width;
   BAUDRATE_CODE   baudrate_code;
   PARITY_BIT   parity_bit;
   RS485_PWR_OUTPUT_SELECT output_voltage_code;
   uint8_t   slave_address;
   uint8_t   broken_line_multiplex; //¶ÏÏ߸´ÓÃ
   uint8_t sub_machine_num;
   char flow_meter_serial_number;
}FLOW_METER_PARA_T;
//δÍê³É.....
//ÎÂѹÅäÖòÎÊý
typedef struct
{
   uint16_t   CRC16_MODBUS;
   int16_t tem_up_limit;
   int16_t tem_up_up_limit;
   int16_t tem_low_limit;
   int16_t tem_low_low_limit;
   int16_t   ambient_tem_up_limit;
   int16_t   ambient_tem_low_limit;
   float  pre_up_limit;
   float  pre_up_up_limit;
   float  pre_low_limit;
   float  pre_low_low_limit;
}TEM_PRE_PARA_T;
//¼ÆÁ¿¶³½á²ÎÊý
typedef struct
{
   uint16_t   CRC16_MODBUS;
   uint16_t freeze_interval;
   uint8_t daily_freeze_time_BCD[2];
}MEASURE_FREEZE_PARA_T;
//µç³Ø²ÎÊý
typedef struct
{
   uint16_t   CRC16_MODBUS;
   uint8_t lith_bat_low_v;
   uint8_t lith_bat_under_v;
   uint8_t alka_bat_low_v;
   uint8_t alka_bat_under_v;
   uint32_t lith_bat_max_hour;
   uint32_t lith_bat_used_hour;
   uint32_t lith_bat_used_sec;
   uint8_t  reserve[32];
}BAT_PARA_T;
//ÉÏλ»ú\APPµÇÈëÃÜÂë
typedef struct
{
   uint16_t   CRC16_MODBUS;
   uint8_t            PC_general_user_password[2];
   uint8_t            PC_advanced_user_password[2];
   uint8_t            PC_manage_user_password[2];
//   uint8_t            APP_general_user_password[2];
//   uint8_t            APP_advanced_user_password[2];
//   uint8_t            APP_manage_user_password[2];
}LOGIN_PASSWORD_T;
//ÉÏλ»ú´®¿ÚÅäÖÃÐÅÏ¢
typedef struct
{
   uint16_t   CRC16_MODBUS;
   uint8_t   slave_address;
   BAUDRATE_CODE   baudrate_code;
   PARITY_BIT   parity_bit;
}UP_COMM_PARA_T;
//ÎÞÏßÔ¶³ÌͨѶÅäÖòÎÊý
typedef struct
{
   uint16_t   CRC16_MODBUS;
   uint8_t          ip1[4];
   uint16_t           ip_port1;
   LINK_TYPE     ip1_connect_type; //IPÁ¬½Óģʽ 0£ºTCPÖ±Á¬  1£ºÁ¬½ÓµçÐÅÆ½Ì¨  2£ºÁ¬½ÓÒÆ¶¯onenetƽ̨
   uint8_t          ip2[4];
   uint16_t         ip_port2;
   LINK_TYPE     ip2_connect_type; //IPÁ¬½Óģʽ 0£ºTCPÖ±Á¬  1£ºÁ¬½ÓµçÐÅÆ½Ì¨  2£ºÁ¬½ÓÒÆ¶¯onenetƽ̨
   uint16_t         bat_power_data_interval; //µç³Ø¹©µçÊý¾Ý¼ä¸ô
   uint16_t         ext_power_data_interval; // Í⹩µçÊý¾Ý¼ä¸ô
   WRC_TIME_START_TYPE         time_start_type;  //ʱ¼ä·¢ËÍģʽ,0£ºÎÞ·¨ËÍ  1£º¼ä¸ô  :2£º¶¨Ê±  3£º¼ä¸ô+¶¨Ê±.  ÔÝʱֻ֧³Ö1»òÕß2
   uint16_t       bat_power_send_interval;
   uint16_t       ext_power_send_interval;
   uint8_t         send_first_time_BCD[2];  //Ê״η¢ËÍʱ¼ä£¬¿ÉÓÃÓÚ´í·å·¢ËÍ£¬±ÈÈçÊ״η¢ËÍʱ¼äÉèÖÃΪ0µã15·Ö£¬24·¢ËÍ·¢ËÍÒ»´Î¡£ ÄǾÍÊÇÿÌì0µã15·ÖͨѶһ´Î
   uint8_t         timing_send_num;  //¶¨Ê±Éϱ¨´ÎÊý1-12
   uint8_t         timing_send_time_BCD[12][2]; //¶¨Ê±·¢ËÍʱ¼äµã1-12
   uint16_t     retransmission_interval;   // ÖØ·¢¼ä¸ô
   uint8_t          retransmission_num;     //ÖØ·¢´ÎÊý
   uint16_t     comm_timeout_time;         //³¬Ê±Ê±¼ä£¬Ãë
   uint8_t          KVer_AES_128[9][16];
}WRC_PARA_SIZHU_T;
typedef struct
{
   uint16_t   CRC16_MODBUS;
   uint16_t   report_data_save_num;
   uint16_t   report_data_left_num;
}WRC_DATA_NUM_CTRL_PARA_SIZHU_T;  //´Ë²ÎÊý±ä»¯»á±È½ÏƵ·±£¬ÐèÒª¿¼ÂÇ´æ´¢´ÎÊýµÄÎÊÌ⣡£¡£¡
//¼Û¸ñ·½°¸ÅäÖòÎÊý
//³äÖµÅäÖòÎÊý
//Óà¶î/Ìõ¼þ¹Ø·§ÅäÖòÎÊý
typedef struct
{
   uint16_t   CRC16_MODBUS;
   VALVE_BILLING_CHANGE_1_T balance_valve_ctrl_byte;
   VALVE_BILLING_CHANGE_2_T conditional_valve_ctrl_byte;
  int32_t balance_small_value[5];
  uint32_t cumulate_flow_threshold;
  uint8_t no_wrc_days;
  uint8_t no_use_gas_days;
  uint8_t reserve[5];
} BILLING_VALVE_CTRL_PATA_T; // ¼Æ·Ñ±¨¾¯\ÓÐÌõ¼þ¹Ø·§¿ØÖƲÎÊý
/*****************ÒÔϼ¸¸ö¿ØÖÆ×Ö¾ßÌ嶨ÒåÔÚsizhu_ctrl_word.hÖÐ******************************/
//¹¦ÄÜ¿ØÖÆ×Ö
typedef struct
{
   uint16_t   CRC16_MODBUS;
   SYSTEM_FUNCTION_CTRL_WORD_T      fun_ctrl_word;
} SAVE_FUN_CTRL_WORD_T; //´æ´¢¹¦ÄÜ¿ØÖÆ×Ö
//ϵͳ±¨¾¯¿ØÖÆ×Ö/ϵͳ±¨¾¯Éϱ¨¿ØÖÆ×Ö
typedef struct
{
   uint16_t   CRC16_MODBUS;
   SYSTEM_ALARM_CTRL_WORD_T   alarm_ctrl_word;
   SYSTEM_ALARM_CTRL_WORD_T   alarm_report_ctrl_word;
} SAVE_ALARM_CTRL_WORD_T; //´æ´¢±¨¾¯¿ØÖÆ×Ö
//¹Ø·§¿ØÖÆ×Ö
typedef struct
{
   uint16_t   CRC16_MODBUS;
   VALVE_CTL_BYTES_UNION_T   valve_ctrl_word;
} SAVE_VALVE_CTRL_WORD_T; //´æ´¢¹Ø·§¿ØÖÆ×Ö
/***********************************************/
/*****************ÈÕÖ¾¿ØÖƲÎÊý******************************/
//ÈÕÖ¾¿ØÖƲÎÊý
typedef struct LOG_SIZHU_CTRL_T
{
   uint16_t      log_count;
  uint32_t     log_addr_save; //Ö¸ÏòÏÂÒ»´ÎҪдÈëµÄµØÖ·
//  uint32_t     log_addr_begin;
   uint8_t reserve[16];
}LOG_SIZHU_CTRL_T;  //³¤¶ÈÕ¼22×Ö½Ú
//Êý¾ÝÀúÊ·¼Ç¼
typedef struct
{
   uint16_t   CRC16_MODBUS;
   LOG_SIZHU_CTRL_T per_month_log;
   LOG_SIZHU_CTRL_T per_day_log;
   LOG_SIZHU_CTRL_T per_hour_log;
   LOG_SIZHU_CTRL_T per_interval_log;
}LOG_SIZHU_HISTORY_CTRL_T;
//±¨¾¯¼Ç¼
typedef struct
{
   uint16_t   CRC16_MODBUS;
   LOG_SIZHU_CTRL_T system_alarm_log;
}LOG_ALARM_CTRL_T;
//ʼþ¼Ç¼
typedef struct LOG_EVENT_CTRL_T
{
   uint16_t   CRC16_MODBUS;
   LOG_SIZHU_CTRL_T  valve_operation_log;
   LOG_SIZHU_CTRL_T  factory_reset_log;
   LOG_SIZHU_CTRL_T  set_time_log;
}LOG_EVENT_CTRL_T;
//²ÎÊýÐ޸ļǼ
typedef struct
{
   uint16_t   CRC16_MODBUS;
   LOG_SIZHU_CTRL_T basic_info_modify_log;
   LOG_SIZHU_CTRL_T cumulate_modify_log;
   LOG_SIZHU_CTRL_T balance_modify_log;
   LOG_SIZHU_CTRL_T flow_meter_para_modify_log;
   LOG_SIZHU_CTRL_T conditional_close_valve_para_modify_log;
   LOG_SIZHU_CTRL_T fun_ctrl_word_modify_log;
   LOG_SIZHU_CTRL_T alarm_ctrl_word_modify_log;
   LOG_SIZHU_CTRL_T close_valve_ctrl_word_modify_log;
}LOG_PARA_MODIFY_CTRL_T;
#pragma pack()
@@ -152,14 +384,31 @@
extern MAIN_EQUIPM_HARDWARE_SOFTWARE_INF_T        main_equipment_hardware_software_inf_g;
extern LCD_EQUIPM_HARDWARE_SOFTWARE_INF_T         lcd_equipment_hardware_software_inf_g;
extern WIRELESS_EQUIPM_HARDWARE_SOFTWARE_INF_T    wireless_equipment_hardware_software_inf_g;
extern SAVE_REALTIME_DATA_T               save_realtime_data_g;
extern __IO SAVE_REALTIME_DATA_T               save_realtime_data_g;
extern __IO SAVE_VALVE_PARA_T                     save_valve_para_g;
extern FLOW_METER_PARA_T   flow_meter_para_g;
extern MEASURE_FREEZE_PARA_T measure_freeze_para_g;
extern BAT_PARA_T bat_para_g;
extern LOGIN_PASSWORD_T login_passeord_g;
extern UP_COMM_PARA_T   up_comm_para_g;
extern WRC_PARA_SIZHU_T wrc_para_sizhu_g;
extern WRC_DATA_NUM_CTRL_PARA_SIZHU_T   wrc_data_num_ctrl_para_sizhu_g;
extern BILLING_VALVE_CTRL_PATA_T billing_valve_ctrl_para_g;
extern LOG_SIZHU_HISTORY_CTRL_T      log_sizhu_history_ctrl_g;
extern LOG_ALARM_CTRL_T log_alarm_ctrl_g;
extern LOG_EVENT_CTRL_T log_event_ctrl_g;
extern LOG_PARA_MODIFY_CTRL_T   log_para_modify_ctrl_g;
void allParaDefaultInit(void);
void allParaReadFromEep(void);
void allParaPatchPro(void);
#endif
ErrorStatus   paraCalcCrcAndWriteEepAB(uint8_t * write_data,uint32_t addrA,uint32_t addrB,uint16_t length);
#endif