| | |
| | | #include "sizhu_ctrl_word.h" |
| | | #include "system_run_fun.h" |
| | | #include "valve_control.h" |
| | | #include "system_mem_para.h" |
| | | |
| | | FlagStatus AlarmTriggerWrcFlag = RESET; |
| | | uint8_t AlarmTriggerCLoseValveNum = 0; //´¥·¢¹Ø·§±¨¾¯µÄÊýÁ¿£¬ÓÃÓÚ´ÓÁ´±íÖлñÈ¡±¨¾¯ID½øÐжÔÓ¦µÄ¹Ø·§´¦Àí |
| | | |
| | | SYSTEM_STATUS_WORD_T system_status_word_g; |
| | | SYSTEM_FUNCTION_CTRL_WORD_T system_function_ctrl_word_g = { \ |
| | | .fun_ctrl_word.billing_type = 0x02, \ |
| | | .fun_ctrl_word.billing_type = 0x02, \ |
| | | }; |
| | | |
| | | SYSTEM_ALARM_WORD_T system_alarm_word_g; //ÓÃÓÚÉϱ¨£¬Éϱ¨ÍêÇå³ý |
| | | SYSTEM_ALARM_WORD_T system_alarm_word_for_valve_g; //ÓÃÓÚ·§¿Ø£¬Éϱ¨ÍêÇå³ý |
| | | SYSTEM_ALARM_CTRL_WORD_T system_alarm_ctrl_word_g; |
| | | SYSTEM_ALARM_REPORT_CTRL_WORD_T system_alarm_report_ctrl_word_g; |
| | | VALVE_CTL_BYTES_UNION_T valve_ctl_bytes_g = {.valve_ctrl_bytes = { |
| | | {0}, |
| | | {0}, |
| | | {0}, |
| | | {1,0,1,1,1,1,0,0,0,0,0,0,0,0}, |
| | | {0,0,0,1,1}, |
| | | {0}, |
| | | {0}, |
| | | {0}, |
| | | {0}, |
| | | {0}, |
| | | {0},} |
| | | |
| | | SYSTEM_ALARM_WORD_T system_alarm_word_for_valve_g; //ÓÃÓÚ·§¿Ø£¬ÅжÏÍê·§¿ØÖ®ºóÇåÁã |
| | | |
| | | |
| | | SYSTEM_ALARM_CTRL_WORD_T system_alarm_ctrl_word_g= {.alarm_ctl_word={ |
| | | .system_start = 1, |
| | | .power_state = 1, |
| | | .valve_error = 1, |
| | | .valve_state_change = 1, |
| | | .set_cumulate_up_to = 1, |
| | | .no_use_gas_date_up_to = 1, |
| | | .no_gprs_date_up_to = 1, |
| | | .balance_small_3 = 1, |
| | | .lith_low = 1, |
| | | .lith_down = 1, |
| | | .lith_remove = 1, |
| | | .alka_low = 1, |
| | | .alka_down = 1, |
| | | .alka_remove = 1, |
| | | .gprs_status = 1, //Ô¶´«Ê§°ÜÖ»±¨¾¯£¬²»Éϱ¨ |
| | | .RS485_err = 1, |
| | | .RS485_lessen = 1, |
| | | .broken_line = 1, |
| | | .temp_err = 1, |
| | | .cpu_temp_up = 1, |
| | | .cpu_temp_down = 1, |
| | | .press_err = 1, |
| | | .lcd_up = 1, |
| | | .cl_have_flow = 1, |
| | | } |
| | | }; |
| | | SYSTEM_ALARM_CTRL_WORD_T system_alarm_report_ctrl_word_g= {.alarm_ctl_word={ |
| | | .system_start = 1, |
| | | .power_state = 1, |
| | | .valve_error = 1, |
| | | .valve_state_change = 1, |
| | | .set_cumulate_up_to = 1, |
| | | .no_use_gas_date_up_to = 1, |
| | | .no_gprs_date_up_to = 1, |
| | | .balance_small_3 = 1, |
| | | .lith_low = 1, |
| | | .lith_down = 1, |
| | | .lith_remove = 1, |
| | | .alka_low = 1, |
| | | .alka_down = 1, |
| | | .alka_remove = 1, |
| | | //.gprs_status = 1, //Ô¶´«Ê§°ÜÖ»±¨¾¯£¬²»Éϱ¨ |
| | | .RS485_err = 1, |
| | | .RS485_lessen = 1, |
| | | .broken_line = 1, |
| | | .temp_err = 1, |
| | | .cpu_temp_up = 1, |
| | | .cpu_temp_down = 1, |
| | | .press_err = 1, |
| | | .lcd_up = 1, |
| | | .cl_have_flow = 1, |
| | | } |
| | | }; |
| | | |
| | | |
| | | VALVE_CTL_BYTES_UNION_T valve_ctl_bytes_g = {.valve_ctrl_bytes = { |
| | | {0}, |
| | | {0}, |
| | | {0}, |
| | | {.lith_down_need_close_valve_flag =1,.lith_down_close_valve_type = 1,.lith_remove_need_close_valve_flag =1,.lith_remove_close_valve_type =1, |
| | | //.alka_down_need_close_valve_flag= 1,.alka_down_close_valve_type = 1,.alka_remove_need_close_valve_flag =1,.alka_remove_close_valve_type =1, |
| | | }, |
| | | {0}, |
| | | {0}, |
| | | {0}, |
| | | {0}, |
| | | {0}, |
| | | {0}, |
| | | {0},} |
| | | }; |
| | | |
| | | |
| | | #define alarm_ctrl_para_array_g_NUM (sizeof(alarm_ctrl_para_array_g) /sizeof(ALARM_CTRL_PARA_T) ) |
| | |
| | | } |
| | | break; |
| | | } |
| | | |
| | | if(count_i > 200) //ÔÝʱ»¹Ã»ÓÐ200¸ö±¨¾¯ |
| | | { |
| | | break; |
| | | } |
| | | } |
| | | return RESET; |
| | | } |
| | |
| | | //¼Ç¼µÄÉϴιط§ÔÒòÐèÒªÓÐÓÅÏȼ¶¸²¸Ç»úÖÆ£¬ Ç¿ÖÆÐԹط§¸²¸Ç·ÇÇ¿ÖÆÐԹط§£¬ ·ÇÓà¶îÔì³ÉµÄÇ¿ÖÆÐԹط§¸²¸ÇÓà¶îÔì³ÉµÄ¡£ |
| | | void SysAlarmCtrlPro(void) |
| | | { |
| | | uint16_t count_i; |
| | | uint16_t close_valve_ID; |
| | | uint8_t close_valve_flag; |
| | | |
| | | EveryDayClearAlarmCnt(sys_clockBCD_g); //ÿÌìÇå³ý±¨¾¯´ÎÊý |
| | | |
| | | /*±¨¾¯´¥·¢Éϱ¨*/ |
| | | if(AlarmTriggerWrcFlag ==SET){ |
| | | AlarmTriggerWrcFlag = RESET; |
| | | start_wrc_g = WRC_MEANS_ALARM;//´æÔÚ±¨¾¯ |
| | | // start_wrc_g = WRC_MEANS_ALARM;//´æÔÚ±¨¾¯ ²âÊÔÏÈ×¢ÊÍ |
| | | } |
| | | |
| | | /*±¨¾¯´¥·¢·§¿Ø*/ |
| | | for(count_i = 0;count_i <alarm_ctrl_para_array_g_NUM;count_i++ ){ |
| | | if(((system_alarm_word_for_valve_g.alarm_word_union[alarm_ctrl_para_array_g[count_i].alarm_word_offset_bit >>4 ] >>(alarm_ctrl_para_array_g[count_i].alarm_word_offset_bit & 0x0f)) & 0x01) == 0x01){ |
| | | close_valve_flag = valve_ctl_bytes_g.valve_ctrl_bytes_union [alarm_ctrl_para_array_g[count_i].close_valve_word_offset_bit >>4 ]>>(alarm_ctrl_para_array_g[count_i].close_valve_word_offset_bit & 0x0f); |
| | | close_valve_flag = close_valve_flag & 0x03; |
| | | if(close_valve_flag == VALVE_CTRL_FLAG_LOCK_AND_CLSOSE){ |
| | | //·§ÃÅËø¶¨Á¢¼´Íê³É£¬·§ÃÅÖ´ÐÐÐèÒªÒ»¶¨Ê±¼ä |
| | | ValveCtrlOrder(VC_CLOSE_AND_LOCK,VALVE_CTRL_SOURCE_AUTO); |
| | | |
| | | |
| | | //´¦Àí¹Ø·§ÔÒòID£¬Èç¹ûÒѾÓÐÇ¿ÖÆÐԹط§£¬ÔòÐèÒªÅжÏÓÅÏȼ¶£¬Óà¶îÀà¿ÉÒÔ±»¸²¸Ç£¬ÆäÓ಻Äܱ»¸²¸Ç£¬ÓÃÓÚÅжÏÊÇ·ñÊÇÓà¶îÀàÔì³ÉµÄ£¬Óà¶îÀàÔì³ÉµÄÔÚ³äÖµÖ®ºó¿ÉÒÔÖ±½Ó¿ª·§ |
| | | if((save_valve_para_g.valve_close_ID & 0x8000)==0x8000){ |
| | | close_valve_ID = save_valve_para_g.valve_close_ID & ~0x8000; |
| | | if((close_valve_ID ==ALARM_ID_BALANCE_SMALLER1)&&(close_valve_ID ==ALARM_ID_BALANCE_SMALLER2)&&(close_valve_ID ==ALARM_ID_BALANCE_SMALLER3)&&(close_valve_ID ==ALARM_ID_BALANCE_SMALLER4)&&(close_valve_ID ==ALARM_ID_BALANCE_SMALLER5)){ |
| | | save_valve_para_g.valve_close_ID = alarm_ctrl_para_array_g[count_i].alarm_id | 0x8000 ; //¹Ø·§ÔÒòIDµÈͬÓÚ±¨¾¯ID£¬ |
| | | } |
| | | }else{ |
| | | save_valve_para_g.valve_close_ID = alarm_ctrl_para_array_g[count_i].alarm_id | 0x8000; //¹Ø·§ÔÒòIDµÈͬÓÚ±¨¾¯ID£¬ |
| | | } |
| | | |
| | | }else if(close_valve_flag == VALVE_CTRL_FLAG_ONLY_CLSOSE){ |
| | | ValveCtrlOrder(VC_CLOSE,VALVE_CTRL_SOURCE_AUTO); |
| | | //´¦Àí¹Ø·§ÔÒòID£¬Èç¹ûÒѾÓÐÇ¿ÖÆÐԹط§£¬Ôò²»ÔÙ¸²¸Ç |
| | | if((save_valve_para_g.valve_close_ID & 0x8000)==0x8000){ |
| | | |
| | | }else{ |
| | | save_valve_para_g.valve_close_ID = alarm_ctrl_para_array_g[count_i].alarm_id ; //¹Ø·§ÔÒòIDµÈͬÓÚ±¨¾¯ID£¬ |
| | | } |
| | | |
| | | }else{} |
| | | |
| | | } |
| | | |
| | | if(count_i > 200) //ÔÝʱ»¹Ã»ÓÐ200¸ö±¨¾¯ |
| | | { |
| | | break; |
| | | } |
| | | } |
| | | //ÓÃÓڹط§µÄ±¨¾¯×ÖÇåÁã |
| | | for(count_i = 0;count_i <(SYSTEM_ALARM_WORD_INF_LENGTH >> 1);count_i++ ){ |
| | | system_alarm_word_for_valve_g.alarm_word_union[count_i] = 0; |
| | | } |
| | | |
| | | |
| | | |