From fa6053f85287163f6e2d5dba690bec05cbc95f4a Mon Sep 17 00:00:00 2001
From: jinlicong <493886250@qq.com>
Date: Fri, 07 Jun 2024 17:00:49 +0800
Subject: [PATCH] 增加阀控事件记录及修改阀控命令

---
 Soft/sizhu_ctrl_word.c |  146 +++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 129 insertions(+), 17 deletions(-)

diff --git a/Soft/sizhu_ctrl_word.c b/Soft/sizhu_ctrl_word.c
index 9a15174..a05239f 100644
--- a/Soft/sizhu_ctrl_word.c
+++ b/Soft/sizhu_ctrl_word.c
@@ -1,30 +1,92 @@
 #include "sizhu_ctrl_word.h"
 #include "system_run_fun.h"
+#include "valve_control.h"
+#include "system_mem_para.h"
 
 FlagStatus	AlarmTriggerWrcFlag = RESET;
 uint8_t   	AlarmTriggerCLoseValveNum = 0; //�����ط����������������ڴ������л�ȡ����ID���ж�Ӧ�Ĺط�����
 
 SYSTEM_STATUS_WORD_T           system_status_word_g;
 SYSTEM_FUNCTION_CTRL_WORD_T    system_function_ctrl_word_g = {        \
-.fun_ctrl_word.billing_type = 0x02,													\
+	.fun_ctrl_word.billing_type = 0x02,													\
 };
+
 SYSTEM_ALARM_WORD_T            system_alarm_word_g; //�����ϱ����ϱ������
-SYSTEM_ALARM_WORD_T            system_alarm_word_for_valve_g; //���ڷ��أ��ϱ������
-SYSTEM_ALARM_CTRL_WORD_T       system_alarm_ctrl_word_g;
-SYSTEM_ALARM_REPORT_CTRL_WORD_T     system_alarm_report_ctrl_word_g;
-VALVE_CTL_BYTES_UNION_T valve_ctl_bytes_g = {.valve_ctrl_bytes = {
-{0},
-{0},
-{0},
-{1,0,1,1,1,1,0,0,0,0,0,0,0,0},
-{0,0,0,1,1},
-{0},
-{0},
-{0},
-{0},
-{0},
-{0},}
+
+SYSTEM_ALARM_WORD_T            system_alarm_word_for_valve_g;  //���ڷ��أ��ж��귧��֮������
+
+
+SYSTEM_ALARM_CTRL_WORD_T       system_alarm_ctrl_word_g= {.alarm_ctl_word={
+		.system_start = 1,
+		.power_state = 1,
+		.valve_error = 1,
+		.valve_state_change = 1,
+		.set_cumulate_up_to = 1,
+		.no_use_gas_date_up_to = 1,
+		.no_gprs_date_up_to = 1,
+		.balance_small_3 = 1,
+		.lith_low = 1,
+		.lith_down  = 1,
+		.lith_remove = 1,
+		.alka_low = 1,
+		.alka_down = 1,
+		.alka_remove = 1,
+		.gprs_status = 1,  //Զ��ʧ��ֻ���������ϱ�
+		.RS485_err = 1,
+		.RS485_lessen = 1, 
+		.broken_line = 1, 
+		.temp_err = 1,
+		.cpu_temp_up = 1,
+		.cpu_temp_down = 1,
+		.press_err = 1,
+		.lcd_up = 1,
+		.cl_have_flow = 1,
+	}
 };
+SYSTEM_ALARM_CTRL_WORD_T     system_alarm_report_ctrl_word_g= {.alarm_ctl_word={
+	.system_start = 1,
+	.power_state = 1,
+	.valve_error = 1,
+	.valve_state_change = 1,
+	.set_cumulate_up_to = 1,
+	.no_use_gas_date_up_to = 1,
+	.no_gprs_date_up_to = 1,
+	.balance_small_3 = 1,
+	.lith_low = 1,
+	.lith_down  = 1,
+	.lith_remove = 1,
+	.alka_low = 1,
+	.alka_down = 1,
+	.alka_remove = 1,
+	//.gprs_status = 1,  //Զ��ʧ��ֻ���������ϱ�
+	.RS485_err = 1,
+	.RS485_lessen = 1, 
+	.broken_line = 1, 
+	.temp_err = 1,
+	.cpu_temp_up = 1,
+	.cpu_temp_down = 1,
+	.press_err = 1,
+	.lcd_up = 1,
+	.cl_have_flow = 1,
+	}
+};
+
+
+VALVE_CTL_BYTES_UNION_T valve_ctl_bytes_g = {.valve_ctrl_bytes = {                
+	{0},
+	{0},
+	{0},
+	{.lith_down_need_close_valve_flag =1,.lith_down_close_valve_type = 1,.lith_remove_need_close_valve_flag =1,.lith_remove_close_valve_type =1,   
+	//.alka_down_need_close_valve_flag= 1,.alka_down_close_valve_type = 1,.alka_remove_need_close_valve_flag =1,.alka_remove_close_valve_type =1,    
+	},
+	{0},
+	{0},
+	{0},
+	{0},
+	{0},
+	{0},
+	{0},}
+};  
 
 
 #define	alarm_ctrl_para_array_g_NUM	(sizeof(alarm_ctrl_para_array_g) /sizeof(ALARM_CTRL_PARA_T)	)
@@ -125,6 +187,11 @@
 			}
 			break;
 		}
+		
+		if(count_i > 200) //��ʱ��û��200������
+		{
+			break;
+		}
 	}
 	return RESET;
 }
@@ -161,15 +228,60 @@
 //��¼���ϴιط�ԭ����Ҫ�����ȼ����ǻ��ƣ� ǿ���Թط����Ƿ�ǿ���Թط��� �������ɵ�ǿ���Թط����������ɵġ�
 void SysAlarmCtrlPro(void)
 {
+	uint16_t count_i;
+	uint16_t	close_valve_ID;
+	uint8_t  close_valve_flag;
+	
 	EveryDayClearAlarmCnt(sys_clockBCD_g); //ÿ�������������
 	
 	/*���������ϱ�*/
 	if(AlarmTriggerWrcFlag ==SET){
 		AlarmTriggerWrcFlag = RESET;
-		start_wrc_g = WRC_MEANS_ALARM;//���ڱ���  
+//		start_wrc_g = WRC_MEANS_ALARM;//���ڱ���  ������ע��
 	}
 
 	/*������������*/
+	for(count_i = 0;count_i <alarm_ctrl_para_array_g_NUM;count_i++ ){
+		if(((system_alarm_word_for_valve_g.alarm_word_union[alarm_ctrl_para_array_g[count_i].alarm_word_offset_bit >>4 ] >>(alarm_ctrl_para_array_g[count_i].alarm_word_offset_bit & 0x0f)) & 0x01) == 0x01){
+			close_valve_flag = valve_ctl_bytes_g.valve_ctrl_bytes_union [alarm_ctrl_para_array_g[count_i].close_valve_word_offset_bit >>4 ]>>(alarm_ctrl_para_array_g[count_i].close_valve_word_offset_bit & 0x0f);
+			close_valve_flag = close_valve_flag & 0x03;
+			if(close_valve_flag == VALVE_CTRL_FLAG_LOCK_AND_CLSOSE){
+				//��������������ɣ�����ִ����Ҫһ��ʱ��
+				ValveCtrlOrder(VC_CLOSE_AND_LOCK,VALVE_CTRL_SOURCE_AUTO);
+				
+				
+				//����ط�ԭ��ID������Ѿ���ǿ���Թط�������Ҫ�ж����ȼ����������Ա����ǣ����಻�ܱ����ǣ������ж��Ƿ����������ɵģ��������ɵ��ڳ�ֵ֮�����ֱ�ӿ���
+				if((save_valve_para_g.valve_close_ID & 0x8000)==0x8000){
+					close_valve_ID = save_valve_para_g.valve_close_ID & ~0x8000;
+					if((close_valve_ID ==ALARM_ID_BALANCE_SMALLER1)&&(close_valve_ID ==ALARM_ID_BALANCE_SMALLER2)&&(close_valve_ID ==ALARM_ID_BALANCE_SMALLER3)&&(close_valve_ID ==ALARM_ID_BALANCE_SMALLER4)&&(close_valve_ID ==ALARM_ID_BALANCE_SMALLER5)){
+						save_valve_para_g.valve_close_ID = alarm_ctrl_para_array_g[count_i].alarm_id | 0x8000 ; //�ط�ԭ��ID��ͬ�ڱ���ID��
+					}
+				}else{
+					save_valve_para_g.valve_close_ID = alarm_ctrl_para_array_g[count_i].alarm_id | 0x8000; //�ط�ԭ��ID��ͬ�ڱ���ID��
+				}
+				
+			}else if(close_valve_flag == VALVE_CTRL_FLAG_ONLY_CLSOSE){
+				ValveCtrlOrder(VC_CLOSE,VALVE_CTRL_SOURCE_AUTO);
+				//����ط�ԭ��ID������Ѿ���ǿ���Թط������ٸ���
+				if((save_valve_para_g.valve_close_ID & 0x8000)==0x8000){
+
+				}else{
+					save_valve_para_g.valve_close_ID = alarm_ctrl_para_array_g[count_i].alarm_id ; //�ط�ԭ��ID��ͬ�ڱ���ID��
+				}
+				
+			}else{}
+			
+		}
+		
+		if(count_i > 200) //��ʱ��û��200������
+		{
+			break;
+		}
+	}
+	//���ڹط��ı���������
+	for(count_i = 0;count_i <(SYSTEM_ALARM_WORD_INF_LENGTH >> 1);count_i++ ){
+		system_alarm_word_for_valve_g.alarm_word_union[count_i] = 0;
+	}
 	
 	
 	

--
Gitblit v1.9.3