#ifndef _SYSTEM_PARAMETER_H_ #define _SYSTEM_PARAMETER_H_ #include "define_all.h" #include "extern_rtc.h" #include "lcd.h" // ϵͳ²ÎÊý±ê־λÉèÖà #define __SYS_PARA_FLAG_SET_(__HANDLE__) ((&sys_some_flag_g)->__HANDLE__ = SET) // ϵͳ²ÎÊý±ê־λÇå³ý #define __SYS_PARA_FLAG_CLEAR_(__HANDLE__) ((&sys_some_flag_g)->__HANDLE__ = RESET) // Ò»ÔªÒ»´Îº¯Êý #define LINEAR_FUNC_OF_ONE_VARIABLE(__SLOPE__, __INTERCEPT__, __VALVE__) ((__SLOPE__ * __VALVE__) + __INTERCEPT__) // ÆÁÄ»µÄ×î´óÏÔʾÕûÊý #define LCD_SHOW_NUM_MAX 1000000 //£¨999999.999f£© #define SYS_FLOW_UP_3_VALUE 1.25f // Á÷Á¿³¬ÏÞÖµ123 #define SYS_TEMP_ERROR_VALUE 0xFFFF // ζȴíÎó/ÉÏ/ÉÏÉÏ/ÏÂ/ÏÂÏÂÏÞÖµ #define SYS_TEMP_MEASURE_MAX 40 // µ¥Î»¡æ #define SYS_TEMP_MEASURE_MIN (-15) #define SYS_PRESS_ERROR_VALUE 0xFFFF // ѹÁ¦´íÎó/ÉÏ/ÉÏÉÏ/ÏÂ/ÏÂÏÂÏÞÖµ #define SYS_PRESS_MEASURE_MAX 130.0f // µ¥Î»Kpa #define SYS_PRESS_MEASURE_MIN 70.0f #define BARO_PRESS 100.0f //´óÆøÑ¹ #define G4_FLOW_MIN 0.04f // µ¥Î»m^3/h #define G4_FLOW_MAX 6 // µ¥Î»m^3/h #define G6_FLOW_MIN 0.06f #define G6_FLOW_MAX 10 #define G10_FLOW_MIN 0.10f #define G10_FLOW_MAX 16 #define G16_FLOW_MIN 0.16f #define G16_FLOW_MAX 25 #define G25_FLOW_MIN 0.25f #define G25_FLOW_MAX 40 #define G40_FLOW_MIN 0.40f #define G40_FLOW_MAX 65 typedef enum { MEDIA_UNKNOWN = 0U, MEDIA_OTHER, AIR, GAS } MEDIA_STATUS; typedef enum { CPF_ONE_TENTH = 10U, CPF_1L = 100, CPF_5L = 500, CPF_10L = 1000, CPF_20L = 5000 } CALI_PULSE_FACTOR_T; typedef enum { DT_NONE = 0U, DT_HOLISTIC_METER, // Ò»Ìåʽ±í DT_HOLISTIC_CTL_METER, // Ò»Ìåʽ¿ØÖÆ±í£¨´ø·§£© DT_SPLIT_METER, // ·ÖÌåʽ±í DT_SPLIT_CTL_METER, // ·ÖÌåʽ¿ØÖÆ±í£¨´ø·§£© } DEVICE_TYPE; // É豸ÀàÐÍ typedef enum { DM_NONE = 0U, DM_HM_UFG610, // HM = HOLISTIC_METER DM_HM_UFG620, DM_HCM_UFG210, DM_SCM_SZV101, DM_SM_DTU100, DM_SCM_SZV102, DM_SCM_SZV103, DM_HM_UFG630, DM_HM_UFG220, //Á÷Á¿¼Æ DM_HCM_UFG220, //È¼Æø±í DM_HCM_UFG620, DM_HCM_UFG630, } DEVICE_MODEL; // É豸ÐͺŠ#pragma pack(1) typedef struct { __IO FlagStatus sys_run_period; // ϵͳ¼¤»îÖÜÆÚ __IO FlagStatus sys_cal_run_period; } SYS_TIME_T; // ϵͳÐÄÌøÊ±¼ä typedef struct { FlagStatus para_display_flag; // ²ÎÊýÏÔʾÊÚȨ FlagStatus uncap_flag; // ¿ª¸ÇÊÚȨ } SYS_SOME_FLAG_T; // ¸÷ÖÖ±ê־λ #define SEC_ORDER_CORR_PARA_FORMAT_SIZE sizeof(SECOND_ORDER_CORR_T) typedef struct{ float second_flow_data_point[5]; float second_corr_factor[5]; float reserve[10]; }SECOND_ORDER_CORR_T; #define SYS_CAL_PULSE_PARA_FORMAT_SIZE sizeof(CAL_PULSE_PARA_T) typedef struct { uint16_t cal_pulse_factor; // ±ê¶¨Âö³åϵÊý 0.1¡¢1¡¢5¡¢10¡¢20 L/pl;·Å´ó100±¶ uint16_t cal_pulse_width; // ±ê¶¨Âö³å¿í¶È µ¥Î»ms uint8_t reserve[4]; } CAL_PULSE_PARA_T; // ±ê¶¨Âö³å²ÎÊý #define SYS_FLOW_ALARM_CFG_FORMAT_SIZE sizeof(SYS_FLOW_ALARM_CFG_T) typedef struct { float sys_flow_up_1; //µ¥Î» Nm^3 /h float sys_flow_up_2; float sys_flow_down_1; float flow_up_2_replace_value; float small_flow_excision_value; uint8_t reserve[8]; } SYS_FLOW_ALARM_CFG_T; // ϵͳÁ÷Á¿±¨¾¯ÅäÖà #define SYS_PRESS_ALARM_CFG_FORMAT_SIZE sizeof(SYS_PRESS_ALARM_CFG_T) typedef struct { /*ÐÞÕý·½·¨£¨Ò»ÔªÒ»´Îº¯Êý£©£ºY = k * X + b ÐÞÕýѹÁ¦ = press_correction_factor * ԭʼѹÁ¦ + press_intercept*/ float press_correction_factor; // ÐÞÕýϵÊý Ò²½ÐбÂÊ float press_intercept; // ÐÞÕý½Ø¾à float press_up_value; float press_up_up_value; float press_down_value; float press_down_down_value; float press_up_scope; float press_down_scope; float press_down_down_replace; uint8_t reserve[8]; } SYS_PRESS_ALARM_CFG_T; // ѹÁ¦±¨¾¯ÅäÖà #define SYS_TEMP_ALARM_CFG_FORMAT_SIZE sizeof(SYS_TEMP_ALARM_CFG_T) typedef struct { float temp_correction_factor; float temp_intercept; int16_t temp_up_value; int16_t temp_up_up_value; int16_t temp_down_value; int16_t temp_down_down_value; int16_t temp_up_scope; int16_t temp_down_scope; int16_t temp_up_up_replace; float temp_drastic_change;//ζȾç±ä int16_t cpu_temp_up_scope; int16_t cpu_temp_down_scope; uint8_t reserve[8]; } SYS_TEMP_ALARM_CFG_T; // ζȱ¨¾¯ÅäÖà #define MASTER_SOFT_HARD_FORMAT_SIZE sizeof(MASTER_SOFT_HARD_PARA_T) typedef struct { uint8_t master_pcb_num[5]; // pcbÐòÁкŠuint8_t master_pcb_type[5]; // pcbÐͺŠuint8_t master_hardware_ver[5]; // Ó²¼þ°æ±¾ uint8_t master_firmware_ver[4]; // ¹Ì¼þ°æ±¾ uint8_t master_firmware_crc[2]; // ¹Ì¼þcrc uint8_t master_firmware_time[3]; // ¹Ì¼þ°æ±¾ÈÕÆÚ uint8_t reserve[10]; } MASTER_SOFT_HARD_PARA_T; #define MASTER_BASIC_FORMAT_SIZE sizeof(MASTER_BASIC_PARA_T) typedef struct { DEVICE_MODEL device_type_bcd; uint16_t plant_code_bcd; uint8_t factory_number[10]; uint8_t specifications_model[20]; uint8_t reserve[20]; } MASTER_BASIC_PARA_T; #define REALTIME_DATA_FORMAT_SIZE sizeof(SYS_REAL_TIME_DATA_T) typedef struct { struct measure_para { double forward_cumulate_sc; // ÕýÏò±ê¿öÀÛ»ýÁ¿ double forward_cumulate_wc; double cal_cumulate_reserve[2]; // ±ê¶¨ÀÛ»ýÁ¿_Ô¤Áô double err_forward_cumulate_reserve[2]; // ´íÎóÀÛ»ýÁ¿_Ô¤Áô float instant_wc; // µ¥Î» m^3/h float instant_wc_avg; // ˲ʱ¹¤¿ö¾ùÖµ,×î½ü20´Î²É¼¯µÄ˲ʱÁ÷Á¿Æ½¾ùÖµ float instant_sc; float temperature; float temp_amend; // ζÈÐÞÕýÖµ float temp_avg; // ζȾùÖµ float pressure; float press_amend; // ѹÁ¦ÐÞÕýÖµ float press_avg; // ѹÁ¦¾ùÖµ float compressibility_factor; // ѹËõÒò×Ó float C_coefficient_reserve; // CϵÊý_Ô¤Áô float K_coefficient_reserve; // KϵÊý_Ô¤Áô } measure_para_s; // ¼ÆÁ¿²ÎÊý struct time_para { uint8_t year; uint8_t month; uint8_t day; uint8_t hour; uint8_t minute; uint8_t second; } time_para_s; // ʱ¼ä²ÎÊý BCD struct state_para { float cpu_temperature; // »·¾³ÎÂ¶È uint8_t lith_vcc; uint8_t alka_vcc; float tof_up; float tof_down; float tof_diff; uint8_t signal_intensity_up; uint8_t signal_intensity_down; uint8_t signal_gain_up; uint8_t signal_gain_down; uint16_t snr_up; // ÐÅÔë±È_ÉÏͨµÀ uint16_t snr_down; uint16_t real_line_a; //ÕæÊµ´¥·¢Ïß uint16_t real_line_b; float sound_vel; // µ¥Î» £ºm/s float flow_vel; } state_para_s; // ̽ͷ_״̬²ÎÊý } SYS_REAL_TIME_DATA_T; // ϵͳʵʱÊý¾Ý£¨ÖØÒª£© #pragma pack() extern float sys_device_flow_min_g; extern float sys_device_flow_qt_g; extern __IO uint16_t auto_exit_start_min_time_g; extern __IO uint16_t cal_mode_exit_cnt_g; extern __IO uint16_t cal_mode_force_exit_cnt_g; extern uint8_t sys_device_flow_max_g; extern uint8_t cal_mode_exit_save_cumulate_flag_g; extern SYS_TIME_T sys_time_g; extern SYS_SOME_FLAG_T sys_some_flag_g; extern MASTER_SOFT_HARD_PARA_T master_soft_hard_para_g; extern SYS_REAL_TIME_DATA_T sys_realtime_data_g; extern SYS_FLOW_ALARM_CFG_T sys_flow_alarm_cfg_g; extern SYS_PRESS_ALARM_CFG_T sys_press_alarm_cfg_g; extern SYS_TEMP_ALARM_CFG_T sys_temp_alarm_cfg_g; extern CAL_PULSE_PARA_T cal_pulse_para_g; extern MASTER_BASIC_PARA_T master_basic_papa_g; extern SECOND_ORDER_CORR_T sec_order_corr_set_g; extern SECOND_ORDER_CORR_T sec_order_corr_real_g; void SetParaMode_AutoExitProcess(TEMP_SYS_MODE_CNV_CMD *pCnv_cmd_flag, __IO RTC_TimeDateTypeDef *calendar_p); void CalMode_AutoExitProcess(MEDIA_STATUS medium_flag, TEMP_SYS_MODE_CNV_CMD *pCnv_cmd_flag, __IO RTC_TimeDateTypeDef *calendar_p); void Master_SoftHardPara_Init(void); void Sys_MappingPara_Init(void); void SecondOrder_RealParaCalculate_Init(void); void Sys_GetUnitType_Init(void); void Sys_GetUnitType_Set(uint8_t device_type_before); #endif