From 5ac1d0febb8de5e91ce2463baea68ddac3f66091 Mon Sep 17 00:00:00 2001
From: jinlicong <493886250@qq.com>
Date: Thu, 16 May 2024 20:00:17 +0800
Subject: [PATCH] 完善脉冲计费和485采集处理
---
Function/FLOW_METER_DATA_COLLECT/pulse_and_alarm_line.c | 104 +++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 87 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..a9215e3 100644
--- a/Function/FLOW_METER_DATA_COLLECT/pulse_and_alarm_line.c
+++ b/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);
+ }
+
+
}
--
Gitblit v1.9.3