From a1810b89e66f184c62a0588ae7d57c91d0c376e8 Mon Sep 17 00:00:00 2001
From: jinlicong <493886250@qq.com>
Date: Thu, 30 May 2024 20:06:09 +0800
Subject: [PATCH] 继续测试修改

---
 Soft/sizhu_ctrl_word.c |   58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 57 insertions(+), 1 deletions(-)

diff --git a/Soft/sizhu_ctrl_word.c b/Soft/sizhu_ctrl_word.c
index 9a15174..2b380dc 100644
--- a/Soft/sizhu_ctrl_word.c
+++ b/Soft/sizhu_ctrl_word.c
@@ -1,5 +1,7 @@
 #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���ж�Ӧ�Ĺط�����
@@ -9,7 +11,7 @@
 .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_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 = {
@@ -125,6 +127,11 @@
 			}
 			break;
 		}
+		
+		if(count_i > 200) //��ʱ��û��200������
+		{
+			break;
+		}
 	}
 	return RESET;
 }
@@ -161,6 +168,10 @@
 //��¼���ϴιط�ԭ����Ҫ�����ȼ����ǻ��ƣ� ǿ���Թط����Ƿ�ǿ���Թط��� �������ɵ�ǿ���Թط����������ɵġ�
 void SysAlarmCtrlPro(void)
 {
+	uint16_t count_i;
+	uint16_t	close_valve_ID;
+	uint8_t  close_valve_flag;
+	
 	EveryDayClearAlarmCnt(sys_clockBCD_g); //ÿ�������������
 	
 	/*���������ϱ�*/
@@ -170,6 +181,51 @@
 	}
 
 	/*������������*/
+	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){
+				//��������������ɣ�����ִ����Ҫһ��ʱ��
+				if(save_valve_para_g.valve_lock_state != VL_UNLOCK){
+					ValveCtrlOrder(VC_LOCK);
+					//?�洢
+				}
+				system_status_word_g.status_word.valve_lock = (save_valve_para_g.valve_lock_state == VL_LOCK)?1:0;
+				ValveCtrlOrder(VC_CLOSE);
+				
+				//����ط�ԭ��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);
+				//����ط�ԭ��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