#ifndef _SIZHU_CTRL_WORD_H #define _SIZHU_CTRL_WORD_H #include "define_all.h" #include "extern_rtc.h" //#include "sizhu_alarm_record.h" #define __SYS_STATUS_BYTES_GET(__HANDLE__) (system_status_word_g.status_word.__HANDLE__) //ÒÔÏÂ״̬ÖÃλÊʺϵ¥bit״̬ÖÃλ(Ò»°ãÓжÔÓ¦±¨¾¯)£¬²»Êʺ϶àbit״̬£¬±ÈÈç·§ÃÅ״̬ռ¶à¸öbit£¬²»ÄÜÓà #define __SYS_STATUS_BYTES_STATUS(__HANDLE__, __FLAG__, __ID__) \ do \ { \ if (__SYS_STATUS_BYTES_GET(__HANDLE__) != __FLAG__) \ { \ (system_status_word_g.status_word.__HANDLE__ = __FLAG__); \ if(__FLAG__ == RESET) \ Alarm_List_Node_Deleted(&pList_head,__ID__); \ else if(__FLAG__ == SET) \ Alarm_List_Node_PushBack(&pList_head,__ID__); \ } \ } while (0) //ûÓжÔӦ״̬×ֵı¨¾¯×Öµ¥¶ÀÖÃλ #define __SYS_ALARM_BYTES_SET(__HANDLE__,__ID__) \ do \ { \ if(__SYS_ALARM_CTL_BYTES_GET(__HANDLE__)){ \ system_alarm_word_for_valve_g.alarm_word.__HANDLE__ = SET; \ sizhuAlarmRecord(ALARM_HAPPEN,__ID__); \ if(__SYS_ALARM_REPORT_CTL_BYTES_GET(__HANDLE__) ==SET){ \ if(AlarmCntIncrease(__ID__) ==SET){ \ system_alarm_word_g.alarm_word.__HANDLE__ = SET; \ AlarmTriggerWrcFlag = SET; \ } \ } \ Alarm_List_Node_PushBack(&pList_head,__ID__); \ } \ } while (0) //״̬×ֺͱ¨¾¯×ÖͬʱÖÃ룬µ«Ö»Êʺϵ¥bit״̬ÖÃ룬²»Êʺ϶àbit״̬£¬±ÈÈç·§ÃÅ״̬ռ¶à¸öbit£¬²»ÄÜÓá£ÁíÍâÓÐЩ±¨¾¯Ã»ÓжÔӦ״̬×ֵ쬱ÈÈ縴λ¡¢²ÎÊýÐ޸ĵȱ¨¾¯£¬ÔòÒ²²»ÄÜÓã¬ÐèÒªµ¥¶À´¦Àí #define __SYS_STATUS_ALARM_BYTES_SET(__HANDLE__,__ID__) \ do \ { \ if ((__SYS_STATUS_BYTES_GET(__HANDLE__) != SET)&&(__SYS_ALARM_CTL_BYTES_GET(__HANDLE__))){ \ system_status_word_g.status_word.__HANDLE__ = SET; \ system_alarm_word_for_valve_g.alarm_word.__HANDLE__ = SET; \ sizhuAlarmRecord(ALARM_HAPPEN,__ID__); \ if(__SYS_ALARM_REPORT_CTL_BYTES_GET(__HANDLE__) ==SET){ \ if(AlarmCntIncrease(__ID__) ==SET){ \ system_alarm_word_g.alarm_word.__HANDLE__ = SET; \ AlarmTriggerWrcFlag = SET; \ } \ } \ Alarm_List_Node_PushBack(&pList_head,__ID__); \ } \ } while (0) #define __SYS_FUNC_CFG_BYTES_GET(__HANDLE__) (system_function_ctrl_word_g.fun_ctrl_word.__HANDLE__) #define __SYS_ALARM_CTL_BYTES_GET(__HANDLE__) (system_alarm_ctrl_word_g.alarm_ctl_word.__HANDLE__) #define __SYS_ALARM_REPORT_CTL_BYTES_GET(__HANDLE__) (system_alarm_report_ctrl_word_g.alarm_ctl_word.__HANDLE__) #define SYSTEM_SINGLE_BIT_SET1 0x0001 #define SYSTEM_SINGLE_BIT_SET0 0x0000 /*******************************˼ÖþÐÂϵͳ״̬×Ö******************************/ #define SSW_LCD_ALWAYS_SHOW_MODE 0x0001 #define SSW_LCD_FLOW_SHOW_MODE 0x0002 #define SSW_WORK_STATE_CALIBRATION 0x0001 #define SSW_WORK_STATE_PARA_CONFIG 0x0002 #define SSW_WORK_STATE_PARA_SHOW 0x0003 #define SSW_VALVE_STATUS_OPEN 0x0001 #define SSW_VALVE_STATUS_CLOSE 0x0002 #define SSW_VALVE_STATUS_OPENING 0x0003 #define SSW_VALVE_STATUS_CLOSEING 0x0004 #define SSW_VALVE_STATUS_ERR 0x0005 #define SSW_BILLING_TYPE_TERMINAL 0x0001 #define SSW_BILLING_TYPE_CENTER 0x0002 #define SSW_MEDIA_STATUS_WATER 0x0001 #define SSW_MEDIA_STATUS_AIR 0x0002 #define SSW_MEDIA_STATUS_GAS 0x0003 #define SSW_CHANNEL_REMOVAL_STATUS_UP 0x0001 #define SSW_CHANNEL_REMOVAL_STATUS_DOWN 0x0002 #define SSW_CHANNEL_REMOVAL_STATUS_MID 0x0003 /*******************************˼ÖþÐÂϵͳ״̬×Ö******************************/ /*******************************˼ÖþÐÂϵͳ¹¦ÄÜ¿ØÖÆ×Ö******************************/ #define SFCW_CURRENT_LOOP_WORK_CONDITION 0x0004 #define SFCW_CURRENT_LOOP_LOW_LIMIT 0x0002 #define SFCW_CURRENT_LOOP_OPEN 0x0001 #define SFCW_LCD_BIDIRECTIONAL 0x0004 #define SFCW_LCD_NORMAL_SHOW_MODE 0x0000 #define SFCW_LCD_FLOW_SHOW_MODE 0x0002 #define SFCW_LCD_ALWAYS_SHOW_MODE 0x0001 #define SFCW_PRE_CORRECTION_TYPE 0x0000 #define SFCW_TEM_CORRECTION_TYPE 0x0000 #define SFCW_MANUAL_UP_CHANNEL_REMOVAL_CTRL 0x0004 #define SFCW_MANUAL_DOWN_CHANNEL_REMOVAL_CTRL 0x0002 #define SFCW_MANUAL_MID_CHANNEL_REMOVAL_CTRL 0x0001 #define SFCW_MANUAL_ALL_CHANNEL_REMOVAL_CTRL 0x0006 #define SFCW_BILLING_TYPE_NONE 0x0000 #define SFCW_BILLING_TYPE_TERMINAL 0x0001 #define SFCW_BILLING_TYPE_CENTER 0x0002 /*******************************±¨¾¯ID******************************/ typedef enum { ALARM_ID_NORMAL = 0x0U, ALARM_ID_SYSTEM_START, // ¸´Î» ½ö½öÊDZ¨¾¯ÀàÐͲ»²úÉú¹Ø·§ ALARM_ID_EX_POWER_STATUS_CHANGE, ALARM_ID_COVER_OPEN,//¿ª¸Ç1ÊÇ¿ª¸Ç ALARM_ID_MAINBOARD_REMOVAL,//¿ª¸Ç2ÊÇÖ÷°åÒÆ³ý ALARM_ID_GPRS_FAILED, ALARM_ID_LCD_NUMBER_OVERRUN, ALARM_ID_LITH_BAT_LOW = 0x10, // ﮵çµÍµç±¨¾¯/¹Ø·§ ALARM_ID_LITH_BAT_DOWN, ALARM_ID_LITH_BAT_REMOVAL, ALARM_ID_ALKA_BAT_LOW, ALARM_ID_ALKA_BAT_DOWN, ALARM_ID_ALKA_BAT_REMOVAL, ALARM_ID_VALVE_BAT_LOW, ALARM_ID_VALVE_BAT_DOWN, ALARM_ID_RTC_BAT_LOW, ALARM_ID_TEM_TRANSMITTER_FAILURE = 0x20, // ζÈÒì³£±¨¾¯/¹Ø·§ ALARM_ID_TEM_EXCEED_UP_LIMIT, ALARM_ID_TEM_EXCEED_UP_UP_LIMIT, ALARM_ID_TEM_EXCEED_LOW_LIMIT, ALARM_ID_TEM_EXCEED_LOW_LOW_LIMIT, ALARM_ID_PRE_TRANSMITTER_FAILURE, ALARM_ID_PRE_EXCEED_UP_LIMIT, ALARM_ID_PRE_EXCEED_UP_UP_LIMIT, ALARM_ID_PRE_EXCEED_LOW_LIMIT, ALARM_ID_PRE_EXCEED_LOW_LOW_LIMIT, ALARM_ID_AMBIENT_TEM_EXCEED_UP_LIMIT = 0x30, ALARM_ID_AMBIENT_TEM_EXCEED_LOW_LIMIT, ALARM_ID_AMBIENT_TEM_SUDDEN_CHANGE,//»·Î¾ç±ä ALARM_ID_LCD_AMBIENT_TEM_EXCEED_LOW_LIMIT,//ÒºÏÔµÍΠALARM_ID_MEASURE_SONIC_SENSOR_LOSS = 0x40, // ̽ͷ¶ªÊ§±¨¾¯/¹Ø·§ ALARM_ID_MEASURE_FLOW_VELOCITY_ABNORMAL,//Á÷ËÙÒì³£ ALARM_ID_MEASURE_TIME_DIFF_ABNORMAL,//ʱ¼ä²îÒì³£ ALARM_ID_MEASURE_SOUND_VELOCITY_ABNORMAL,//ÉùËÙÒì³£ ALARM_ID_MEASURE_SNR_ABNORMAL,//ÐÅÔë±ÈÒì³£ ALARM_ID_MEASURE_SIHNAL_OVERFLOW_ABNORMAL,//ÐźÅÒç³öÒì³£ ALARM_ID_MEASURE_THRESHOLD_ABNORMAL,//ÐźÅãÐÖµÒì³£ ALARM_ID_MEASURE_GAIN_ABNORMAL,//ÐźÅÔöÒæÒì³£ ALARM_ID_MEDIUM_WATER,//½øË® ALARM_ID_MEDIUM_ABNORMAL,//½éÖÊÒì³£ ALARM_ID_DISMANTLE_METER_ABNORMAL = 0x50,//²ð±íÒì³£ ALARM_ID_METERING_UNIT_ABNORMAL , // ¼ÆÁ¿µ¥ÔªÒì³£ ALARM_ID_MEASURE_CHANNEL_REMOVAL,//ÉùµÀÇгý ALARM_ID_FLOW_EXCEED_UP_LIMIT = 0x60,//Á÷Á¿³¬ÏÞ1 ALARM_ID_FLOW_EXCEED_UP_UP_LIMIT,//Á÷Á¿³¬ÏÞ2 ALARM_ID_FLOW_EXCEED_UP_UP_LIMIT2,//Á÷Á¿³¬ÏÞ3 ALARM_ID_FLOW_BIDIRECTIONAL,//·´ÏòÁ÷Á¿ ALARM_ID_FLOW_CONSTANT,//ºãÁ÷ ALARM_ID_FLOW_SMALL,//СÁ÷Á¿ ALARM_ID_GAS_LEAK,//ÆøÌåй© ALARM_ID_VALVE_ABNORMAL = 0x70,//·§ÃÅÒì³£±¨¾¯ ALARM_ID_VALVE_CLOSE_GAS_RUNNING_ABNORMAL,//¹Ø·§×߯ø ALARM_ID_FLOW_BAT_LOW = 0x80,//¶Ô½ÓÉ豸µÍµç ALARM_ID_FLOW_BAT_DOWN,//¶Ô½ÓÉ豸µôµç ALARM_ID_BROKEN_LINE,//¶ÏÏß±¨¾¯ ALARM_ID_E2P_W_ABNORMAL,//eepromдÒì³£ ALARM_ID_E2P_R_ABNORMAL,//eeprom¶ÁÒì³£ ALARM_ID_READ_485_ABNORMAL,//¶Á485Òì³£ ALARM_ID_485_READING_SMALLER_ABNORMAL,//485¶ÁÊýÒì³£±äС ALARM_ID_EX_TRIGGER_CLOSE_VALVE, //Íⲿ´¥·¢¹Ø·§ ALARM_ID_BALANCE_SMALLER1 = 0x90,//Óà¶îÉÙ¶î ALARM_ID_BALANCE_SMALLER2, // Óà¶îÉÙ¶î1±¨¾¯/¹Ø·§ ALARM_ID_BALANCE_SMALLER3, ALARM_ID_BALANCE_SMALLER4, ALARM_ID_BALANCE_SMALLER5, ALARM_ID_CUMULATIVE_GAS_ARRIVE,//ÀÛ»ýÆøÁ¿µ½ ALARM_ID_N_DAYS_NO_GAS_ARRIVE,//¶àÌìÎÞÓÃÆø ALARM_ID_N_DAYS_NO_REPORT_ARRIVE,//¶àÌìÎÞÉϱ¨ ALARM_ID_OP_VALVE_KEY = 0x996, // ½ö½öÊǹط§ÀàÐͲ»²úÉú±¨¾¯ ALARM_ID_CL_VALVE_KEY, ALARM_ID_OP_VALVE_CMD, ALARM_ID_CL_VALVE_CMD, } SYS_ALARM_VALVE_T; // ±¨¾¯ºÍ¹Ø·§ÀàÐÍID #pragma pack(1) /*********************************ϵͳ״̬×ÖÏà¹Ø£¬×´Ì¬×ÖÈç¹ûÓжÔÓ¦±¨¾¯×Ö£¬ÔòÃû³ÆÐèÒªÒ»Ñù**************************************/ typedef struct system_status_word_inf { uint16_t lcd_mode : 3; uint16_t : 1; uint16_t account_state : 1; uint16_t flow_direction : 1; uint16_t work_mode :2; uint16_t : 1; // Ô¤Áô uint16_t power_state : 1; uint16_t : 1; uint16_t cover_open :1; uint16_t mainboard_remove :1; uint16_t : 3; uint16_t valve_state : 3; uint16_t valve_lock : 1; uint16_t set_cumulate_up_to : 1; uint16_t no_use_gas_date_up_to : 1; uint16_t no_gprs_date_up_to : 1; uint16_t virtual_billing : 1; uint16_t billing_type : 2; uint16_t : 1; // Ô¤Áô uint16_t balance_small_1 : 1; uint16_t balance_small_2 : 1; uint16_t balance_small_3 : 1; uint16_t balance_small_4 : 1; uint16_t balance_small_5 : 1; uint16_t lith_low : 1; uint16_t lith_down : 1; uint16_t lith_remove : 1; uint16_t alka_low : 1; uint16_t alka_down : 1; uint16_t alka_remove : 1; uint16_t flow_meter_low_pwr: 1; uint16_t flow_meter_under_pwr: 1; uint16_t gprs_status : 1; uint16_t RS485_err : 1; //RS485Òì³£ uint16_t RS485_lessen : 1; //RS485¶ÁÊý±äС uint16_t broken_line : 1; uint16_t valve_bat_low: 1; uint16_t valve_bat_down: 1; uint16_t rtc_err: 1; uint16_t ex_trigger_close_valve :1; uint16_t temp_err : 1; uint16_t temp_up : 1; uint16_t temp_up_up : 1; uint16_t temp_down : 1; uint16_t temp_down_down : 1; uint16_t cpu_temp_up : 1; uint16_t cpu_temp_down : 1; uint16_t tem_sudden_change: 1; uint16_t press_err : 1; uint16_t press_up : 1; uint16_t press_up_up : 1; uint16_t press_down : 1; uint16_t press_down_down : 1; uint16_t : 3; uint16_t flow_ver_err : 1; uint16_t tof_diff_err : 1; uint16_t sound_vel_err : 1; uint16_t snr_err : 1; uint16_t sig_up : 1; uint16_t sig_th_err : 1; uint16_t gain_err : 1; uint16_t ut_lose : 1; uint16_t media_status : 2; uint16_t dismantle : 1; uint16_t : 1; uint16_t channel_removal_status:2; uint16_t : 2; uint16_t gas_leakage : 1; uint16_t lcd_up : 1; uint16_t lcd_temp_low : 1; uint16_t flow_up_1 : 1; uint16_t flow_up_2 : 1; uint16_t flow_up_3 : 1; uint16_t small_flow:1; uint16_t constant_flow : 1; uint16_t cl_have_flow : 1; uint16_t : 2; uint16_t current_loop_open: 1; uint16_t : 4; }SYSTEM_STA_WORD_T; #define SYSTEM_STATUS_WORD_INF_LENGTH sizeof(SYSTEM_STA_WORD_T) typedef union { u16 status_word_union[SYSTEM_STATUS_WORD_INF_LENGTH>>1]; SYSTEM_STA_WORD_T status_word; }SYSTEM_STATUS_WORD_T; /*********************************ϵͳ״̬×ÖÏà¹Ø**************************************/ /*********************************¹¦ÄÜ¿ØÖÆ×ÖÏà¹Ø**************************************/ typedef struct { uint16_t current_loop_set : 3; uint16_t : 1; uint16_t small_flow_cut_off : 1; uint16_t : 2; uint16_t bidirectional_measure: 1; uint16_t lcd_mode: 3; uint16_t : 5; uint16_t compressibility_factor_choose : 2; uint16_t compressibility_factor_type : 1; uint16_t pre_correction_type : 3; uint16_t pre_err_process_mode: 2; uint16_t : 3; uint16_t tem_correction_type : 3; uint16_t tem_err_process_mode : 2; uint16_t penalty_measure2 : 1; uint16_t penalty_measure3 : 1; uint16_t : 6; uint16_t measure_channel_removal : 3; uint16_t manual_flow_para_ctrl: 1; uint16_t : 4; uint16_t balance_sufficient_allow_open_valve: 1; uint16_t exti_flag: 1; uint16_t virtual_billing : 1; uint16_t : 1; uint16_t calibration_mode: 1; uint16_t account_open: 1; uint16_t : 2; uint16_t no_show_balance : 1; uint16_t no_show_price: 1; uint16_t no_show_logo : 1; uint16_t : 3; uint16_t billing_type: 2; uint16_t : 16; }SYSTEM_FUN_CTRL_WORD_T; #define SYSTEM_FUNCTION_CTRL_WORD_INF_LENGTH sizeof(SYSTEM_FUN_CTRL_WORD_T) typedef union system_function_ctrl_word_inf //ϵͳ¹¦ÄÜ¿ØÖÆ×Ö { u16 fun_ctrl_union[SYSTEM_FUNCTION_CTRL_WORD_INF_LENGTH>>1]; SYSTEM_FUN_CTRL_WORD_T fun_ctrl_word; }SYSTEM_FUNCTION_CTRL_WORD_T; /*********************************¹¦ÄÜ¿ØÖÆ×ÖÏà¹Ø**************************************/ /*********************************±¨¾¯¿ØÖÆ×ÖÏà¹Ø£¬×´Ì¬×ÖÈç¹ûÓжÔÓ¦±¨¾¯×Ö£¬ÔòÃû³ÆÐèÒªÒ»Ñù**************************************/ typedef struct { uint16_t : 4; // Ô¤Áô uint16_t account_status : 1; uint16_t flow_bidirectional : 1; uint16_t : 2; uint16_t system_start : 1; uint16_t power_state : 1; uint16_t : 1; uint16_t cover_open : 1; uint16_t mainboard_remove : 1; uint16_t : 3; uint16_t valve_error : 1; uint16_t valve_state_change : 1; uint16_t : 2; uint16_t set_cumulate_up_to : 1; uint16_t no_use_gas_date_up_to : 1; uint16_t no_gprs_date_up_to : 1; uint16_t : 4; uint16_t balance_small_1 : 1; uint16_t balance_small_2 : 1; uint16_t balance_small_3 : 1; uint16_t balance_small_4 : 1; uint16_t balance_small_5 : 1; uint16_t lith_low : 1; uint16_t lith_down : 1; uint16_t lith_remove : 1; uint16_t alka_low : 1; uint16_t alka_down : 1; uint16_t alka_remove : 1; uint16_t flow_meter_low_pwr: 1; uint16_t flow_meter_under_pwr: 1; uint16_t gprs_status : 1; uint16_t RS485_err : 1; uint16_t RS485_lessen : 1; //485¶ÁÊé±äС uint16_t broken_line : 1; uint16_t valve_bat_low:1; uint16_t valve_bat_down:1; uint16_t rtc_err: 1; uint16_t ex_trigger_close_valve :1; uint16_t temp_err : 1; uint16_t temp_up : 1; uint16_t temp_up_up : 1; uint16_t temp_down : 1; uint16_t temp_down_down : 1; uint16_t cpu_temp_up : 1; uint16_t cpu_temp_down : 1; uint16_t tem_sudden_change : 1; uint16_t press_err : 1; uint16_t press_up : 1; uint16_t press_up_up : 1; uint16_t press_down : 1; uint16_t press_down_down : 1; uint16_t : 3; uint16_t flow_vel_err : 1; uint16_t tof_diff_err : 1; uint16_t sound_vel_err : 1; uint16_t snr_err : 1; uint16_t sig_up : 1; uint16_t sig_th_err : 1; uint16_t gain_err : 1; uint16_t ut_lose : 1; uint16_t media_water : 1; uint16_t media_err : 1; uint16_t dismantle : 1; uint16_t : 1; uint16_t channel_removal : 1; uint16_t : 3; uint16_t gas_leakage : 1; uint16_t lcd_up : 1; uint16_t lcd_temp_low : 1; uint16_t flow_up_1 : 1; uint16_t flow_up_2 : 1; uint16_t flow_up_3 : 1; uint16_t constant_status : 2; uint16_t cl_have_flow : 1; uint16_t : 7; uint16_t gas_cumulate_amend : 1; uint16_t balance_amend : 1; uint16_t temp_para_amend : 1; uint16_t press_para_amend : 1; uint16_t billing_para_amend : 1; uint16_t current_loop_para_amend: 1; uint16_t low_pulse_para_amend: 1; uint16_t : 1; uint16_t gas_cal_amend : 1; uint16_t gas_para_amend : 1; uint16_t pluse_cal_amend : 1; uint16_t ut_err_amend : 1; uint16_t ut_cal_amend : 1; uint16_t : 3; } SYS_ALARM_T; #define SYSTEM_ALARM_WORD_INF_LENGTH sizeof(SYS_ALARM_T) typedef union { uint16_t alarm_word_union[SYSTEM_ALARM_WORD_INF_LENGTH >> 1]; SYS_ALARM_T alarm_word; }SYSTEM_ALARM_WORD_T; // ±¨¾¯×Ö typedef union { uint16_t alarm_ctl_word_union[SYSTEM_ALARM_WORD_INF_LENGTH >> 1]; SYS_ALARM_T alarm_ctl_word; }SYSTEM_ALARM_CTRL_WORD_T; // ±¨¾¯¿ØÖÆ×Ö //typedef union //{ // uint16_t alarm_ctl_send_union[SYSTEM_ALARM_WORD_INF_LENGTH >> 1]; // SYS_ALARM_T alarm_report_ctrl_word; //} SYSTEM_ALARM_REPORT_CTRL_WORD_T; // ±¨¾¯Éϱ¨¿ØÖÆ ¸ñʽ¸ú±¨¾¯¿ØÖÆ×ÖÒ»Ñù£¬ËùÒÔ²»ÓÃÔÙ¶¨ÒåÒ»¸ö½á¹¹ÌåÁË /*********************************±¨¾¯¿ØÖÆ×ÖÏà¹Ø**************************************/ /*********************************¹Ø·§¿ØÖÆ×ÖÏà¹Ø**************************************/ //¹Ø·§¿ØÖÆ×Ö2λ±ê־붨Òå #define VALVE_CTRL_FLAG_NONE 0x00 #define VALVE_CTRL_FLAG_ONLY_CLSOSE 0x01 #define VALVE_CTRL_FLAG_LOCK_AND_CLSOSE 0x03 //¹Ø·§¿ØÖÆ×ֽṹÌ嶨Òå typedef struct { uint16_t gprs_cmd_need_close_valve_flag : 1; // Ô¶´«ÃüÁî uint16_t gprs_cmd_close_valve_type : 1; uint16_t flow_direction_need_close_valve_flag : 1; // Á÷ÏòÒì³£ uint16_t flow_direction_close_valve_type : 1; uint16_t power_sta_need_close_valve_flag : 1; // Íâµç±ä»¯ uint16_t power_sta_close_valve_type : 1; uint16_t : 2; uint16_t cover_open_need_close_valve_flag : 1; // ¿ª¸Ç uint16_t cover_open_close_valve_type : 1; uint16_t main_board_removal_need_close_valve_flag : 1; // ¿ª¸Ç uint16_t main_board_removal_close_valve_type : 1; uint16_t : 4; } VALVE_STATUS_CHANGE_T; typedef struct { uint16_t valve_error_need_close_valve_flag : 1; // ·§ÃÅÒì³£ uint16_t valve_error_close_valve_type : 1; uint16_t balance_1_need_close_valve_flag : 1; // Óà¶îÉÙ¶î1 uint16_t balance_1_close_valve_type : 1; uint16_t balance_2_need_close_valve_flag : 1; // Óà¶îÉÙ¶î2 uint16_t balance_2_close_valve_type : 1; uint16_t balance_3_need_close_valve_flag : 1; // Óà¶îÉÙ¶î3 uint16_t balance_3_close_valve_type : 1; uint16_t balance_4_need_close_valve_flag : 1; // Óà¶îÉÙ¶î4 uint16_t balance_4_close_valve_type : 1; uint16_t balance_5_need_close_valve_flag : 1; // Óà¶îÉÙ¶î5 uint16_t balance_5_close_valve_type : 1; uint16_t : 4; } VALVE_BILLING_CHANGE_1_T; typedef struct { uint16_t set_cumulate_need_close_valve_flag : 1; // ÉèÖõÄÀÛ»ýÆøÁ¿µ½ uint16_t set_cumulate_close_valve_type : 1; uint16_t no_use_gas_need_close_valve_flag : 1; // ÎÞÓÃÆøÌìÊýµ½ uint16_t no_use_gas_close_valve_type : 1; uint16_t no_gprs_need_close_valve_flag : 1; // ÎÞÉϱ¨ÌìÊý uint16_t no_gprs_close_valve_type : 1; uint16_t : 10; } VALVE_BILLING_CHANGE_2_T; typedef struct { uint16_t lith_low_need_close_valve_flag : 1; // ﮵çµÍµç uint16_t lith_low_close_valve_type : 1; uint16_t lith_down_need_close_valve_flag : 1; // ﮵çÇ·/µôµç uint16_t lith_down_close_valve_type : 1; uint16_t lith_remove_need_close_valve_flag : 1; // ﮵çÒÆ³ý uint16_t lith_remove_close_valve_type : 1; uint16_t alka_low_need_close_valve_flag : 1; // ¼îµçµÍµç uint16_t alka_low_close_valve_type : 1; uint16_t alka_down_need_close_valve_flag : 1; // ¼îµçÇ·/µôµç uint16_t alka_down_close_valve_type : 1; uint16_t alka_remove_need_close_valve_flag : 1; // ¼îµçÒÆ³ý uint16_t alka_remove_close_valve_type : 1; uint16_t gprs_fail_need_close_valve_flag : 1; // gprsʧ°Ü uint16_t gprs_fail_close_valve_type : 1; uint16_t : 2; } VALVE_VOLTAGE_CHANGE_1_T; typedef struct { uint16_t flow_bat_low_need_close_valve_flag :1; uint16_t flow_bat_low_need_close_valve_type :1; uint16_t flow_bat_down_need_close_valve_flag :1; uint16_t flow_bat_down_need_close_valve_type :1; uint16_t read_485_abnormal_need_close_valve_flag :1; uint16_t read_485_abnormal_need_close_valve_type :1; uint16_t read_485_smaller_abnormal_need_close_valve_flag :1; uint16_t read_485_smaller_abnormal_need_close_valve_type :1; uint16_t pulse_broken_need_close_valve_flag :1; uint16_t pulse_broken_need_close_valve_type :1; uint16_t valve_bat_low_need_close_valve_flag :1; uint16_t valve_bat_low_need_close_valve_type :1; uint16_t valve_bat_down_need_close_valve_flag :1; uint16_t valve_bat_down_need_close_valve_type :1; uint16_t : 2; // ¸ù¾ÝЭÒ飬»ù±¾É϶¼ÊÇSZV10XÏà¹ØµÄ²ÎÊý£¬È¼Æø±íÎÞÓà } VALVE_VOLTAGE_CHANGE_2_T; typedef struct { uint16_t temp_up_need_close_valve_flag : 1; // ζȳ¬ÉÏÏÞ uint16_t temp_up_close_valve_type : 1; uint16_t temp_up_up_need_close_valve_flag : 1; // ζȳ¬ÉÏÉÏÏÞ uint16_t temp_up_up_close_valve_type : 1; uint16_t temp_down_need_close_valve_flag : 1; // ζȳ¬ÏÂÏÞ uint16_t temp_down_close_valve_type : 1; uint16_t temp_down_down_need_close_valve_flag : 1; // ζȳ¬ÏÂÏÂÏÞ uint16_t temp_down_down_close_valve_type : 1; uint16_t press_up_need_close_valve_flag : 1; // ѹÁ¦³¬ÉÏÏÞ uint16_t press_up_close_valve_type : 1; uint16_t press_up_up_need_close_valve_flag : 1; // ѹÁ¦³¬ÉÏÉÏÏÞ uint16_t press_up_up_close_valve_type : 1; uint16_t press_down_need_close_valve_flag : 1; // ѹÁ¦³¬ÏÂÏÞ uint16_t press_down_close_valve_type : 1; uint16_t press_down_down_need_close_valve_flag : 1; // ѹÁ¦³¬ÏÂÏÂÏÞ uint16_t press_down_down_close_valve_type : 1; } VALVE_TP_ERR_1_T; typedef struct { uint16_t temp_err_need_close_valve_flag : 1; // ζȴíÎó uint16_t temp_err_close_valve_type : 1; uint16_t press_err_need_close_valve_flag : 1; // ѹÁ¦´íÎó uint16_t press_err_close_valve_type : 1; uint16_t ambient_temp_up_need_close_valve_flag : 1; // »·¾³Î¶ȳ¬ÉÏÏÞ uint16_t ambient_temp_up_close_valve_type : 1; uint16_t ambient_temp_down_need_close_valve_flag : 1; // »·¾³Î¶ȳ¬ÏÂÏÞ uint16_t ambient_temp_down_close_valve_type : 1; uint16_t ambient_temp_sudden_change_need_close_valve_flag : 1; // »·¾³Î¶ȳ¬ÏÂÏÞ uint16_t ambient_temp_sudden_change_close_valve_type : 1; uint16_t : 6; } VALVE_TP_ERR_2_T; typedef struct { uint16_t flow_vel_err_need_close_valve_flag : 1; // Á÷ËÙÒì³£ uint16_t flow_vel_err_close_valve_type : 1; uint16_t tof_diff_err_need_close_valve_flag : 1; // ·ÉÐÐʱ¼ä²îÒì³£ uint16_t tof_diff_err_close_valve_type : 1; uint16_t sound_vel_err_need_close_valve_flag : 1; // ÉùËÙÒì³£ uint16_t sound_vel_err_close_valve_type : 1; uint16_t snr_err_need_close_valve_flag : 1; // ÐÅÔë±ÈÒì³££¨Signal to Noise Ratio£© uint16_t snr_err_close_valve_type : 1; uint16_t sig_up_need_close_valve_flag : 1; // ÐźÅÒç³ö uint16_t sig_up_close_valve_type : 1; uint16_t sig_th_err_need_close_valve_flag : 1; // ÐźÅãÐÖµÒì³££¨Threshold£© uint16_t sig_th_err_close_valve_type : 1; uint16_t gain_err_need_close_valve_flag : 1; // ÔöÒæÒì³£ uint16_t gain_err_close_valve_type : 1; uint16_t ut_lose_need_close_valve_flag : 1; // ̽ͷ¶ªÊ§£¨Ultrasonic Transducer£© uint16_t ut_lose_close_valve_type : 1; } VALVE_MEASURE_ERR_1_T; typedef struct { uint16_t flooding_water_need_close_valve_flag : 1; // ½øË® uint16_t flooding_water_close_valve_type : 1; uint16_t media_err_need_close_valve_flag : 1; // ½éÖÊÒì³£ uint16_t media_err_close_valve_type : 1; uint16_t dismantle_need_close_valve_flag : 1; // ²ð±í uint16_t dismantle_close_valve_type : 1; uint16_t metering_unit_abnormal_need_close_valve_flag : 1;//¼ÆÁ¿µ¥ÔªÒì³£ uint16_t metering_unit_abnormal_need_close_valve_type : 1;//¼ÆÁ¿µ¥ÔªÒì³£ uint16_t : 8; } VALVE_MEASURE_ERR_2_T; typedef struct { uint16_t leakage_need_close_valve_flag : 1; // ÆøÌåй©£¨½ÓÍⲿ±¨¾¯Æ÷Åжϣ© uint16_t leakage_close_valve_type : 1; uint16_t lcd_up_need_close_valve_flag : 1; // lcdÏÔʾ³¬ÏÞ uint16_t lcd_up_close_valve_type : 1; uint16_t lcd_temp_low_need_close_valve_flag : 1; // lcdµÍΠuint16_t lcd_temp_low_close_valve_type : 1; uint16_t flow_up_1_need_close_valve_flag : 1; // Á÷Á¿³¬ÏÞ1 uint16_t flow_up_1_close_valve_type : 1; uint16_t flow_up_2_need_close_valve_flag : 1; // Á÷Á¿³¬ÏÞ2 uint16_t flow_up_2_close_valve_type : 1; uint16_t flow_up_3_need_close_valve_flag : 1; // Á÷Á¿³¬ÏÞ3 uint16_t flow_up_3_close_valve_type : 1; uint16_t cl_constant_flow_need_close_valve_flag : 1; // ¹Ø·§ºãÁ÷£¨Î¢Ð¡Á÷Á¿Ð¹Â©£© uint16_t cl_constant_flow_valve_type : 1; uint16_t op_constant_flow_close_valve_flag : 1; // ¿ª·§ºãÁ÷ uint16_t op_constant_flow_valve_type : 1; } VALVE_OTHER_ERR_1_T; typedef struct { uint16_t cl_have_flow_need_close_valve_flag : 1; // ¹Ø·§×߯ø uint16_t cl_have_flow_valve_type : 1; uint16_t e2p_write_err_need_close_valve_flag : 1; // e2pдÒì³£ uint16_t e2p_write_err_flow_valve_type : 1; uint16_t e2p_read_err_need_close_valve_flag : 1; // e2p¶ÁÒì³£ uint16_t e2p_read_err_flow_valve_type : 1; uint16_t : 10; } VALVE_OTHER_ERR_2_T; typedef struct { VALVE_STATUS_CHANGE_T valve_ctr_1; VALVE_BILLING_CHANGE_1_T valve_ctr_2; VALVE_BILLING_CHANGE_2_T valve_ctr_3; VALVE_VOLTAGE_CHANGE_1_T valve_ctr_4; VALVE_VOLTAGE_CHANGE_2_T valve_ctr_5; VALVE_TP_ERR_1_T valve_ctr_6; VALVE_TP_ERR_2_T valve_ctr_7; VALVE_MEASURE_ERR_1_T valve_ctr_8; VALVE_MEASURE_ERR_2_T valve_ctr_9; VALVE_OTHER_ERR_1_T valve_ctr_10; VALVE_OTHER_ERR_2_T valve_ctr_11; } VALVE_CTL_BYTES_T; // ¹Ø·§¿ØÖÆ×Ö // ¹Ø·§×Ö³¤¶È #define VALVE_CTL_LEN sizeof(VALVE_CTL_BYTES_T) //#define VALVE_CTL_LENGTH (sizeof(VALVE_STATUS_CHANGE_T) + sizeof(VALVE_BILLING_CHANGE_1_T) + sizeof(VALVE_BILLING_CHANGE_2_T) + \ // sizeof(VALVE_VOLTAGE_CHANGE_1_T) + sizeof(VALVE_VOLTAGE_CHANGE_2_T) + sizeof(VALVE_TP_ERR_1_T) + \ // sizeof(VALVE_TP_ERR_2_T) + sizeof(VALVE_MEASURE_ERR_1_T) + sizeof(VALVE_MEASURE_ERR_2_T) + \ // sizeof(VALVE_OTHER_ERR_1_T) + sizeof(VALVE_OTHER_ERR_2_T)) typedef union { uint16_t valve_ctrl_bytes_union[VALVE_CTL_LEN >> 1]; VALVE_CTL_BYTES_T valve_ctrl_bytes; }VALVE_CTL_BYTES_UNION_T; //±¨¾¯´ÎÊý¿ØÖƽṹÌå #define DAY_ALARM_TIMES 3 typedef struct { SYS_ALARM_VALVE_T alarm_id; uint16_t alarm_word_offset_bit; //¶ÔÓ¦±¨¾¯×ֵį«ÒÆÁ¿ uint16_t close_valve_word_offset_bit; //¶ÔÓ¦¹Ø·§×ֵį«ÒÆÁ¿ uint8_t day_times; //ÿÌìÉϱ¨´ÎÊý uint16_t day_cnt; } ALARM_CTRL_PARA_T; // ¹Ø·§¿ØÖÆ×Ö #pragma pack() extern FlagStatus AlarmTriggerWrcFlag; extern SYSTEM_STATUS_WORD_T system_status_word_g; extern SYSTEM_FUNCTION_CTRL_WORD_T system_function_ctrl_word_g; extern SYSTEM_ALARM_WORD_T system_alarm_word_g; extern SYSTEM_ALARM_WORD_T system_alarm_word_for_valve_g; //ÓÃÓÚ·§¿Ø£¬ÅжÏÍê·§¿ØÖ®ºóÇåÁã extern SYSTEM_ALARM_CTRL_WORD_T system_alarm_ctrl_word_g; extern SYSTEM_ALARM_CTRL_WORD_T system_alarm_report_ctrl_word_g; extern VALVE_CTL_BYTES_UNION_T valve_ctl_bytes_g; FlagStatus AlarmCntIncrease(SYS_ALARM_VALVE_T alarm_id); void AlarmCntClearAll(void); void EveryDayClearAlarmCnt(const sClockBCD sys_clockBCD_in ); void SysAlarmCtrlPro(void); #endif