forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-31 08b3909c40a192778719c6262bbee4745682948d
Function/FLOW_METER_DATA_COLLECT/pulse_and_alarm_line.c
@@ -3,6 +3,7 @@
#include "gpio.h"
#include "sizhu_ctrl_word.h"
#include "tim.h"
#include "linked_list.h"
__IO   int16_t pulse_count =0;  //Âö³å¼ÆÊý£¬À´Ò»¸öÂö³å+1,×îÖÕ½áËãµ½ÀÛ»ýÁ¿ÖÐ,½áËãÖ®ºóÇåÁã
__IO FlagStatus pulse_exti_flag = RESET;
@@ -239,13 +240,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 +283,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 +304,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 +312,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 +330,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 +345,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 +357,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,ALARM_ID_FLOW_BAT_DOWN);
   }
   
   
@@ -353,7 +374,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 +389,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 +403,61 @@
      LV_LOSE_CHECK_DISABLE;
   }
   
   //µÍµç±¨¾¯´¦Àí
   if(low_pwr_line_cnt >= ALARM_LINE_CONTINUE_TIMES){
      __SYS_STATUS_ALARM_BYTES_SET(flow_meter_low_pwr,ALARM_ID_FLOW_BAT_LOW);
   }
   /*¹Ø·§±¨¾¯Ïß*/
   //ÒòΪÐèÒª´¥·¢¹Ø·§£¬³õʼ¿ÉÒÔ²»ÓÃÅжϣ¬ÔÚÖ÷Ñ­»·ÀïÃæ´¦Àí
   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,ALARM_ID_EX_TRIGGER_CLOSE_VALVE);
   }
   //¶ÏÏß±¨¾¯£¬ ÒòΪºÜ¶àÏß¶¼¿ÉÒÔ¸´ÓöÏÏߣ¬ËùÒÔ¶ÏÏß·ÅÔÚ×îºóÅжÏ
   if(broken_line_cnt >= ALARM_LINE_CONTINUE_TIMES){
      __SYS_STATUS_ALARM_BYTES_SET(broken_line,ALARM_ID_BROKEN_LINE);
   }
}