From 08b3909c40a192778719c6262bbee4745682948d Mon Sep 17 00:00:00 2001
From: jinlicong <493886250@qq.com>
Date: Fri, 31 May 2024 19:15:47 +0800
Subject: [PATCH] 测试和修改了一些功能bug

---
 Soft/sizhu_ctrl_word.h |  137 +++++++++++++++++++++++++++++++++++----------
 1 files changed, 106 insertions(+), 31 deletions(-)

diff --git a/Soft/sizhu_ctrl_word.h b/Soft/sizhu_ctrl_word.h
index 7d2110c..26219e4 100644
--- a/Soft/sizhu_ctrl_word.h
+++ b/Soft/sizhu_ctrl_word.h
@@ -1,11 +1,12 @@
 #ifndef _SIZHU_CTRL_WORD_H
 #define _SIZHU_CTRL_WORD_H
 #include "define_all.h"
-
+#include "extern_rtc.h"
 
 #define __SYS_STATUS_BYTES_GET(__HANDLE__) (system_status_word_g.status_word.__HANDLE__)
 
 
+//����״̬��λ�ʺϵ�bit״̬��λ�����ʺ϶�bit״̬�����緧��״̬ռ���bit��������
 #define __SYS_STATUS_BYTES_STATUS(__HANDLE__, __FLAG__, __ID__)      \
   do                                                                 \
   {                                                                  \
@@ -14,19 +15,43 @@
       (system_status_word_g.status_word.__HANDLE__ = __FLAG__);      \
 			if(__FLAG__ == RESET)																				   \
 				Alarm_List_Node_Deleted(&pList_head,__ID__);									\
+			else if(__FLAG__ == SET)																				\
+				Alarm_List_Node_PushBack(&pList_head,__ID__);									\
     }                                                                \
   } while (0)
 
 
-#define __SYS_ALARM_BYTES_SET(__HANDLE__, __FLAG__) (system_alarm_word_g.alarm_word.__HANDLE__ = __FLAG__)
-
-
-#define __SYS_STATUS_ALARM_BYTES_SET(__HANDLE__)                  \
+//û�ж�Ӧ״̬�ֵı����ֵ�����λ
+#define __SYS_ALARM_BYTES_SET(__HANDLE__,__ID__) 									\
   do                                                              \
   {                                                               \
-    if (__SYS_STATUS_BYTES_GET(__HANDLE__) != SET)                \
-      system_status_word_g.status_word.__HANDLE__ =               \
-          system_alarm_word_g.alarm_word.__HANDLE__ = SET;        \
+    if(__SYS_ALARM_CTL_BYTES_GET(__HANDLE__)){                \
+			system_alarm_word_for_valve_g.alarm_word.__HANDLE__ = SET;      \
+			if(__SYS_ALARM_REPORT_CTL_BYTES_GET(__HANDLE__) ==SET){ 				\
+				if(AlarmCntIncrease(__ID__) ==SET){														\
+					system_alarm_word_g.alarm_word.__HANDLE__ = SET;						\
+					AlarmTriggerWrcFlag = SET;																	\
+				}																														\
+			}          																										\
+			Alarm_List_Node_PushBack(&pList_head,__ID__);									\
+		}																															\
+  } while (0)
+
+//״̬�ֺͱ�����ͬʱ��λ����ֻ�ʺϵ�bit״̬��λ�����ʺ϶�bit״̬�����緧��״̬ռ���bit�������á�������Щ����û�ж�Ӧ״̬�ֵģ����縴λ�������޸ĵȱ�������Ҳ�����ã���Ҫ��������
+#define __SYS_STATUS_ALARM_BYTES_SET(__HANDLE__,__ID__)                  \
+  do                                                              \
+  {                                                               \
+    if ((__SYS_STATUS_BYTES_GET(__HANDLE__) != SET)&&(__SYS_ALARM_CTL_BYTES_GET(__HANDLE__))){                \
+      system_status_word_g.status_word.__HANDLE__  = SET;									\
+			system_alarm_word_for_valve_g.alarm_word.__HANDLE__ = SET;      \
+			if(__SYS_ALARM_REPORT_CTL_BYTES_GET(__HANDLE__) ==SET){ 				\
+				if(AlarmCntIncrease(__ID__) ==SET){														\
+					system_alarm_word_g.alarm_word.__HANDLE__ = SET;						\
+					AlarmTriggerWrcFlag = SET;																	\
+				}																														\
+			}          																										\
+			Alarm_List_Node_PushBack(&pList_head,__ID__);									\
+		}																															\
   } while (0)
 	
 
@@ -34,7 +59,7 @@
 	
 #define __SYS_ALARM_CTL_BYTES_GET(__HANDLE__)	(system_alarm_ctrl_word_g.alarm_ctl_word.__HANDLE__)	
 	
-#define __SYS_ALARM_REPORT_CTL_BYTES_GET(__HANDLE__)	(system_alarm_report_ctrl_word_g.alarm_report_ctrl_word.__HANDLE__)	
+#define __SYS_ALARM_REPORT_CTL_BYTES_GET(__HANDLE__)	(system_alarm_report_ctrl_word_g.alarm_ctl_word.__HANDLE__)	
 	
 
 #define   SYSTEM_SINGLE_BIT_SET1                     0x0001
@@ -111,6 +136,7 @@
 	ALARM_ID_VALVE_BAT_LOW,
 	ALARM_ID_VALVE_BAT_DOWN,
 	ALARM_ID_RTC_BAT_LOW,
+	
 
   ALARM_ID_TEM_TRANSMITTER_FAILURE = 0x20, // �¶��쳣����/�ط�
   ALARM_ID_TEM_EXCEED_UP_LIMIT,
@@ -154,11 +180,12 @@
 	
 	ALARM_ID_FLOW_BAT_LOW = 0x80,//�Խ��豸�͵�
 	ALARM_ID_FLOW_BAT_DOWN,//�Խ��豸����
-	ALARM_ID_PULSE_BROKEN,//�����߶���
+	ALARM_ID_BROKEN_LINE,//���߱���
 	ALARM_ID_E2P_W_ABNORMAL,//eepromд�쳣
 	ALARM_ID_E2P_R_ABNORMAL,//eeprom���쳣
 	ALARM_ID_READ_485_ABNORMAL,//��485�쳣
 	ALARM_ID_485_READING_SMALLER_ABNORMAL,//485�����쳣��С
+	ALARM_ID_EX_TRIGGER_CLOSE_VALVE, //�ⲿ�����ط�
 	
 	ALARM_ID_BALANCE_SMALLER1 = 0x90,//����ٶ�
   ALARM_ID_BALANCE_SMALLER2, // ����ٶ�1����/�ط�
@@ -176,14 +203,14 @@
 } SYS_ALARM_VALVE_T; // �����͹ط�����ID
 
 #pragma pack(1)
-/*********************************ϵͳ״̬�����**************************************/
+/*********************************ϵͳ״̬����أ�״̬������ж�Ӧ�����֣���������Ҫһ��**************************************/
 typedef struct system_status_word_inf 
 {
   uint16_t lcd_mode : 3;
   uint16_t  : 1;
   uint16_t account_state : 1;
   uint16_t flow_direction : 1;
-  uint16_t  : 2;
+  uint16_t work_mode :2;
   uint16_t : 1; // Ԥ��
   uint16_t power_state : 1;
   uint16_t : 1;
@@ -214,12 +241,13 @@
   uint16_t flow_meter_low_pwr: 1;
 	uint16_t flow_meter_under_pwr: 1;
   uint16_t gprs_status : 1;
-  uint16_t RS485_status : 2;
+  uint16_t RS485_err : 1;				//RS485�쳣
+	uint16_t RS485_lessen : 1;  //RS485������С
 	uint16_t broken_line : 1;
   uint16_t valve_bat_low: 1;
   uint16_t valve_bat_down: 1;
 	uint16_t rtc_err: 1;
-  uint16_t : 1;
+  uint16_t ex_trigger_close_valve :1;
 
   uint16_t temp_err : 1;
   uint16_t temp_up : 1;
@@ -307,11 +335,11 @@
 	uint16_t calibration_mode: 1;
 	uint16_t account_open: 1;
 	uint16_t  : 2;
-	uint16_t show_balance : 1;
-	uint16_t show_price: 1;
-	uint16_t show_logo : 1;
+	uint16_t no_show_balance : 1;
+	uint16_t no_show_price: 1;
+	uint16_t no_show_logo : 1;
 	uint16_t : 3;
-	uint16_t billing_mode: 2;	
+	uint16_t billing_type: 2;	
 	
 	uint16_t : 16;
 }SYSTEM_FUN_CTRL_WORD_T;
@@ -325,7 +353,7 @@
 /*********************************���ܿ��������**************************************/
 
 
-/*********************************�������������**************************************/
+/*********************************������������أ�״̬������ж�Ӧ�����֣���������Ҫһ��**************************************/
 typedef struct
 {
   uint16_t : 4; // Ԥ��
@@ -367,7 +395,7 @@
 	uint16_t valve_bat_low:1;
 	uint16_t valve_bat_down:1;
 	uint16_t rtc_err: 1;
-  uint16_t : 1;
+  uint16_t ex_trigger_close_valve :1;
 
   uint16_t temp_err : 1;
   uint16_t temp_up : 1;
@@ -439,15 +467,21 @@
   SYS_ALARM_T alarm_ctl_word;
 }SYSTEM_ALARM_CTRL_WORD_T; // ����������
 
-typedef union
-{
-  uint16_t alarm_ctl_send_union[SYSTEM_ALARM_WORD_INF_LENGTH >> 1];
-  SYS_ALARM_T alarm_report_ctrl_word;
-} SYSTEM_ALARM_REPORT_CTRL_WORD_T; // �����ϱ�����
+//typedef union
+//{
+//  uint16_t alarm_ctl_send_union[SYSTEM_ALARM_WORD_INF_LENGTH >> 1];
+//  SYS_ALARM_T alarm_report_ctrl_word;
+//} SYSTEM_ALARM_REPORT_CTRL_WORD_T; // �����ϱ�����   ��ʽ������������һ�������Բ����ٶ���һ���ṹ����
 /*********************************�������������**************************************/
 
 
 /*********************************�ط����������**************************************/
+//�ط�������2λ��־λ����
+#define		VALVE_CTRL_FLAG_NONE						0x00
+#define		VALVE_CTRL_FLAG_ONLY_CLSOSE			0x01
+#define		VALVE_CTRL_FLAG_LOCK_AND_CLSOSE	0x03
+
+//�ط������ֽṹ�嶨��
 typedef struct
 {
   uint16_t gprs_cmd_need_close_valve_flag : 1; // Զ������
@@ -702,18 +736,59 @@
 } VALVE_CTL_BYTES_T; // �ط�������
 
 // �ط��ֳ���
-#define VALVE_CTL_LENGTH (sizeof(VALVE_STATUS_CHANGE_T) + sizeof(VALVE_BILLING_CHANGE_1_T) + sizeof(VALVE_BILLING_CHANGE_2_T) + \
-                          sizeof(VALVE_VOLTAGE_CHANGE_1_T) + sizeof(VALVE_VOLTAGE_CHANGE_2_T) + sizeof(VALVE_TP_ERR_1_T) +      \
-                          sizeof(VALVE_TP_ERR_2_T) + sizeof(VALVE_MEASURE_ERR_1_T) + sizeof(VALVE_MEASURE_ERR_2_T) +            \
-                          sizeof(VALVE_OTHER_ERR_1_T) + sizeof(VALVE_OTHER_ERR_2_T))
 #define VALVE_CTL_LEN sizeof(VALVE_CTL_BYTES_T)
+//#define VALVE_CTL_LENGTH (sizeof(VALVE_STATUS_CHANGE_T) + sizeof(VALVE_BILLING_CHANGE_1_T) + sizeof(VALVE_BILLING_CHANGE_2_T) + \
+//                          sizeof(VALVE_VOLTAGE_CHANGE_1_T) + sizeof(VALVE_VOLTAGE_CHANGE_2_T) + sizeof(VALVE_TP_ERR_1_T) +      \
+//                          sizeof(VALVE_TP_ERR_2_T) + sizeof(VALVE_MEASURE_ERR_1_T) + sizeof(VALVE_MEASURE_ERR_2_T) +            \
+//                          sizeof(VALVE_OTHER_ERR_1_T) + sizeof(VALVE_OTHER_ERR_2_T))
+
+typedef union
+{
+	uint16_t valve_ctrl_bytes_union[VALVE_CTL_LEN >> 1];
+	VALVE_CTL_BYTES_T 	valve_ctrl_bytes;
+}VALVE_CTL_BYTES_UNION_T;
+
 	
+
+
+
+//�����������ƽṹ��
+#define	DAY_ALARM_TIMES	3
+typedef struct
+{
+	SYS_ALARM_VALVE_T	alarm_id;
+	uint16_t	alarm_word_offset_bit;  //��Ӧ�����ֵ�ƫ����
+	uint16_t	close_valve_word_offset_bit; //��Ӧ�ط��ֵ�ƫ����
+	uint8_t day_times;  //ÿ���ϱ�����
+	uint16_t	day_cnt;
+} ALARM_CTRL_PARA_T; // �ط�������
+
+
+
+
+
+
+
+
+
+
+
 #pragma pack()
+
+extern	FlagStatus	AlarmTriggerWrcFlag;
 
 extern SYSTEM_STATUS_WORD_T           system_status_word_g;
 extern SYSTEM_FUNCTION_CTRL_WORD_T    system_function_ctrl_word_g;
 extern SYSTEM_ALARM_WORD_T            system_alarm_word_g;
+extern	SYSTEM_ALARM_WORD_T            system_alarm_word_for_valve_g; //���ڷ��أ��ж��귧��֮������
 extern SYSTEM_ALARM_CTRL_WORD_T       system_alarm_ctrl_word_g;
-extern SYSTEM_ALARM_REPORT_CTRL_WORD_T     system_alarm_report_ctrl_word_g;
-extern VALVE_CTL_BYTES_T valve_ctl_bytes_g;
+extern SYSTEM_ALARM_CTRL_WORD_T     system_alarm_report_ctrl_word_g;
+extern VALVE_CTL_BYTES_UNION_T valve_ctl_bytes_g;
+
+
+
+FlagStatus	AlarmCntIncrease(SYS_ALARM_VALVE_T alarm_id);
+void	AlarmCntClearAll(void);
+void	EveryDayClearAlarmCnt(const sClockBCD sys_clockBCD_in );
+void SysAlarmCtrlPro(void);
 #endif

--
Gitblit v1.9.3