#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
|