From 66ea95dcb8fd91d29465c2f11ced4dd6153a2504 Mon Sep 17 00:00:00 2001
From: jinlicong <493886250@qq.com>
Date: Wed, 22 May 2024 17:15:02 +0800
Subject: [PATCH] 继续完善远传

---
 Function/FLOW_METER_DATA_COLLECT/pulse_and_alarm_line.c |  105 ++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 88 insertions(+), 17 deletions(-)

diff --git a/Function/FLOW_METER_DATA_COLLECT/pulse_and_alarm_line.c b/Function/FLOW_METER_DATA_COLLECT/pulse_and_alarm_line.c
index 4bd1e85..8676d98 100644
--- a/Function/FLOW_METER_DATA_COLLECT/pulse_and_alarm_line.c
+++ b/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);
+	}
+	
+	
 }
 
 

--
Gitblit v1.9.3