forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-16 5ac1d0febb8de5e91ce2463baea68ddac3f66091
Function/FLOW_METER_DATA_COLLECT/pulse_and_alarm_line.c
@@ -239,13 +239,30 @@
   
   /*¹Ø·§±¨¾¯Ïß*/
   //ÒòΪÐèÒª´¥·¢¹Ø·§£¬½ö¸´ÓöÏÏß¹¦ÄÜÔÚÕâÀïÅжϣ¬±¾Éí¹Ø·§¹¦ÄÜÔÚÖ÷Ñ­»·ÀïÃæ´¦Àí
   CV_lose_check_GPIO_Clk_Init();
   Close_Valve_Alarm_Line_GPIO_Clk_sleep();
   CV_LOSE_CHECK_DISABLE;
   if(((flow_meter_para_g.broken_line_multiplex & 0xf0)==BROKEN_LINE_MUTIPLEX_CLOSE_VALVE)&&(__SYS_ALARM_CTL_BYTES_GET(broken_line) == SET)){
      //ÓÅÏȸ´ÓÃ
      CV_lose_check_GPIO_Clk_Init();
      Close_Valve_Alarm_Line_GPIO_Clk_Init();
      CV_LOSE_CHECK_ENABLE;
      delay_ms(1);
      if(IO_JitterEliminationCheck(CV_ALM_A_PORT,CV_ALM_A_PIN,1,Bit_SET)==SET){
         __SYS_STATUS_BYTES_GET(broken_line) = SET ;
      }else{
            __SYS_STATUS_BYTES_GET(broken_line) = RESET ;
      }
      CV_LOSE_CHECK_DISABLE;
   }else{
      CV_lose_check_GPIO_Clk_Init();
      Close_Valve_Alarm_Line_GPIO_Clk_sleep();
      CV_LOSE_CHECK_DISABLE;
   }
}
#define ALARM_LINE_CONTINUE_TIMES  3       //±¨¾¯Ïß״̬³ÖÐøALARM_LINE_CONTINUE_TIMESÃëʱ¼äΪÓÐЧ
#define ALARM_LINE_CONTINUE_TIMES  3       //²»Äܳ¬¹ý250£¬±¨¾¯Ïß״̬³ÖÐøALARM_LINE_CONTINUE_TIMESÃëʱ¼äΪÓÐЧ
void PulseAndAlarmLineCheck(void)
{
@@ -265,7 +282,7 @@
         delay_ms(1);
         
         if(IO_JitterEliminationCheck(LF_PULSE_INT_PORT,LF_PULSE_INT_PIN,1,Bit_SET)==SET){
            broken_line_cnt ++  ;
            if(broken_line_cnt < 250) broken_line_cnt ++  ;
         }else{
            broken_line_cnt = 0 ;
         }
@@ -286,7 +303,7 @@
         
         if((flow_meter_para_g.flow_meter_code !=ASMODBUS)&&(flow_meter_para_g.flow_meter_code !=AS100MODBUS)&&(flow_meter_para_g.flow_meter_code !=SIARGO_MODBUS)){
            if(IO_JitterEliminationCheck(LF_PULSE_INT_PORT,LF_PULSE_INT_PIN,1,Bit_RESET)==SET){
               broken_line_cnt ++  ;
               if(broken_line_cnt < 250) broken_line_cnt ++  ;
            }else{
               broken_line_cnt = 0 ;
            }
@@ -294,8 +311,6 @@
            broken_line_cnt = 0 ;
         }
      }
      BasicTimer16_Init(BT1,240,PULSE_CHECK_DELAY_MS*(SYSCLOCK_U/240/1000)); //PULSE_CHECK_DELAY_MS ¶¨Ê±£¬ÓÃÓÚÂö³åµÄÑÓʱ¼ì²â£¬Âö³å³ÖÐø³¬¹ýPULSE_CHECK_DELAY_MSÓÐЧ£¬È¥¶¶
      
   }else{
      //²»ÓÃÂö³åÏß
@@ -314,7 +329,7 @@
      delay_ms(1);
      
      if(IO_JitterEliminationCheck(UNDER_PWR_INT_PORT,UNDER_PWR_INT_PIN,1,Bit_SET)==SET){
         broken_line_cnt ++  ;
         if(broken_line_cnt < 250) broken_line_cnt ++  ;
      }else{
         broken_line_cnt = 0 ;
      }
@@ -329,9 +344,9 @@
      delay_ms(1);
      
      if(IO_JitterEliminationCheck(UNDER_PWR_INT_PORT,UNDER_PWR_INT_PIN,1,Bit_RESET)==SET){
         __SYS_STATUS_BYTES_GET(flow_meter_under_pwr) = SET ;
         if(under_pwr_line_cnt < 250) under_pwr_line_cnt ++;
      }else{
         __SYS_STATUS_BYTES_GET(flow_meter_under_pwr) = RESET ;
         under_pwr_line_cnt = 0;
      }
      
      UV_LOSE_CHECK_DISABLE;
@@ -341,6 +356,11 @@
      UV_lose_check_GPIO_Clk_Init();
      Under_Pwr_INT_GPIO_Clk_sleep();
      UV_LOSE_CHECK_DISABLE;
   }
   //Ƿѹ±¨¾¯´¦Àí
   if(under_pwr_line_cnt >= ALARM_LINE_CONTINUE_TIMES){
      __SYS_STATUS_ALARM_BYTES_SET(flow_meter_under_pwr);
   }
   
   
@@ -353,7 +373,7 @@
      delay_ms(1);
      
      if(IO_JitterEliminationCheck(LOW_PWR_INT_PORT,LOW_PWR_INT_PIN,1,Bit_SET)==SET){
         broken_line_cnt ++  ;
         if(broken_line_cnt < 250) broken_line_cnt ++  ;
      }else{
         broken_line_cnt = 0 ;
      }
@@ -368,9 +388,9 @@
      delay_ms(1);
      
      if(IO_JitterEliminationCheck(LOW_PWR_INT_PORT,LOW_PWR_INT_PIN,1,Bit_RESET)==SET){
         __SYS_STATUS_BYTES_GET(flow_meter_low_pwr) = SET ;
         if(low_pwr_line_cnt < 250) low_pwr_line_cnt ++;
      }else{
            __SYS_STATUS_BYTES_GET(flow_meter_low_pwr) = RESET ;
         low_pwr_line_cnt = 0;
      }
      
      UV_LOSE_CHECK_DISABLE;
@@ -382,11 +402,61 @@
      LV_LOSE_CHECK_DISABLE;
   }
   
   //µÍµç±¨¾¯´¦Àí
   if(low_pwr_line_cnt >= ALARM_LINE_CONTINUE_TIMES){
      __SYS_STATUS_ALARM_BYTES_SET(flow_meter_low_pwr);
   }
   /*¹Ø·§±¨¾¯Ïß*/
   //ÒòΪÐèÒª´¥·¢¹Ø·§£¬³õʼ¿ÉÒÔ²»ÓÃÅжϣ¬ÔÚÖ÷Ñ­»·ÀïÃæ´¦Àí
   CV_lose_check_GPIO_Clk_Init();
   Close_Valve_Alarm_Line_GPIO_Clk_sleep();
   CV_LOSE_CHECK_DISABLE;
   if(((flow_meter_para_g.broken_line_multiplex & 0xf0)==BROKEN_LINE_MUTIPLEX_CLOSE_VALVE)&&(__SYS_ALARM_CTL_BYTES_GET(broken_line) == SET)){
      //ÓÅÏȸ´ÓÃ
      CV_lose_check_GPIO_Clk_Init();
      Close_Valve_Alarm_Line_GPIO_Clk_Init();
      CV_LOSE_CHECK_ENABLE;
      delay_ms(1);
      if(IO_JitterEliminationCheck(CV_ALM_A_PORT,CV_ALM_A_PIN,1,Bit_SET)==SET){
         if(broken_line_cnt < 250) broken_line_cnt ++  ;
      }else{
         broken_line_cnt = 0 ;
      }
      CV_LOSE_CHECK_DISABLE;
   }else if(__SYS_ALARM_CTL_BYTES_GET(ex_trigger_close_valve) == SET){
      CV_lose_check_GPIO_Clk_Init();
      Close_Valve_Alarm_Line_GPIO_Clk_Init();
      CV_LOSE_CHECK_ENABLE;
      delay_ms(1);
      if(IO_JitterEliminationCheck(CV_ALM_A_PORT,CV_ALM_A_PIN,1,Bit_RESET)==SET){
         if(close_valve_line_cnt < 250) close_valve_line_cnt ++  ;
      }else{
         close_valve_line_cnt = 0 ;
      }
      CV_LOSE_CHECK_DISABLE;
   }else{
      CV_lose_check_GPIO_Clk_Init();
      Close_Valve_Alarm_Line_GPIO_Clk_sleep();
      CV_LOSE_CHECK_DISABLE;
   }
   //Íⲿ´¥·¢¹Ø·§±¨¾¯´¦Àí
   if(close_valve_line_cnt >= ALARM_LINE_CONTINUE_TIMES){
      __SYS_STATUS_ALARM_BYTES_SET(ex_trigger_close_valve);
   }
   //¶ÏÏß±¨¾¯£¬ ÒòΪºÜ¶àÏß¶¼¿ÉÒÔ¸´ÓöÏÏߣ¬ËùÒÔ¶ÏÏß·ÅÔÚ×îºóÅжÏ
   if(broken_line_cnt >= ALARM_LINE_CONTINUE_TIMES){
      __SYS_STATUS_ALARM_BYTES_SET(broken_line);
   }
}