From a05cacad5239ab3f35ffb58f443356b484e6cc1b Mon Sep 17 00:00:00 2001
From: jinlicong <493886250@qq.com>
Date: Tue, 21 May 2024 19:17:22 +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